Существует много мифов, связанных с тестированием. Один из них заключается в том, что тестировать программное обеспечение – это просто. В данной статье мы попробуем разобраться, так ли это на самом деле?
Для примера давайте ответим на вопрос: просто ли приготовить кофе? На первый взгляд – ничего сложного, с такой задачей справится любой, если под ней мы подразумеваем насыпание растворимого кофе в чашку с последующим добавлением сахара, молока и кипятка по вкусу. Но что, если нужно пройти весь процесс: выращивание кофейных зерен, сбор урожая, обжарку, выбор степени помола, приготовление напитка в лучших традициях кофейной церемонии по-ливански? Согласитесь, с этим справиться будет не так уж и легко. Тонкости доступны только профессионалам своего дела, а дьявол, как известно, кроется в деталях.
Такая же ситуация и с тестированием. Даже неопытный тестировщик способен вручную кликать по кнопочкам и заводить ошибки локализации или пользовательского интерфейса. Но разве при таком подходе можно быть уверенным в корректности бизнес-логики? Как же анализ юзабилити? Как определить, что именно уже проверено, и сколько еще осталось проверить? Как понять, вписываемся ли мы в оговоренные ранее сроки и не сорвем ли релиз?
И вот уже оказывается, что тестирование – это не только поиск ошибок. Настоящих тестировщиков должно заботить не то, сколько багов они смогут завести, а то, как комплексно проверить продукт и защитить конечных пользователей от дефектов ПО. А это уже совсем другой уровень.
Так из чего же состоит настоящее тестирование «от профи»? Предлагаем выделить следующие этапы:
- Анализ проекта. Составление стратегии, плана и карты тестирования.
Тестирование начинается с подготовки. Создание стратегии тестирования, разделение функционала, расстановка приоритетов, оценка времени работ – все это имеет огромное значение для обеспечения релиза качественного продукта, выходящего в точно оговоренные сроки.
- Тестирование документации.
Это может показаться странным, но проектная документация также подлежит тестированию. Тестировщики проверяют ее на соответствие ряду критериев, среди которых – понятность и недвусмысленность, соответствие требованиям бизнеса и пользователей, последовательность и т. д.
Важность этого вида тестирования невозможно переоценить. Гораздо дешевле выявить ошибки документации на стадии разработки. Вовремя скорректированные требования помогут обеспечить максимально прозрачные результаты тестирования ПО и, возможно, даже сократить расходы на последующие повторные доработки, вызванные неточностями в документации.
- Тест-анализ. Разработка и документирование чек-листов или текст-кейсов для функционального тестирования.
Грамотно составленные чек-листы или тест-кейсы позволяют протестировать все параметры функциональности продукта. В любой момент времени они дадут представление о том, на какой стадии тестирования вы находитесь, что уже проверено, что еще предстоит проверить. На помощь также приходят техники тест-анализа, а именно тестовая комбинаторика, тестирование состояний и переходов, таблицы решений.
- Функциональное тестирование. Поиск, локализация и заведение найденных дефектов.
На данном этапе осуществляется тестирование работоспособности продукта и проверка соответствия его техническому заданию. Тесты уже готовы, и можно не бояться, что какая-то часть функционала остается непроверенной. Найденные баги локализованы, подробно описаны и перенесены в баг-трекинговую систему заказчика. При этом тестировщики могут отследить результаты исправленных разработчиками ошибок и корректность самого процесса баг-фиксов.
- Тестирование кроссбраузерной совместимости.
На основании анализа целевой аудитории проекта и статистики использования браузеров выявляются самые приоритетные из них. С помощью эмуляторов проверяется, насколько правильно продукт ведет себя во всех интересующих заказчика браузерах.
- Тестирование юзабилити. Подготовка и прохождение пользовательских историй.
Не стоит пренебрегать этим видом тестирования. Ваш продукт может быть великолепен в техническом плане, но его успешность останется под сомнением, если он не будет достаточно дружелюбен к пользователям. Очень важно определиться с целевой аудиторией проекта. Для этого разрабатываются портреты гипотетических пользователей с присущими им потребностями и субъективными ожиданиями.
- Нагрузочное тестирование.
Нужно быть уверенным в том, что ваш продукт справится с большим потоком клиентов. Для этого собирается статистика использования проекта, создается нагрузочная модель, разрабатываются автоматические скрипты, готовится тестовый стенд и проводится генерация нагрузки из нескольких источников. По итогам тестов заказчику предоставляется анализ результатов с построенными отчетами.
- Тестирование безопасности.
Хорошо, когда персональная информация и данные о кредитных карточках ваших пользователей находятся в безопасности, не правда ли? Для этого продукт проверяется на уязвимость к распространенным атакам на клиента (подделка cookies и перехват сессий, сross-site scripting (XSS), cross-site request forgery (XSRF), обход валидаторов), а также и к распространенным атакам на сервер (SQL-инъекции, файловые инъекции (внедрение backdoor shell), командные инъекции (удаленное выполнение команд), отказ в обслуживании (DoS), получение доступа к содержимому директорий и файлов).
Виды и техники тестирования подбираются индивидуально для каждого проекта с учетом целей и задач, которые ставятся перед командой. Времени никогда не бывает много, и использовать его нужно с максимальной пользой в соответствии с приоритетами и интересами бизнеса. Вот как выглядит стратегия тестирования реального проекта:
Вывод
Как видите, тестирование бывает разным. Но комплексное, способное обеспечить выпуск качественного продукта тестирование не может быть простым. Только заранее спланированный и проработанный профессионалами процесс обеспечит максимальную эффективность даже в условиях близости дедлайна.
Таким образом, выбор всегда остается за руководителями проектов, и степень сложности тестирования будет зависеть от того, какой результат они хотят получить на выходе.
Для того, чтобы обсудить проект, заполняйте форму ниже!