Куки, кеш і сесія браузера – з цими поняттями обов'язково зіткнеться будь-який тестувальник, який працює з веб-додатками. Найчастіше, питань, пов'язаних з цими поняттями, виникає дуже багато. Для того, щоб розібратися у всіх тонкощах та мати загальне уявлення про те, що таке cookies, кеш і сесія браузера, потрібно визначитися з термінологією, сферою застосування цих даних і навчитися користуватися ними, в залежності від браузеру, що використовується.
Поняття куки, кеш, сесія в браузері
- 18.03.2023
- Опубліковано: Admin
Кеш
Ні для кого не секрет, що для якісної роботи в інтернеті необхідно, щоб сайти завантажувалися швидко. Зайва секунда очікування завантаження веб-сторінки може стати вирішальною і змусити користувача покинути сайт, не дочекавшись завершення. Зрозуміло, в інтересах веб-майстрів не допустити цього.
Складність полягає в тому, що при кожному оновленні сторінки веб-сервер передає клієнту (браузеру) значний обсяг даних. Це ніяк не сприяє швидкій роботі сайту. Кеш браузера (browser cache) має вирішити цю проблему і оптимізувати роботу веб-додатку.
Грубо кажучи, інтернет-з'єднання повільніше, ніж робота вашого ПК. Завдяки кешуванню даних, браузер зберігає частину інформації локально на комп'ютері користувача. Тепер немає необхідності в повторному завантаженні однієї і тієї ж інформації, потрібні дані просто завантажуються з пам'яті персонального комп'ютера без використання інтернету. Звісно ж, завантаження сторінки в такому випадку здійснюється набагато швидше.
Що зазвичай зберігається в кеші? Як правило, веб-сторінки одного сайту об'єднує загальний дизайн. Отже, існують веб-елементи, які повторюються на різних сторінках, наприклад, логотип сайту. Щоб не передавати одне і те ж зображення при кожному переході, логотип може бути локально збережений в кеші і при оновленні сторінки він буде завантажений з жорсткого диска користувача, а не з сервера. Крім зображень кешуватися може звук, відео, текст і т. ін.
Кеш браузера має обмежений розмір. Ця величина може налаштовуватись. Коли розмір кешу досягає граничного значення, ті його частини, які не використовувалися найдовше, видаляються і звільняють місце новим елементам.
Куки
Куки (cookies) – це певний обсяг даних, який створюється веб-сервером після відвідування користувачем веб-сторінки і зберігається на комп'ютері користувача у вигляді окремого текстового файлу.
Як правило, cookies містять ідентифікаційні дані, інформацію про користувача, про параметри і налаштуваннях, обраних під час роботи з веб-сторінкою, та іншу службову інформацію.
Якщо браузер підтримує cookies, то цей обсяг даних передається від клієнта на сервер при кожному запиті. Для чого сайту ця інформація? Вона використовується, як правило, для:
- аутентифікації користувача (інакше довелося б вводити логін і пароль при кожному запиті);
- персоналізації – застосування обраних користувачем параметрів при подальших запитах (наприклад, мова сайту або товари в кошику);
- збору і аналізу статистики;
- відстеження сесії (поняття «сесія» розглянемо докладніше далі).
У технічному сенсі cookies – це невеликі за обсягом текстові файли. Максимально допустимий розмір одного такого файлу - 4096 байт. Що можна побачити в файлі куки:
- ім'я cookie;
- значення – те, що передається серверу і обробляється при запиті;
- домен, якому належить cookie, і, відповідно, який може його отримувати;
- шлях – URL в межах зазначеного домену, для якого конкретний cookie буде дійсним;
- час життя. Cookies можуть зберігатися обмежений час, це час налаштовується для кожного конкретного куки. Це може бути конкретний час і дата або ж значення session, якщо куки існує до завершення поточної сесії;
- HTTP. Це значення присвоюється в разі, якщо cookie буде використовуватися тільки HTTP;
- безпеку. Цей параметр має на увазі, що даний cookie буде передаватися тільки за допомогою захищеного HTTPS-з'єднання;
- розмір файлів куки в байтах.
Сесія
Особливість веб-серверу полягає в тому, що він не здатний розпізнати, чи надходять запити від одного і того ж браузера, або від різних, оскільки HTTP протокол не дозволяє відстежувати ці стани і підтримувати постійний зв'язок з клієнтом. Кожен новий запит обробляється окремо, без прив'язки до попередніх. Впоратись з цією проблемою допомагає сесія браузера (сеанс) – механізм, який дозволяє відстежити запити від одного браузера і зберегти деякі змінні під час переходів по сторінках сайту.
З початком сесії на стороні сервера створюється файл, який містить інформацію про користувача, про його дії і події, які відбулися в рамках одного сеансу. Такими подіями можуть бути перегляд сторінок сайту, різні взаємодії користувача з елементами сторінки, вчинення транзакцій і т. ін.
До тих пір, поки попередня сесія активна, нова не може бути розпочатою. Старий сеанс може завершитися при дотриманні однієї з умов (в залежності від налаштувань):
- після закінчення певного часу бездіяльності (таймаут);
- в певний час доби (опівночі, наприклад);
- при закритті браузера.
Тепер, коли поняття кеш, куки, сесія браузера і відмінності між ними розглянуті, прийшов час навчитися ними користуватися. Як правило, користувачеві досить вміти очистити кеш браузера, увімкнути/вимкнути/видалити/змінити куки, а також знайти ці файли на своєму комп'ютері.
Почнемо з кешу. Тут важливо враховувати те, в якому браузері працює користувач. Не варто забувати, що кеш одного і того ж веб-додатку різні браузери зберігають в різних папках директорії C:\Users\Admin\AppData\Local\. Якщо не виходить знайти таку системну папку на своєму ПК, необхідно увімкнути в налаштуваннях відображення прихованих файлів. Кожен з браузерів створює в даній директорії свою папку, куди і зберігає файли кеша. Далі будуть розглядатися найпопулярніші браузери:
- Google Chrome
C:\Users\Admin\AppData\Local\Google\Chrome\User Data\Default\Cache
C:\Users\Admin\AppData\Local\Google\Chrome\User Data\Profile 1\Cache
- Internet Explorer
C:\Users\Admin\AppData\Local\Microsoft\Windows\INetCache\
C:\Users\Admin\AppData\Local\Microsoft\Windows\Temporary Internet Files\
- Mozilla Firefox
C:\Users\Admin\AppData\Local\Mozilla\Firefox\Profiles\zxcvb5678.default\cache2\entries
- Opera
C:\Users\Admin\AppData\Local\Opera Software\Opera Stable\Cache
- Safari
~/Library/Caches/com.apple.Safari/
Очистити кеш, куки і всі дані про сайті можна прямо в браузері. Для цього передбачена спеціальна опція в налаштуваннях. Розглянемо ті ж популярні браузери і знайдемо як в них очистити кеш:
- Google Chrome
Налаштування – Конфіденційність і безпека – Очистити історію – Історія браузера – Видалити дані
- Internet Explorer
Налаштування – Безпека– Видалити журнал браузера – Обрати тимчасові файли і cookie – Видалити
- Mozilla Firefox
Налаштування – Приватність і захист – Куки і дані сайтів – Видалити дані – Видалити
- Opera
Налаштування – Додатково – Конфіденційність і безпека
– Очистити історію відвідувань – Видалити дані
- Safari
Розробка – Очистити кеші (має бути включено меню розробника в налаштуваннях програми )
Щоб не загубитися в налаштуваннях браузера, можна використовувати гарячі клавіші: Ctrl + Shift + Del для більшості браузерів і (Option) + ⌘ (Command) + E для Safari на Mac.
Щоб знайти cookies в Chrome, потрібно виконати таку послідовність кроків:
Меню браузера (три крапки в верхньому правому куті) – Налаштування – Додаткові – Налаштування сайту – Файли cookie
Таким чином відкриється меню управління файлами cookie. Які параметри можна налаштувати:
- увімкнути/вимкнути збереження cookie за допомогою слайдера;
- налаштувати видалення cookie після закриття браузера;
- блокувати cookie;
- увімкнути вищеперелічені опції для певних сайтів (список налаштовується вручну);
- подивитися повний список збережених файлів cookies, шукати потрібні cookie в списку;
- видалити cookie для всіх або деяких сайтів;
- подивитися всю збережену інформацію кожного окремого файлу.
В Internet Explorer 11 ці опції доступні таким шляхом: Меню браузера – Властивості браузера – Вкладка «Конфіденційність» – Сайти/Додатково. У цьому меню є можливість роботи з файлами куки для певних сайтів. Щоб переглянути значення збережених параметрів куки для конкретного сайту, потрібно скористатися засобами розробника (натиснувши F12). На вкладці «Мережа» знаходиться список запитів, а в правому вікні у вкладці «Файли cookie» – інформація про них.
Розробка веб-додатків, часто, здійснюється досить динамічно. На практиці зміни можуть заливатися на сайт кілька разів в день. Що повинен пам'ятати тестувальник, так це те, що перед початком тестування сайту потрібно обов'язково очистити кеш. Якщо забути про цю просту процедуру, може трапитися так, що сторінка буде завантажуватися з кешу, і внесені зміни просто не буде видно. Досвідчений тестувальник завжди дотримується цього правила.
Механізм сесії покликаний ідентифікувати браузер і обробляти запити в рамках однієї сесії, використовуючи змінні з попередніх запитів. Як правило, вся інформація про сесії зберігається на сервері і недоступна на стороні клієнта. Якщо тестувальник знає, коли повинна завершуватися сесія і як повинен вести себе сайт в разі її завершення, він може скласти кілька тестових сценаріїв для перевірки.
Приклад №1
На сайті з надання банківських послуг є обмеження часу бездіяльності 10 хвилин. Після чого сесія примусово завершується і користувач бачить відповідне повідомлення. В цьому випадку тестувальник може перевірити, чи відображається повідомлення через 10 хвилин бездіяльності, чи має користувач доступ до інформації з закритої сесії, чи відбувається переадресація на головну сторінку, чи не оновлюється попередня сесія після закриття поп-ап вікна. Тестування сесії можна проводити, в тому числі, в рамках тестування безпеки.
Приклад №2
На сайті планується зміна дизайну. Було прийнято рішення провести дослідження для того, щоб вибрати варіант, який більше сподобається користувачам. В результаті, коли користувач заходить на сайт, він бачить один з двох варіантів дизайну. Після аналізу його поведінки, тривалості перебування на сайті і за іншими ознаками буде прийнято рішення про остаточний вибір оформлення. Очікується, що до того, як користувач закриє браузер, всі сторінки сайту, які він побачить, будуть оформлені однаково – відповідно до одного з двох дизайнів. В цьому випадку тестувальник повинен перевірити, що в рамках однієї сесії зовнішній вигляд сайту не змінюється. Тут розуміння того, що таке сесія, допомагає в здійсненні A/B тестування.
Для редагування куки можна використовувати спеціальне розширення для браузера Google Chrome під назвою EditThisCookie. Після установки аддона, при переході на сторінку, користувач може відкрити список доступних cookies для цього сайту. Перераховані файли можуть бути видалені або ж відредаговані будь-яким чином. Крім того, є можливість додати куки, імпортувати в форматі JSON або експортувати їх.
Часто для коректної роботи сайту необхідно увімкнути куки. Повідомлення про це повинно бути показано користувачеві при першому переході на сайт. Варіанти перевірок в такому випадку – це робота сайту з увімкненими і з вимкненими файлами куки. Ще одна нетривіальна перевірка – зміна cookies вручну, використовуючи при цьому як валідні дані, так і невалідні, навмисно «ламаючи» куки.
Куки містять авторизаційну та іншу конфіденційну інформацію про користувача. Використовуючи інструменти для редагування цих значень тестувальник може перевірити, чи є можливість отримати доступ до аккаунту іншого користувача, змінивши файли куки. Таке тестування відноситься до тестування безпеки.
Для додавання або редагування cookie можна використовувати засоби розробника браузера. Для цих цілей існує властивість document.cookie. Потім в лапках прописуються пари «ключ = значення». Наприклад, рядок document.cookie = "ABC = DEF".
створить куки з ім'ям ABC і значенням DEF. Таким же чином можна змінити вже існуючі куки, прописавши команду з потрібними значеннями.
Для коректної роботи не завадить додати ще кілька властивостей всередині лапок, розділяючи їх крапкою з комою. наприклад:
- domain (document.cookie="ABC=DEF; domain=test.com" – такий рядок додасть куки з ім'ям ABC, значенням DEF і дійсні числа тільки для домену test.com);
- expires (document.cookie="ABC=DEF; domain=test.com; expires=Thu Jul 09 2020 14:26:51" – тепер заданий і строк життя cookie – до 09.07.2020 14:26:51);
- secure (document.cookie="ABC=DEF; domain=test.com; expires=Thu Jul 09 2020 14:26:51; secure;" – це властивість робить cookie захищеною, дійсної тільки при https з'єднанні);
- path (document.cookie="ABC=DEF; domain=test.com; expires=Thu Jul 09 2020 14:26:51; secure; path=/;" – шлях в cookie буде вказано як «/», тобто значення відправлятиметься будь-який запит, якщо ж шлях обмежити певною безліччю документів, то кука буде відправлена тільки при запиті до одного з них).
І найголовніше – як застосувати ці знання на практиці. На реальних проєктах уміння поводитися з cookies значно полегшує життя тестувальників. Тепер можна розібрати ситуацію, коли використовується редагування куки.
Приклад №3
На сайті є поп-ап, який повинен з'являтися раз в 7 днів. Сайт створює файл cookie для користувача зі значенням "showPopup": false, термін життя якого (а значить і інтервал повторного відображення поп-апа) – тиждень. Після закінчення цього терміну нагадування для користувача показується знову.
Завдання тестувальника перевірити, що через зазначений час юзер побачить поп-ап. Як це протестувати? Звичайно, можна почекати 7 днів і перевірити, але витрачати стільки часу на такий тест нераціонально. Тут можна схитрувати і вручну змінити куки. Наприклад, відредагувати значення ключа «expires» і задати термін дії куки 1 хвилину. Через хвилину cookie стане неактуальною і користувач знову повинен побачити повідомлення.
На перший погляд куки, кеш і сесія браузера можуть здатися чимось заплутаним і незрозумілим. Однак, розібравшись з визначеннями і застосувавши отримані знання на практиці, можна переконатися, що в цьому немає нічого складного.