Тестирование продукта
Материал из AOW
Содержание |
Тестирование сайта на его соответствие техническому заданию включает в себя:
- Проверку работы всех обязательных функций сайта.
- Проверку работы поиска (включая релевантность результатов).
- Тестирование всех форм (например, обратная связь, добавление комментария в блог), в том числе анти-спам фильтры, шаблоны отправляемых писем и т.д.
- Тестирование сайта при выключенном Javascript, Flash и других плагинах
- Просмотр сайта на мониторах с различной разрешающей способностью.
- Проверку времени загрузки всех страниц сайта при заданной скорости соединения с Интернет.
- Проверку возможности просмотра сайта и правильности отображения цветов при различном количестве цветов, установленных на мониторе.
- Проверку сайта при просмотре его на различных браузерах (IE, Firefox, Opera, Chrome т.д.) и их версиях.
- Проверку гиперссылок, поиск и устранение сломанных гиперссылок.
- Проверку правильности отображения шрифтов на различных браузерах (IE, Firefox, Opera, Chrome т.д.) и их версиях.
- Проверку загрузки всех графических материалов сайта (рисунки, фотографии и т.д.).
- Проверку замещающих надписей графических материалов.
- Проверку работоспособности счётчиков, установленных на страницах сайта.
- Проверку описания, содержания, свойств страниц сайта и мета-тэгов каждой страницы.
- Проверку орфографии на страницах сайта.
- Просмотр на соответствие содержимого страниц сайта исходному контенту, представленному заказчиком.
WEB тестирование можно классифицировать по объекту тестирования
- Функциональное тестирование.
Функциональное тестирование проверяет, что система работает в точности, как и описано в спецификации (требованиях к системе).
- Тестирование юзабилити.
Тестирование предназначено для оценки удобства пользования системой и соответствующих рекомендаций по её улучшению.
- Тестирование безопасности.
Тестирование безопасности — это множество вещей, суть которых заключается в том, чтобы усложнить условия для кражи — кражи данных, денег и информации.
Функциональное тестирование
- Необходимо проверить релевантность результатов поиска.
- Обязательный ввод. В спецификации приложения четко определены поля требующие обязательного ввода данных. Необходимо проверить формы, которые имеют поля, определенные как обязательные для ввода, не могут быть сохранены при отсутствии данных в них.
- Типы данных полей. В спецификации четко определены типы данных для каждого из полей (поля даты/времени, числовые поля, поля для ввода номера телефона или почтового кода и т.д.). Необходима проверка, что каждое из полей позволяет вводить или сохранять данные только определенного спецификацией типа (например, приложение не должно позволять вводить или сохранять буквы или специальные символы в числовых полях).
- Размер поля. В спецификации четко определено максимально допустимое количество символов в каждом из полей (например, количество символов в поле с именем пользователя не должно превышать 50). Нужно проверить, что приложение не позволяет вводить или сохранять большее количество символов, нежели указано в спецификации. Не нужно забывать и о том, что данные поля, не только должны правильно функционировать, но и предупреждать пользователя об ограничениях, например, с помощью пояснительных надписей или сообщений об ошибках.
- Числовые граничные значения. Числовые поля приложения могут иметь ограничения допустимых числовых значений. Эти ограничения могут быть указаны в спецификации приложения либо вытекать из логики работы программы (например, если тестируется функциональность связанная с начислением процентов на счет, то вполне логичным будет предположение, что начисленные проценты не могут принимать отрицательное значение). Необходимо проверить, что приложение выдает сообщение об ошибке в случае, если значения лежат за пределами допустимого диапазона (например, сообщение об ошибке должно появляться при вводе значений 9 или 51 в поле с допустимым диапазоном значений от 10 до 50, либо при вводе отрицательного значения в поле, значения которого должны быть положительными).
- Числовые ограничения. Большинство баз данных и языков программирования определяют числовые значения как переменные с некоторым типом (например, integer или long integer), которые, в свою очередь, имеют ограничения допустимых числовых значений (например, значения integer должны находиться в диапазоне от -32768 до 32767, а long integer от -2147483648 до 2147483647). Проверка граничных значений используемых переменных, для числовых полей, граничные значения которых четко не определены спецификацией.
- Граничные значения даты. Очень часто в приложениях существуют логические ограничения для полей содержащих дату и время. Например, если производить проверку поля содержащего дату рождения пользователя, то вполне логичным будет запрет ввода еще не наступившей даты (т.е. даты в будущем), либо ограничение на ввод даты отличающейся от сегодняшней более, чем на 150 лет.
- Валидность даты. Поля даты всегда должны иметь проверку валидности введенных значений (например, 31-10-2009 – не валидная дата). Также, не нужно забывать и о проверке дат в високосном году (годы кратные 4м и кратные 100 и 400 одновременно - високосные).
- Веб сессии. Множество веб приложений используют браузерные сессии для отслеживания пользователей вошедших в систему, применения специфических настроек приложения для конкретного пользователя и т.д. При этом, многие функциональные части системы не могут или не должны работать без предварительного входа в систему. Необходимо проверить, что функциональность или страницы, находящиеся за паролем, недоступны пользователю не прошедшему авторизацию.
- Проверить работоспособность сайта с выключенным Javascript, Flash, и другими компонентами
- Проверить вид сайта на разных разрешениях экрана (1280×1024, 1024×768, 1920×1200, 800×600...)
- Проверка правильности отображения страниц при увеличенном зуме. Необходимо проверять как и увеличение зума всей страницы, так и увеличение масштаба текста. В последнем случае будет хорошо заметно, расползается ли верстка.
- Проверить работу сайта в разных браузерах (Internet Explorer, Firefox, Opera, Safari, Chrome etc.), версиях (6, 7, 2.2, 3.1 etc.) и платформах (Windows, OSX, Linux).
- Проверка гиперссылок, поиск и устранение сломанных гиперссылок. Например, утилита Xenu Link Sleuth (мощное средство для поиска ссылок, ведущих на несуществующие страницы, так же осуществляет поиск файлов-сирот и т.п. По окончанию работы есть возможность создания отчета).
- Просмотр на соответствие содержимого страниц сайта исходному контенту, представленному заказчиком. Так же сюда входит проверка загрузки всех графических материалов сайта(рисунки, фотографии и т.д.), проверка замещающих надписей графических материалов.
- Проверка работоспособности счетчиков.
- Проверка содержания, орфографии на страницах сайта.
- HTML, CSS, JS валидность.
Тестирование юзабилити
Эти десять правил юзабилити выведены Якобом Нильсеном (Jakob Nielsen) - одним из основателей и руководителей компании "Nielsen Norman Group", занимающейся предоставлением консультаций в области юзабилити. Эти правила он сформулировал еще в 1990 году, но, несмотря на это, они все-равно не потеряли своей актуальности. В оригинале их название звучит как "Ten Usability Heuristics".
- Информированность о состоянии системы. Пользователь всегда должен быть в курсе того, что происходит в системе. При этом обратная связь между пользователем и системой должна быть как можно более логичной и оперативной.
- Схожесть системы с реальным миром. Система должна общаться с пользователем на понятном ему языке. Использование слов, фраз и понятий знакомых пользователю в реальном мире, намного предпочтительнее, чем использование специализированных терминов. Это позволяет представлять информацию в более естественном и логичном виде.
- Свобода действий. Пользователи часто ошибаются, поэтому система всегда должна предоставлять очевидный «путь к отступлению», благодаря которому, пользователю понадобится сделать минимум телодвижений, чтобы исправить свою ошибку. Необходимо дать пользователям возможность отмены действий, а также возврата к ранее отмененным действиям.
- Единообразие и стандарты. Не нужно вводить пользователя в заблуждение, описывая одни и те же вещи разными словами и терминами. Желательно придерживаться единообразия и следования стандартам.
- Предотвращение ошибок. Даже самые лучшие сообщения об ошибках не смогут сделать систему настолько дружелюбной, насколько это сделает продуманная архитектура, позволяющая эти ошибки предотвращать. Нужно свести к минимуму количество условий, в которых могут быть допущены ошибки, а также требовать от пользователя дополнительного подтверждения своих действий, в случае если он допустил ошибку.
- На виду, а не в памяти. Не нужно утомлять пользователя, заставляя его запоминать большое количество объектов, действий и опций. Пользователь не должен держать в голове информацию, перемещаясь из одной части системы в другую. Инструкции по использованию системы всегда должны быть на виду или, по крайней мере, должны быть легкодоступны из любой части системы.
- Гибкость и эффективность. Не стоит нагружать опытных пользователей излишней информацией, лучше предоставить им возможность совершать часто повторяющиеся действия как можно быстрее и проще. При этом постараться скрыть эти возможности от глаз неопытного пользователя.
- Эстетичный и минималистичный дизайн. Диалоги не должны содержать нерелевантной или мало востребованной информации. Каждое лишнее слово делает восприятие релевантной информации все более сложным.
- Понимание проблем и их решение. Сообщения об ошибках должны быть выражены на понятном пользователю языке. Они должны как можно более точно описывать проблему и предоставлять возможные варианты ее решения.
- Справочные материалы и документация. Даже если система может использоваться без документации, в процессе работы с ней все же может потребоваться справочная информация. Подобные документы должны составляться таким образом, чтобы в них легко было найти необходимое. К тому же, справочные материалы должны быть лаконичными и содержать только конкретные руководства к действиям.
Тестирование безопасности
- Закрыть поисковикам доступ к служебным/секретным/закрытым разделам сайта, используя robots.txt
- Проверить, нет ли у посетителей доступа к служебным/секретным/закрытым страницам.
- Использовать длинные комплексные пароли и нестандартные логины, периодически выполнять их смену;
- У большинства SQL баз данных возникают проблемы при наличии одинарных кавычек в запросе (например, Jones’s car). Необходимо при данном тесте использовать одинарные кавычки при проверке каждого поля ввода работающего с базой данных.
- Желательно настроить расписание резервного копирования, и проверьте результат восстановления из резервной копии.
- Нужно защитить все критически важные страницы (например, раздел администрирования сайта)
- Необходимо протестировать web продукта на возможность взлома (например, таким софтом, как XSpider)
- Выключить вывод текстовых сообщений об ошибках
- Настроить уведомления по электронной почте и (или) SMS (например, для ошибок или сбоев сервера) для системы внутреннего и внешнего мониторинга
- Настроить ведение лог файлов на веб-сервере и сервере БД
Полезные советы при тестировании
- Тестирование полей ввода.
- Логирование в автотестах.
Качественный логгер очень важный момент в автоматическом тестировании, так как понятные и удобные логии упростят процесс тестирование и сэкономят ваше время. Основные требования к логам:
- Логи должны быть ориентированы на различные группы пользователей (машины, тестировщики, разработчики или менеджеры)
- Использование HTML
- Сохранять стандартный лог (чаще всего подробный, ибо пригодится)
- Возможность различных форматов для интеграции
- Полнота лога
- Возможность сохранять скриншоты (ошибок и проблемных мест, что гораздо упростит работу тестера и програмиста)
- Лог должен содержать разнообразные фильтры
- Использовать цветовое кодирование (наглядность)
- Не забывать про unicode
- Явные и неявные требования
Тестировщик не должен уповать на качество работы аналитика и т.п., а должен сам очень грамотно понимать и выявлять требования. Зачастую тестер протестировав явные требования (требования описанные в техническом задании или задаче) пропускает неявные. Которые не указаны, но они исходят из здравого смысла или специфики разрабатываемой сферы. В частности в качестве примера можно провести тестирование интернет-магазина и адреса доставки. Например к неявным требованиям можно отнести особенности валидации в вводе в поля различных данных. В частности, номер дома может быть не только цифрой, а например 1а, квартиры также могут иметь буквенный индекс, телефоны могут иметь добавочный номер, цена со скидкой может иметь дробное значение.
Инструменты
- Selenium IDE
Selenium - это java-программа, которая умеет запускать браузер и делать в нем различные действия типа клика на кнопку, поиска элемента, ожидания загрузки страницы. Плюсы: Не требует больших навыков тестирования Удобный помощник при создании простых тестов, таких как создание товаров, быстрое заполнение полей, смена статусов продуктов
- Команды в Selenium IDE
- Инструкция по созданию тестов в Selenium
- План тестирования
- Типовые баги и багрепорты
http://seleniumhq.org/projects/ide/
- TestComplete.
Полнофункциональная система для автоматизации тестирования приложений. С помощью TestComplete можно выполнять функциональное, узловое, регрессионное, распределенное тестирование, а также тестирование работоспособности HTTP на проектном уровне. С помощью TestComplete можно выполнять систематическое, автоматизированное и структурное тестирование для .NET, Java, Visual C++, Visual Basic, Delphi, C++Builder, web страниц и других приложений. Инструмент позволяет записывать сложные, объектно-ориентированное тестовые действия, которые в дальнейшем могут повторно использоваться практически без изменений. TestComplete ведет подробный журнал всех действий, выполняемых в ходе автоматизированного тестирования и позволяет пользователям добавлять необходимый контент в журнал. Вы сможете осуществлять сортировку, фильтрацию, группировку и другие операции для анализа результатов автоматизированного тестирования. http://smartbear.com/products/qa-tools/automated-testing/
- Apache JMeter
Apache JMeter - инструмент для проведения нагрузочного тестирования Подробно с инструкцией по проведению нагрузочного тестирования можно ознакомится на Хабре. http://habrahabr.ru/blogs/testing/84190/
Ссылки
- Jakob Nielsen. Один из основателей и руководителей компании "Nielsen Norman Group". | Юзабилити тестирование
- Вольный перевод статьи "Top 10 Negative Test Cases" Steve Miller. | Функциональное тестирование
- Утилита для поиска ссылок, ведущих на не существующие страницы. | Xenu Link Sleuth
- Тестирование полей ввода | http://blog.shumoos.com/archives/67
- Обзор бесплатных инструментов для пентеста web-ресурсовhttp://habrahabr.ru/blogs/infosecurity/125317/

