Программирование • 12 января 2024 • 5 мин чтения

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

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

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

Тест-дизайн — это процесс разработки техник и методов тестирования. Главная задача тест-дизайна — подготовить рабочую документацию, то есть разработать сценарии, которые позволят протестировать максимальное количество функций за минимальное время. Тестовая документация уникальна для каждого продукта. Разрабатывая её, тестировщик опирается на общие принципы и логику тестирования с поправкой на особенности продукта. Суть всех техник тест-дизайна — оптимизировать процесс тестирования.

Научиться анализировать требования к продукту и освоить техники тест-дизайна можно на курсе «Инженер по тестированию: от новичка до автоматизатора». Обучение длится 9 месяцев, обычно студенты могут брать первые рабочие проекты уже на 4―5 месяце обучения. Пройти первые уроки можно бесплатно.

Типы тестирования

Глобально все типы тестирования разделяют на функциональное и нефункциональное.

Функциональное тестирование

Проверяет функциональность, ради которой был создан продукт — приложение или сайт. Например, кредитный калькулятор должен корректно проводить расчёты — это и проверяют при тестировании.

Нефункциональное тестирование

Проверяет работу продукта в целом, а не отдельных функций. Например, как сайт работает в разных браузерах и операционных системах, как справляется с нагрузкой.

Реже встречается разделение на статическое и динамическое тестирование.

Статическое тестирование

Проверка продукта до его запуска и разработки кода. Например, во время статического тестирования мобильного приложения можно оценить его формат, вес и совместимость с определённой операционной системой. Если тестовое приложение должно весить не больше 50 Мб, а оно весит 120 мегабайт, значит, нужно искать баг. Статическое тестирование — это работа не с функциями, а с характеристиками продукта. Им занимаются значительно реже.

Динамическое тестирование

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

Этапы

Выделяют три этапа тестирования:

1. Подготовка к тестированию. Тестировщик собирает информацию о продукте, изучая документацию и задавая вопросы. Цель этапа — максимально полно выяснить, каким областям и функциям программного продукта нужно уделить больше внимания.
На этапе подготовки важно понять, в каких окружениях будет проводиться тестирование, — это поможет корректнее оценить необходимое время. Условно на проверку продукта в одном окружении понадобится Х часов, а в пяти — Х*5 часов.

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

3. Анализ результатов тестирования. Тестировщику нужно выделить количество критичных багов, как результат можно представить детальную статистику о количестве и характере найденных ошибок. Удобно собирать такие метрики, разбивая функциональность на большие логические блоки: вёрстка, расчёты. Так можно составить карту и выделить конкретные области, на которые приходится большая часть ошибок. Это поможет в будущем при тестировании сразу акцентировать внимание на проблемных областях.

Если же тестировщик составил 100 тест-кейсов и нашёл 10 багов, а ещё 10 багов обнаружил за пределом кейсов, к составлению тестовой документации есть вопросы. Специалист что-то упустил при подготовке, не составил нужные кейсы и только чисто эмпирически нашёл эти 10 багов.

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

Результаты выполнения тест-кейсов, оформленные в виде круговой диаграммы. Источник: performance-lab

Основные техники тест-дизайна

Рассмотрим на примерах основные техники тест-дизайна. Часто они применяются комплексно, дополняя друг друга.

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

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

1. Не выдавать людям до 18 лет — первая граница.
2. Выдавать людям с 18 до 65 лет — вторая граница.
3. Не выдавать пенсионерам с 65 до 100 лет — третья граница.

Если тестировщик будет проверять все 100 значений от 0 до 99, ему придётся поработать со 100 кейсами — это займёт много времени. Оптимальнее будет разделить весь массив на группы, которые будут давать один и тот же результат, и протестировать всего три значения вместо 100. При любом значении от 0 до 18 лет система должна однозначно выдавать отказ в кредите, а при значении от 18 до 65 — согласие, а при значении от 65 до 100 — снова отказ. Значит, достаточно взять по одному значению в каждой группе, чтобы протестировать функцию.

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

Метод граничных значений

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

Вернёмся к нашему примеру с кредитным калькулятором. Банк не даёт кредиты людям до 18 лет. Возникает вопрос: до 18 лет включительно? Разработчики и аналитики могли упустить этот момент в разработке требований, соответственно, на границе между 17 и 19 будут скапливаться ошибки.

Например, если по условиям банк не даёт кредиты клиентам до 18 лет включительно, то человек в 18 лет имеет право взять кредит. Но если разработчики допустили ошибку, то при вводе возраста в 18 лет система будет автоматически выдавать отказ.

Суть техники граничных значений ― найти ошибки в работе продукта на границах классов. В нашем примере тестировщик знает границу и проверяет приграничную область, делая шаг в глубь и за пределы диапазона, то есть тестирует систему на правильный ответ при вводе значений 17, 18 и 19 лет.

Суть техники граничных значений — в тщательной проверке границ каждого из классов

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

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

Например, тестировщику нужно проверить работу браузерного приложения:
● в трёх операционных системах — Windows, MacOS, Linux;
● в трёх браузерах — Google Chrome, Яндекс Браузер, Mozilla Firefox;
● на двух языках — английском и русском.

С помощью техники попарных значений тестировщик должен так скомбинировать пары, чтобы браузер Google Chrome хотя бы раз тестировался на каждой операционной системе и на каждом языке

Максимальное количество тест-кейсов в этой ситуации — 18: три операционные системы в трёх браузерах и на двух языках. Проверять 18 тест-кейсов долго и трудозатратно. По количеству пар можно сократить количество кейсов — в итоге нужно будет протестировать не 18, а только 9 кейсов.

Техника попарного тестирования позволяет избежать лишних проверок и сократить количество тест-кейсов

Таблица принятия решений

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

На примере кредитного калькулятора выделим параметры, при соблюдении которых банк выдаст кредит:
● возраст от 18 до 65 лет;
● работающий;
● с понятной целью — например, автокредит, потребительский или ипотечный.

Различные комбинации трёх параметров приводят к разному, заранее заложенному поведению системы.

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

Существенный минус техники принятия решений — её объёмность и трудозатратность. С другой стороны, метод позволяет выявить те ошибки, которые пропустят методы эквивалентного разделения и граничных значений. Его трёхмерность позволяет найти такие уникальные сочетания и ошибки, которые тестировщик обычно не предполагает увидеть.

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

Метод основан на интуиции тестировщика. Он хорошо работает только в том случае, если у специалиста достаточно опыта, в том числе пользовательского, и он отлично знает тестируемый продукт. Специалист на собственном опыте знает, в какой части системы накапливаются ошибки, какая область менее проработанная и сложная. Условно, тестировщик работает с продуктом не первый год и заранее понимает, в какой области функционала чаще случаются ошибки. В ходе тестирования он будет внимательнее именно к этим зонам и найдёт ошибки быстрее тестировщика, который впервые работает с этой системой.

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

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

Совет эксперта

Василий Беляков

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

Статью подготовили:
Василий Беляков
Яндекс Практикум
Наставник курса «Инженер по тестированию»
Яндекс Практикум
Редактор
Анастасия Павлова
Яндекс Практикум
Иллюстратор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Wed Jul 31 2024 23:30:37 GMT+0300 (Moscow Standard Time)