Тестування веб-сайту або веб-програми (Web application)
Включає в себе:
Documentation Testing;
Functionality Testing;
GUI Testing;
Usability Testing;
Interface Testing;
Database Testing;
Compatibility Testing;
Performance Testing;
Security Testing;
Crowd Testing.
1. Documentation Testing
Погана документація може вплинути на якість продукту. Хороша документація продукту грає вирішальну роль кінцевому продукті. Таким чином, тестування документації відіграє життєво важливу роль у тестуванні програмного забезпечення. Тестування задокументованих артефактів, розроблених до, під час та після тестування продукту, називається тестуванням документації.
Нижче наведені деякі артефакти, що часто використовуються:
Requirement documents;
Test Plan;
Test Cases;
Traceability Matrix (RTM).
Детально про тестування документації написано у видах тестування.
2. Functionality Testing
Функціональне тестування – тестування того, що робить система. Перевірити, що кожна функція програмного забезпечення поводиться так, як зазначено в документі з вимогами. Тестування всіх функцій шляхом надання відповідних вхідних даних, щоб перевірити, чи відповідає фактичний результат очікуваного результату. Воно використовується для перевірки робочих процесів, всіх посилань веб-сторінок, тестування форм, тестування файлів cookie та підключення до бази даних. Зазвичай функціональне тестування включає такі завдання:
Testing UI Workflows : тестуються end to end workflow або бізнес-сценарії. Рекомендується написання тестових сценаріїв або тестових випадків, щоб охопити різні сценарії та встановити критерії проходження;
Тестування гіперпосилань : всі посилання на веб-сайті працюють правильно, і немає посилань, що не працюють. Типи посилань включають внутрішні посилання, вихідні посилання, якірні посилання, схеми mailto і т.д.;
Тестування форм (перевірка полів уведення): форми використовуються для інтерактивного спілкування з кінцевими користувачами. Тестувальник повинен переконатися, що всі форми працюють належним чином. Тестування форм включає:
чи заповнюються значення за замовчуванням;
відображається повідомлення про помилку, коли користувач не заповнює обов'язкове поле;
чи набуває форма неприпустимі значення;
форми оптимально відформатовано для кращої читабельності;
поля AJAX правильно заповнюють значення під час виконання;
чи завантажуються розкривні списки з параметрами.
Перевірка файлів cookie : детально про тестування cookie написано в темі про cookie в мережах;
Перевірка HTML та CSS : Тестувальник повинен перевірити, чи має сайт чисту структуру HTML та оптимізований CSS відповідно до стандартів W3C. Також потрібно переконатись, що пошукові системи можуть легко сканувати сайт.
немає синтаксичних помилок HTML;
колірні схеми читаються;
мапа сайту точна.
Приклади функціональних тест-кейсів:
Кнопки:
Enter має спрацьовувати як submit;
Tab повинен перевести курсор на наступний елемент.
Поля введення:
trimming («прибирання») прогалин у полях введення;
порожнеча/пробіли у полі введення;
всі методи редагування (Insert, Delete, Backspace, Ctrl+C/V/X/Z тощо. буд.);
дроби (1.5/1,5/⅕).
Пошук:
wildcard symbols (*, вертикальний сліш, ?);
написання пошукового запиту разом/роздільно/через дефіс має вести до одного результату;
введення тексту в іншій розкладці.
Повідомлення про помилки:
пробуємо відключити в налаштуваннях браузера.
Календар:
31 червня;
29 лютого + не високосний рік;
минуле/майбутнє (наприклад, купити квиток на минуле число).
Час:
синхронізація із сервером (на сервері програми може бути виставлено інший час, що відрізняється від таймзони користувача);
тимчасові зони.
E-mail:
логін (63 символи) @ домен (253 символи (може бути ip)).
Спливаючі вікна / підказки:
пробуємо закрити різними способами (натискання на кнопку (якщо є), на "хрестик", клавішею ESC, просто натисканням в іншу область екрана);
Рефреш сторінки особливо в момент запиту на сервер (наприклад, здійснення транзакції з покупки) іноді може призводити до появи помилок.
Усі обов'язкові поля мають бути валідовані.
Зірочка повинна відображатись для всіх обов'язкових полів.
Повідомлення про помилку для додаткових полів не відображається.
Числові поля не повинні приймати літери і відображатиметься відповідне повідомлення про помилку.
Перевірте наявність негативних чисел, якщо це дозволено для числових полів.
Тестовий поділ на нуль має бути правильно оброблений.
Перевірте максимальну довжину кожного поля, щоб переконатися, що дані не усікаються.
Текст спливаючого повідомлення («Це поле обмежене 500 символами») має відображатися, якщо дані досягають максимального розміру поля.
Перевірте, чи потрібно відображати підтвердне повідомлення для операцій оновлення та видалення.
Величини мають бути у відповідному форматі.
Перевірте всі поля введення спеціальних символів.
Перевірте функціональність тайм-ауту.
Перевірте функціональність сортування.
Переконайтеся, що FAQ та Політика конфіденційності чітко визначені та доступні для користувачів.
Перевірте, чи все працює і чи не перенаправляється користувач на сторінку помилки.
Усі завантажені документи відкриваються правильно.
Користувач повинен мати можливість завантажити завантажені файли.
Перевірте функціональність електронної пошти системи. Скрипт, що тестується, коректно працює в різних браузерах (IE, Firefox, Chrome, Safari і Opera).
Перевірте, що станеться, якщо користувач вилучить файли cookie, перебуваючи на сайті.
Перевірте, що станеться, якщо користувач вилучить файли cookie після відвідин сайту.
Перевіряє працездатність за наявності розширень браузера, наприклад, блокувальників реклами.
3. GUI
Верстка - розміщення елементів веб-програми (зображення, текст, кнопки, відео...) відповідно до макету або вимог.
Перевіряємо:
наявність всіх елементів;
їх розмір та колір;
розташування відносно один одного.
Поява курсору - досить часто ми забуваємо перевірити, чи взагалі з'являється і як виглядає курсор у полях введення, на клікабельних елементах.
Фавікон - така маленька незначна дрібниця, але може неабияк зіпсувати враження користувача (у моїй практиці були випадки, коли розробники або дизайнери шаблону залишали фавікон з логотипом своєї компанії на сайті у замовника).
Позначення можливості перенесення елементів.
Кодування (UTF8...).
Заголовки по всьому додатку мають бути приведені до одного стандарту.
Title сторінки - про нього ми теж часто забуваємо, як і розробники :)
Back button - досить часто зустрічається помилка при переході на якусь сторінку та натискання на браузерну кнопку Back, попередня сторінка фарбується або повернення на неї зовсім не здійснюється.
Кросбраузерність - одна і та ж сторінка може виглядати по-різному в різних браузерах.
Перевіряємо Scroll.
Браузерні розширення, які можуть впливати на зовнішній вигляд програми (наприклад, AdBlock) – намагаємось увімкнути та вимкнути.
Перевірити контент при відключених (режим WebDeveloper) зображень, flash, JavaScript.
Локалізація – що ми знаємо про це? Зазвичай наші знання зводяться до невиразних «ну це мова», «кодування», «розкладка», ще рідше «геолокація». Що ще ми так часто забуваємо перевіряти у рамках тестування локалізації?
Перевіряємо тестовий зразок на правильність перекладу - тут, звичайно, добре б підключити перекладача або носія мови, але через брак таких, беремо тестовий зразок і перекладаємо через будь-який онлайн-перекладач (ну і всі ми пам'ятаємо, як чудово і весело читати опис товарів російською мовою AliExpress).
Довжина перекладених слів - кількість символів у перекладеному слові може бути набагато більшою, що може призвести до «розповзання» інтерфейсу під час перекладу.
Скорочення / абревіатури - існують правила, за якими їх або переводять, або транслітерують, або залишають як є.
Валюта.
Параметри шрифту можуть також відрізнятися залежно від мови введення.
Перевірити роботу пошуку у всіх локалізаціях - наприклад, на AliExpress результати пошуку одного й того ж слова смартфон дають різний результат за кількістю знайдених товарів, причому різниця обчислюється десятками тисяч.
Мета-інформація (keywords/title/description) - така незначна для користувача, невидима, але така важлива для пошукових машин і просування сайту в гугле та інших пошукових системах.
RTL (right to left languages) - мови зі зворотним написанням (арабська, іврит) мають свої особливості: числа пишуться зліва направо, значки та іконки відображаються, назви програм не перекладаються, немає переносів, кнопки редагування Backspace та Delete працюють навпаки.
4. Usability Testing
Юзабіліті-тестування стало важливою частиною будь-якого веб-проекту. Його можуть провести тестувальники або невелика фокус-група, схожа на цільову аудиторію веб-програми, щоб перевірити, чи є додаток зручним для користувача, і чи було комфортно використовувати його кінцевому користувачеві:
Чи відповідає програма очікуванням кінцевого користувача;
Логічність інтерфейсу;
Найнеобхідніше «згори»;
Продумана навігація;
Локалізація (так, так, вона відноситься і сюди також);
Сумісність з іншим софтом (соцмережі) та залізом;
Швидкість роботи програми;
Інформативність (повідомлення/обов'язкові поля);
Можливість скасування дій користувача;
Help - має бути інструкція, як працювати з програмою;
Можливість друку (якщо потрібно).
Приклади юзабіліті тест-кейсів:
Текст підказки має бути там для кожного поля.
Домашнє посилання має бути на кожній сторінці.
Повідомлення про підтвердження має відображатись для будь-якого виду операції оновлення та видалення.
Смуга прокручування повинна з'являтися лише за необхідності.
Якщо при надсиланні з'являється повідомлення про помилку, інформація, заповнена користувачем, має бути там.
Назва має відображатися на кожній веб-сторінці.
Всі поля (текстове поле, список, перемикач і т. д.) і кнопки повинні бути доступні за допомогою поєднань клавіш, і користувач повинен мати можливість виконувати всі операції за допомогою клавіатури.
5. Interface Testing
Тестування інтерфейсів призначене для перевірки інтерфейсу між веб-сервером і сервером програм, чи правильно взаємодіють сервер програм і сервер баз даних. Це гарантує позитивний користувальницький досвід. Він включає перевірку процесів зв'язку, а також перевірку правильності відображення повідомлень про помилки.
Додаток: тестові запити правильно надсилаються до бази даних, і висновок на стороні клієнта відображається правильно. Помилки, якщо такі є, повинні бути виявлені додатком і повинні відображатись лише адміністратору, а не кінцевому користувачеві;
Веб-сервер: тестовий веб-сервер обробляє всі запити додатків без будь-якої відмови в обслуговуванні;
Сервер бази даних: запити, надіслані до бази даних, дають очікувані результати. Перевірте реакцію системи, коли неможливо встановити з'єднання між трьома рівнями (Додаток, Інтернет та База даних) та відповідне повідомлення відображається кінцевому користувачеві.
6. Database Testing
Тестування баз даних (back-end тестування, тестування даних) включає перевірку цілісності даних на front end із даними на back end. Воно перевіряє схему, таблиці бази даних, стовпці, індекси, процедури, що зберігаються, тригери, дублювання даних, втрачені записи, непотрібні записи. Воно включає оновлення записів у базі даних та їх перевірку на зовнішньому інтерфейсі.
Тестування включатиме:
Відображення помилок під час виконання запитів;
Цілісність даних підтримується під час створення, оновлення чи видалення даних у базі даних;
Тестування продуктивності бази даних;
Тестування процедур, тригерів та функцій.
Приклади тест-кейсів для тестування бази даних:
Перевірте назву бази даних: ім'я бази даних повинно відповідати специфікаціям.
Перевірте таблиці, стовпці, типи стовпців та значення за промовчанням: все повинно відповідати специфікаціям.
Перевірте, чи стовпець допускає null значення.
Перевірте первинний та зовнішній ключ кожної таблиці.
Перевірте, чи встановлена збережена процедура чи ні.
Перевірте ім'я процедури, що зберігається
Перевірте імена параметрів, типи та кількість параметрів.
Перевірте потрібні параметри.
Перевірте процедуру, що зберігається, видаливши деякі параметри
Перевірте, коли вихід дорівнює нулю, це має впливати на нульові записи.
Перевірте процедуру, що зберігається, написавши прості запити SQL.
Перевірте, чи повертається збережена процедура значення
Перевірте процедуру, що зберігається, зі зразками вхідних даних.
Перевірте поведінку кожного прапора у таблиці.
Переконайтеся, що дані правильно зберігаються в базі даних після кожного надсилання сторінки.
Перевірте дані, якщо виконуються операції DML (Оновити, видалити та вставити).
Перевірте довжину кожного поля: довжина поля на Frontend та backend має бути однаковою.
Перевірте імена баз даних QA, UAT та production. Імена мають бути унікальними.
Перевірте зашифровані дані у базі даних.
Перевірте розмір бази даних.
Також перевірте час відповіді кожного запиту.
Перевірте дані, що відображаються на Frontend, та переконайтеся, що вони збігаються з backend.
Перевірте достовірність даних, вставивши неправильні дані до бази даних.
Перевірте тригери.
7. Compatibility Testing
Тестування сумісності призначене для перевірки сумісності програми в різних браузерах та різних пристроях.
Тестування сумісності браузера: крос-браузерне тестування - це тип нефункціонального тесту, який допомагає нам переконатися, що наш веб-сайт або програма працюють належним чином у різних веб-браузерах. Під час тестування веб-сайту нам необхідно переконатися, що він відображається однаково у всіх браузерах. Нам потрібно надати однаковий досвід для користувачів, незалежно від того, який тип операційної системи та який браузер вони використовують. Не всі використовують одне й те саме середовище. Незважаючи на те, що Google Chrome є найпопулярнішим на поточному ринку, все ж таки безліч користувачів використовують Mozilla Firefox, Safari та інші. Якщо веб-сайт не працює належним чином у конкретному браузері, це погіршує взаємодію користувача. Потрібно перевірити, чи правильно відображається ваш веб-додаток у браузерах, чи працює JavaScript, AJAX та автентифікація. Ви також можете перевірити рендеринг веб-елементів, таких як кнопки, текстові поля тощо.
Тестування сумісності пристроїв: цей тест підтверджує, що веб-додаток responsive і працює на пристроях різного розміру та з різними операційними системами.
Приклади тестів на сумісність:
Протестуйте сайт у різних браузерах (IE, Firefox, Chrome, Safari та Opera) і переконайтеся, що сайт відображається правильно.
Версія HTML, що використовується, сумісна з відповідними версіями браузера.
Перевірте правильність відображення зображень у різних браузерах.
Протестуйте шрифти, які можна використовувати у різних браузерах.
Протестуйте код Javascript у різних браузерах.
Перевірте анімовані файли GIF у різних браузерах.
8. Performance Testing
Тестування продуктивності визначає або підтверджує характеристики швидкості, масштабованості та/або стабільності системи або програми, що тестується. Продуктивність пов'язана з досягненням часу відгуку, пропускної спроможності та рівня використання ресурсів, які відповідають цілям продуктивності для проекту чи продукту. Тестування продуктивності веб-додатків проводиться для зниження ризику доступності, надійності, масштабованості, швидкодії, стабільності тощо системи. Тестування продуктивності включає ряд різних типів тестування, таких як навантажувальне тестування, об'ємне тестування, стрес-тестування, тестування ємності, тестування витримки/витривалості і пікове тестування, кожне з яких призначене для виявлення або вирішення проблем з продуктивністю в системі.
Приклади тестів:
Імітуємо навантаження користувачами (JMeter);
Пробуємо завантажити великі обсяги даних, файли, медіа;
Навантажуємо БД;
Знижуємо швидкість інету (NetLimiter);
Знижуємо швидкість передачі (Throttling);
Тестуємо відновлення системи після падіння.
9. Security Testing
Тестування безпеки - це процес, що дозволяє визначити, чи захищає система дані та чи підтримує вона функціональність, як передбачалося. Тестування безпеки спрямоване на виявлення всіх можливих лазівок та слабких місць системи на початковому етапі, щоб уникнути нестабільної роботи системи, несподіваного збою, втрати інформації, втрати доходу, втрати довіри клієнтів. Тести безпеки включають тестування на наявність уразливостей, таких як:
SQL-ін'єкція (SQL Injection);
Міжсайтовий скриптинг (XSS);
Управління сеансом (Session Management);
Зламана аутентифікація;
Підробка міжсайтових запитів (CSRF);
Неправильна конфігурація безпеки;
Неможливість обмежити доступ до URL-адреси;
Розкриття таємних даних;
Небезпечне пряме посилання на об'єкт;
Відсутня контроль доступу на функціональному рівні;
Використання компонентів з відомими вразливими речовинами;
Неперевірені перенаправлення та повернення.
Приклади тестових сценаріїв для тестування безпеки:
веб-сторінка, що містить важливі дані, такі як пароль, номери кредитних карток, секретні відповіді на секретне запитання і т. д. , повинна бути надіслана через HTTPS (SSL).
важлива інформація, така як пароль, номери кредитних карток і т. д., повинна відображатися у зашифрованому вигляді.
правила перевірки пароля використовуються на всіх сторінках автентифікації, таких як Реєстрація, забутий пароль, зміна пароля.
якщо пароль змінено, користувач не повинен мати можливість увійти зі старим паролем.
повідомлення про помилки не повинні відображати важливу інформацію.
якщо користувач вийшов із системи або сеанс користувача закінчився, користувач не повинен переміщатися авторизованим по сайту.
перевірте доступ до захищених та незахищених веб-сторінок без входу до системи.
опцію «Перегляд вихідного коду» вимкнено і не повинно бути видно користувачу.
обліковий запис користувача заблоковано, якщо користувач вводить неправильний пароль кілька разів.
куки не повинні зберігати паролі.
якщо будь-яка функція не працює, система не повинна відображати інформацію про програму, сервер або базу даних. Натомість вона повинна відображати сторінку користувача помилки.
перевірте атаки SQL-ін'єкцій.
перевірте ролі користувачів та їх права. Наприклад, сторона, що запитує, не повинна мати доступу до сторінки адміністратора.
важливі операції записані у файли журналів, і ця інформація має бути відстежуваною.
значення сеансу знаходяться у зашифрованому форматі в адресному рядку.
інформація про файли cookie зберігається у зашифрованому форматі.
перевірте додаток на брутфорс-атаки
10. Crowd Testing або Crowdsourced testing
Краутестинг або краудсорсингове тестування - це нова тенденція у тестуванні програмного забезпечення, яка використовує натовп (crowd/велика кількість людей) для виконання тестів, які інакше були б виконані обраною групою людей у компанії. Краудсорсингове тестування є цікавою і перспективною концепцією і допомагає виявити багато непомічених дефектів. Воно включає практично всі типи тестування, застосовні до вашого веб-додатку.
Джерела:
Дод. матеріали:
Last updated