Снова всех приветствую у меня на канале!
В прошлый раз мы познакомились с тестированием, как таковым, разобрались зачем оно нужно, и какие стадии проходит тестировщик в ходе своей работы. Сегодня вторая часть из цикла статей о теории тестирования и углубимся немного глубже в эту тему: узнаем какие виды/типы тестирования вообще есть и подробнее узнаем про те самые стадии тестирования из предыдущей статьи😊Готовы? Тогда доставайте свои конспекты и поехали!
Нужно понимать, что видов тестирования очень много и их зачастую объединяют в классификации. Дальше мы разберем по каким критериям они классифицируются:
1) По объектам:
a. Функциональное:
i. Функциональное тестирование;
Здесь все просто. Это тестирование того, что умеет делать наше ПО, то есть его функционала.
ii. Тестирование пользовательского интерфейса (Тестирование GUI);
Тестирование графического интерфейса. Например, при наведении курсора мыши на кнопку, она должна подсвечиваться.
iii. Тестирование безопасности (Security and Access Control Testing).
Я думаю, тут также можно очень легко догадаться, о чем идет речь. Это тестирование непосредственно про защиту данных, безопасность и т.п.
b. Нефункциональное:
i. Все виды тестирования производительности (нагрузочное тестирование, стрессовое тестирование, объемное тестирование, тестирование стабильности или надежности);
Нагрузочное тестирование подразумевает, что мы проверяем наше ПО при очень стрессовых нагрузках, например, очень много каких-либо запросов, или очень много пользователей делают что-либо, или ПО обрабатывает очень много данных. Все это про нагрузку и производительность.
ii. Тестирование удобства пользования (Usability Testing);
Тестирование того, насколько удобно пользоваться нашим продуктом, насколько быстро пользователь достигнет цели, насколько быстро новичок сможет освоиться с нашим продуктом.
iii. Тестирование локализации;
Тестирование текста, в нем не должно быть ошибок (пунктуационных, грамматических). Тут же важно учитывать какие-либо региональные особенности, например, в России используются рубли, в Казахстане – тенге, и это тоже надо учитывать при тестировании локализации;
iv. Конфигурационное тестирование;
Тестирование того, подходит ли ПО на каких-нибудь других устройствах, других поколениях.
v. Тестирование совместимости;
Тестирование того, насколько совместимо наш сайт с разными браузерами.
vi. Инсталляционное тестирование;
Проверка того, насколько корректно проходит обновление ПО, его установка и удаление.
2) Связанные с изменениями:
a. Дымовое тестирование (Smoke Testing);
Проверка главной функциональности, неработоспособность которой делает бессмысленной саму идею использования приложения.
b. Регрессионное тестирование (Regression Testing);
Повторное выполнение функциональных и нефункциональных тестов для обеспечения того, чтобы ранее разработанное и протестированное программное обеспечение все еще работало после изменений. Тут есть важный момент, что регрессионное тестирование подразумевает, что изменения введены и эти изменения могут повлиять на другие части продукта, поэтому мы их тестируем.
c. Повторное тестирование (Re-testing);
Это тип тестирования, выполняемый заново после устранения какой-либо ошибки. В случае ретеста (повторного тестирования) мы ранее выявили ошибку в работе ПО, эту ошибку устранили и теперь мы проводим ретест, чтобы узнать, устранили ли ее.
d. Тестирование сборки (Build Verification Test);
Это тестирование, направленное на определение соответствия, выпущенной версии ПО, критериям качества. По своим целям является аналогом Дымового Тестирования, направленного на приемку новой версии в дальнейшее тестирование или эксплуатацию. Вглубь оно может проникать дальше, в зависимости от требований к качеству выпущенной версии.
e. Санитарное тестирование или проверка согласованности/исправности (Sanity Testing);
Это узконаправленное тестирование достаточное для доказательства того, что конкретная функция работает согласно заявленным в спецификации требованиям. То есть в отличие от домового тестирования и тестирования сборки покрывает лишь малую часть функционала.
Пожалуй, на этих видах тестирования мы пока остановимся. Остальные виды и классификации нам пока не пригодятся. Хотя это не означает, что мы не изучим их позже 😊
Как и обещал, дальше мы пойдем по стадиям тестирования, я их вам напомню:
· Test Management (планирование работ).
· Test Design (проектирование тестов).
· Test Execution (выполнение тестов).
· Test Analysis (анализ результатов тестирования).
Test management или планирование работ.
Как и было сказано в предыдущей статье, на этой стадии тестировщик выясняет свой фронт работы, существующие требования, уточняет или набрасывает сам примерные сроки и готовит тест-план. Здесь звучит одно прекрасное слово – тест-план. Но что же это такое?
Тест план – это документ, который описывает весь объем работы по тестированию. Это не унифицированный и не стандартизированный документ. В каких-то компаниях он может существовать, а в каких-то может и не существовать. Однако, чтобы быть мастерами своего дела, нам все равно надо разобраться в этом. Итак, тест план может включать в себя такие сущности:
· Предмет тестирования. Т.е. что мы тестируем.
· График тестирования. Т.е. когда и в какие сроки.
· Обязанности и роли. Т.е. кто тестирует.
· Критерии начала/завершения тестирования. Т.е. на стадии планирования мы можем определиться, когда нам необходимо подключаться к тестированию, а когда его завершить (например, начать мы можем тогда, когда большая часть продукта будет разработана, а завершить – когда мы после очередной проверки не найдем ошибок).
· Подходы/техники/инструменты/виды тестирования. Я думаю, тут все понятно, кроме подходов и техник тестирования, но об этом ниже😊
· Браузеры, версии, разрешение экрана. Все это может быть определено требованиями и тогда эту информацию мы тоже можем поместить в наш тест план.
· Ссылки на спецификацию/документацию. Т.е. это и есть наши требования к ПО.
Пожалуй, здесь названа основная информация, которую зачастую добавляют в тест план, однако это не значит, что этот список исчерпывающий. Разные компании могут применять свои стандарты к написанию документации.
Test Design или проектирование тестов.
На этой стадии тестировщик определяет, как именно он будет тестировать продукт. Если максимально кратко – то Test Design – это просто написание тестов и проверок. Тесты пишутся в соответствии с критериями качества и целями тестирования. А для того, чтобы написать их, мы должны применять различные техники тест-дизайна.
Выделяют очень много различных техник, кто-то придумывает их себя сам, но есть самые распространенные (ВАЖНО! На собеседовании очень любят задавать вопрос про то, какие техники тест-дизайна знает тестировщик):
1. Исчерпывающее тестирование.
2. Предугадывание ошибок.
3. ADHOC.
4. Классы эквивалентности.
5. Анализ граничных значений.
6. Причина / Следствие.
7. Попарное тестирование.
8. Таблица принятия решений.
9. Use case (пользовательский сценарий).
Статья получилась уже довольно большой, а чтобы объяснить понятным языком все эти техники тест-дизайна нужно будет написать еще столько же) Поэтому оставляю эту информацию вам, чтобы вы сами разобрались, что эти техники из себя представляют (ничего сложного в них нет, но на собеседовании будет очень жирненьким плюсом). P.s. Попробуй зайти в YouTube и поискать информацию там😊
Итак, что мы узнали сегодня:
1. Какие основные виды тестирования существуют.
2. Что такое тест план и какую информацию туда добавляют.
3. Что такое тест-дизайн и какие существуют техники тест-дизайна.