Тестирование веб-сайта или веб-приложения (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 в сетях;
Проверка 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
Верстка - размещение элементов веб-приложения (изображения, текст, кнопки, видео...) в соответствии с макетом или требованиями.
Проверяем:
наличие всех элементов;
их размер и цвет;
расположение относительно друг-друга.
Сравнение с макетом - метод наложения готового эталонного макета (обычно psd-файл) на приложение в экране браузера, все несовпадения можно рассматривать как ошибки (для этого есть хороший инструмент Pixel Perfect).
Измерение размеров элемента - если это имеет значение, то померять размеры элемента и сравнить их со спецификацией можно с помощью, например Page Ruler.
Правильность шрифтов (название, размер, цвет) - WhatFont.
Цвета интерфейса - ColorZilla.
Контент - проверить на наличие орфографических и грамматических ошибок (SpellChecker).
Появление курсора - довольно часто мы забываем проверить, появляется ли вообще и как выглядит курсор в полях ввода, на кликабельных элементах.
Фавикон - такая маленькая незначительная вещица, но может изрядно подпортить впечатление пользователя (в моей практике были случаи, когда разработчики или дизайнеры шаблона оставляли фавикон с логотипом своей компании на сайте у заказчика).
Обозначение возможности переноса элементов.
Кодировка (UTF8...).
Стандарты HTML/CSS - достаточно неплохие решения для быстрой проверки предлагает W3C.
Заголовки по всему приложению должны быть приведены к одному стандарту.
Title страницы - о нем мы тоже часто забываем, также как и разработчики :)
Back button - достаточно часто встречается ошибка при переходе на какую-то страницу и нажатии на браузерную кнопку Back, предыдущая страница крашится или возврат на нее вовсе не осуществляется.
Масштабируемость - особенно это важно при тестировании на смартфонах и планшетах. Где пользователь часто меняет масштаб экрана (Window Resizer), а также режим адаптивного дизайна (например в FireFox Developer Edition).
Кроссбраузерность - одна и та же страница может выглядеть по-разному в разных браузерах.
Проверяем Scroll.
Браузерные расширения, которые могут влиять на внешний вид приложения (например, AdBlock) - пробуем включить и отключить.
Проверить контент при отключенных (режим WebDeveloper) изображениях, flash, JavaScript.
Локализация - что мы знаем об этом? Обычно наши знания сводятся к невнятным «ну, это язык», «кодировка», «раскладка», еще реже «геолокация». Что еще мы так часто забываем проверять в рамках тестирования локализации?
Проверяем тестовый образец на правильность перевода - тут, конечно, хорошо бы подключить переводчика или носителя языка, но за неимением таких, берем тестовый образец и переводим через любой онлайн-переводчик (ну и все мы помним, как прекрасно и весело читать описание товаров на русском языке на AliExpress).
Длина переведенных слов - количество символов в переведенном слове может быть гораздо больше, что может привести к «расползанию» интерфейса при переводе.
Сокращения/аббревиатуры - существуют правила, по которым их либо переводят, либо транслитерируют, либо оставляют как есть.
Валюта.
Параметры шрифта могут также значительно отличаться в зависимости от языка ввода.
Проверить работу поиска во всех локализациях - например, на AliExpress результаты поиска одного и того же слова «смартфон» дают разный результат по количеству найденных товаров, причем разница исчисляется десятками тысяч.
Мета-информация (keywords/title/description) - столь незначительное для пользователя, невидимое, но такое важное для поисковых машин и продвижения сайта в гугле и других поисковиках.
RTL (right to left languages) - языки c обратным написанием (арабский, иврит) имеют свои особенности: числа пишутся слева направо, значки и иконки отзеркаливаются, названия программ не переводятся, нет переносов, кнопки редактирования 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 or Crowdsourced testing
Краутестинг или краудсорсинговое тестирование - это новая тенденция в тестировании программного обеспечения, которая использует толпу (crowd/большое количество людей) для выполнения тестов, которые в противном случае были бы выполнены выбранной группой людей в компании. Краудсорсинговое тестирование представляет собой интересную и перспективную концепцию и помогает выявить многие незамеченные дефекты. Оно включает в себя практически все типы тестирования, применимые к вашему веб-приложению.
Источники:
Доп. материалы:
Last updated