Техники тест-дизайна: теория и примеры

Если тестировщик знаком с техниками тест-дизайна, ему будет намного проще создавать эффективные тест-сьюты. Применяя ту или иную технику, мы используем готовый набор рекомендаций о том, что и как тестировать. Иными словами, любая техника помогает преобразовать имеющиеся данные в эффективные тест-кейсы.

В этой статье мы расскажем о пяти часто используемых техниках тест-дизайна. Они помогут вам обеспечить максимальное покрытие тестами и сократить время, затрачиваемое на тестирование.

Что такое тест-дизайн?

Начнем с основ. Тест-дизайн — это этап процесса тестирования, в ходе которого мы создаем тест-кейсы и намечаем структуру действий, связанных с тестированием проекта. На этом этапе команда определяет, как с минимальными усилиями расширить тестовое покрытие.

Зачем нужен тест-дизайн?

Основная цель тест-дизайна — структурировать процедуры тестирования, чтобы было легче отслеживать покрытие требований тест-кейсами. Благодаря тест-дизайну мы:

  • создаем тесты, помогающие выявлять серьезные ошибки
  • вдумчиво подходим к тестированию и не тратим ресурсы впустую
  • сводим к минимуму количество тестов, необходимых для тестирования продукта.

Популярные техники тест-дизайна

Что собой представляют техники тест-дизайна? Это стратегии, которые помогают лучше писать тест-кейсы. Их использование позволяет создавать меньше тестов, обеспечивая при этом широкий охват требований.

Техник тест-дизайна довольно много. Мы сосредоточимся на самых популярных:

  • эквивалентное разделение
  • анализ граничных значений
  • переход состояний
  • попарное тестирование
  • предугадывание ошибок

Эквивалентное разделение  и анализ граничных значений направлены на сокращение количества необходимых тестовых сценариев. В связи с этим при разработке тестов для тестирования методом черного ящика эти техники применяются чаще всего.

Эквивалентное разделение

Эквивалентное разделение подразумевает разбиение тестовых данных на классы по какому-то признаку. Этот метод имеет смысл только в том случае, если компоненты чем-то похожи и могут войти в общую группу.

Если мы выбираем в качестве техники тест-дизайна эквивалентное разделение, это означает, что мы будем тестировать только несколько значений из каждого класса элементов. Помните, что это не гарантирует отсутствия ошибок в остальных значениях, не охваченных тестами. Мы лишь предполагаем, что использование нескольких элементов из каждой группы будет достаточно показательным.

Эквивалентное разделение — хорошее решение для случаев, когда вы имеете дело с большим объемом входящих данных или множеством одинаковых вариантов ввода. В противном случае, возможно, имеет смысл более тщательно охватить продукт тестами.

Пример эквивалентного разделения

Допустим, есть интернет-магазин, который предлагает разные тарифы на доставку в зависимости от стоимости корзины. Например:

  1. Стоимость доставки для заказов на сумму менее $100 составляет $15.
  2. Стоимость доставки для заказов на сумму более $100 составляет $5.
  3. При заказе от $300 долларов доставка бесплатна.

У нас есть следующие ценовые категории для работы:

  1. от $1 до $100.
  2. от $100 до $300.
  3. $300 и выше.
эквивалентное разделение

При использовании техники эквивалентного разделения мы получаем три набора данных для тестирования:

От $1 до $100:

  •  допустимые значения: любая цена в диапазоне от 1 до 99,99
  •  недопустимые значения: любая цена ниже 1 или выше 99,99

От $100 до $300:

  •  допустимые значения: любая цена в диапазоне от 100 до 299,99
  •  недопустимые значения: любая цена ниже 100 или выше 299,99

$300 и выше:

  • допустимые значения: любая цена выше 299,99;
  • недопустимые значения: любая цена ниже 300.
техники тест-дизайна: эквивалентное разделение

Таким образом, мы можем выбрать несколько чисел из каждого диапазона цен и предположить, что остальные числа из этих диапазонов будут давать такие же результаты.

Анализ граничных значений

Анализ граничных значений в чем-то похож на эквивалентное разделение. Можно даже сказать, что оно лежит в основе анализа граничных значений. Но есть некоторые отличия.

При анализе граничных значений мы тоже группируем данные по эквивалентным классам, но проверяем не значения из определенного класса, а граничные значения — те, которые находятся на «границах» классов. 

Эта логика применяется для интеграционного тестирования. Мы проверяем отдельные элементы во время юнит-тестирования, а на следующем уровне ошибки, скорее всего, появятся на «стыках» юнитов.

Пример анализа граничных значений

Возьмем предыдущий сценарий с различными тарифами на доставку. У нас те же данные, но другой подход к их использованию. Предполагая, что ошибки наиболее вероятны на границах диапазонов, мы тестируем только «граничные» числа:

От $1 до $100:

  • допустимые граничные значения: 1,00, 1,01, 99,99
  • недопустимые граничные значения: 0,99, 100,00, 100,01

От $100 до $300:

  • допустимые граничные значения: 100,00, 100,01, 299,99;
  • недопустимые граничные значения: 99,99, 300,00;

$300 и выше:

  • допустимые граничные значения: 300,00, 300,01;
  • недопустимые граничные значения: 299,99.
анализ граничных значений

Переход состояний

Диаграмма перехода состояний визуализирует состояния программы в разные периоды времени и на разных этапах использования. Визуальную информацию воспринимать проще, чем текст. Таким образом, техника перехода состояний позволяет быстрее получить максимальное тестовое покрытие. 

Этот метод эффективен при создании наборов тестов для систем со множеством вариаций состояний. Он вам пригодится для тестирования последовательности событий с конечным числом входных параметров.

Пример диаграммы перехода состояний

Самый простой пример перехода состояний — это визуализация входа в учетную запись при тестировании мобильного или веб-приложения. 

Допустим, мы тестируем систему, которая предлагает ограниченное количество попыток ввести правильный пароль. Если пользователь не введет правильный пароль, система блокирует доступ (временно или постоянно). Логическая схема будет выглядеть так:

диаграмма перехода состояний

Блоки разных цветов обозначают отдельные состояния системы. Добавим метки, обозначающие состояния, и получим следующее:

техники тест-дизайна: диаграмма перехода состояний

Такая схема упрощает сопоставление возможных входных данных с ожидаемыми выходными данными. Наличие визуализации перед глазами помогает сохранить ясную голову и правильно связать состояния. Позже вы сможете упорядочить данные лаконично и удобно — например, в виде таблицы:

Пароль верныйПароль неверный
Состояние 1Клик на «Войти»Состояние 5Состояние 2
Состояние 21-я попыткаСостояние 5Состояние 3
Состояние 32-я попыткаСостояние 5Состояние 4
Состояние 43-я попыткаСостояние 5Состояние 6
Состояние 5Вход в систему
Состояние 6Блокировка

Попарное тестирование

Попарное тестирование считается самым сложным и запутанным из отобранных нами пяти техник тест-дизайна. И на это есть веская причина. 

Попарное тестирование основано на математических алгоритмах, а именно на комбинаторике. Оно позволяет создавать уникальные пары и тестировать огромное количество поступающих данных в разных сочетаниях, но расчеты могут быть сложными. 

Чтобы охватить тестовыми сценариями максимум фич и при этом потратить минимальное время на тестирование, нужно правильно сопоставлять данные, комбинируя пары определенным образом на основе расчетов.

Пример попарного тестирования

Допустим, есть сеть пекарен, продающих яблочные пироги и чизкейки онлайн. Каждый товар доступен в трех размерах – маленьком, среднем и большом. Пекарня предлагает доставку, как немедленную, так и к определенному времени, а также возможность самовывоза. Пекарня работает в трех городах – Нью-Йорке, Лос-Анджелесе и Чикаго. Также пользователь может заказать до трех товаров одновременно.

ЗаказРазмерГородКоличествоДоставкаВремя
Яблочный пирогМаленькийНью-Йорк1АдреснаяНемедленно
ЧизкейкСреднийЛос-Анджелес2СамовывозК указанному времени
БольшойЧикаго3

Если вы захотите протестировать все возможные варианты инпута, у вас  будет 2x3x3x3x2x2=216 комбинаций. Но проверять каждую нет смысла. Вместо этого вы можете выстроить переменные таким образом, чтобы охватить максимум сценариев.

Для этого вам нужно сгруппировать переменные или использовать какой-нибудь инструмент, который сделает это за вас. Например, воспользовавшись Pairwise Tool, мы получили 17 сценариев, способных охватить все 216 комбинаций. Вы можете увидеть список комбинаций ниже.

Предугадывание ошибок

Предугадывание ошибок обычно применяется вместе с другими техниками тест-дизайна. Суть этой техники в том, что тестировщик предугадывает, где могут появиться ошибки, опираясь на свой опыт, знание системы и требования к продукту. Таким образом он выявляет места, где могут накапливаться ошибки, и может уделить этим областям повышенное внимание.

Пример предугадывания ошибок

Как правило, тестировщики начинают с тестирования на распространенные ошибки:

  • ввод пробелов в текстовые поля
  • нажатие кнопки Submit без ввода данных
  • ввод неверных параметров (адрес электронной почты вместо номера телефона и т.д.)
  • загрузка файлов, превышающих максимально допустимый размер
  • … и так далее.

Чем больше опыта у тестировщика, тем больше сценариев предугадывания ошибок он сможет быстро придумать.

Итоги

Правильно подобранная техника тест-дизайна помогает разумно использовать ресурсы QA. Очень часто тестировщикам приходится комбинировать несколько техник тест-дизайна для обеспечения наиболее эффективного покрытия тестами. Правильная комбинация всегда зависит от конкретного проекта.

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

3 КОММЕНТАРИИ

Подписаться
Уведомить о
guest

3 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Marina
Marina
1 год назад

Понятно всё изложено. Спасибо!

Transition_122
Transition_122
6 месяцев назад

Да где ж понятно? Состояние и переходы совсем не совпадают. Нет стрелок от состояния 1.
Попарное тестирование сводится к формированию через программу. То есть, делаю то, не знаю что и для чего. Какие пары дадут, такие и проверю, хоть они и бесполезные могут быть.

Плохо, удалите и напишите заново. Слабая двоечка.

Elena Kulikova
Elena Kulikova
5 месяцев назад

Как вручную составлять таблицу для попарного тестирования — можно и в других местах прочитать. Никто это вручную делать не будет, когда есть инструменты. А вот пример с доставкой чизкейков — самый адекватный из тех, что я встретила пока: не абстрактный, не простейший на 2 параметра. Спасибо.

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас