Техники тест-дизайна
🧠 Что такое тест-дизайн (по-человечески)
Тест-дизайн — это этап, на котором мы решаем:
То есть тест-дизайн — это мостик между ТЗ и реальными тест-кейсами.
💡 Без тест-дизайна тестировщик просто «тыкает куда попало».
💡 С тест-дизайном — работает по понятной системе и ловит больше багов меньшим количеством тестов.
🎯 Цели тест-дизайна
- 🐛 Находить самые серьёзные ошибки — особенно там, где система ломается по-настоящему.
- ✂️ Уменьшить количество тест-кейсов — не проверять 1000 вариантов, если достаточно 10 умных.
- ⏱️ Сократить время на тестирование — тестов меньше, а пользы больше.
🧩 Этапы тест-дизайна
- Анализ материалов
Читаем: - (Иногда) спецификация тест-дизайна
Это документ, где мы фиксируем: - подход к тестированию,
- какие техники используем,
- что считаем приоритетом.
Это не обязательно, но полезно для командной работы. - Проектирование тест-кейсов
Используем техники тест-дизайна и превращаем их:
🧰 Какие бывают техники тест-дизайна?
Техники — это инструменты, которые помогают:
- определить, какие данные взять;
- какие случаи обязательно проверить;
- как сократить количество тестов, не потеряв качество.
Их делят на три большие группы:
- 🎱 Техники чёрного ящика
Смотрим только на поведение системы:
«что на вход — что на выход».
Код нас не волнует. - ⚙️ Техники белого ящика
Смотрим во внутренности:
«как устроен код, какие ветки, циклы».
Обычно это зона разработчиков / автотестов на уровне кода. - 🧪 Техники, основанные на опыте
Используем:
В этой карточке мы фокусируемся на чёрном ящике, потому что это база для ручного тестировщика.
1️⃣ Эквивалентное разбиение (эквивалентные классы) ⚖️
🧩 Суть техники
Эквивалентное разбиение — это когда мы делим все возможные входные значения на группы (классы), внутри которых значения «ведут себя одинаково» для системы.
👉 Идея:
Если одно значение из класса ведёт себя правильно/неправильно — то остальные в этом классе, скорее всего, так же.
Поэтому нет смысла тестировать каждое число, каждую строку — достаточно выбрать по одному представителю из каждого класса.
💻 Как применять технику эквивалентных классов?
- Определить входные данные / параметры, которые хотим тестировать.
Например: возраст, сумма, дата, тип документа. - Для каждого параметра:
- Из каждого класса взять по 1–2 представителя и сделать на их основе тесты.
📌 Пример (простой)
Поле «Возраст»:
Допустим ввод: от 18 до 60 включительно.
- ❌ Класс 1: возраст < 18 (например, 10, 17)
- ✅ Класс 2: 18–60 (например, 20, 35, 60)
- ❌ Класс 3: возраст > 60 (например, 61, 99)
Для тестов мы не берём все числа, а выбираем по одному представителю:
- Тест 1: возраст = 17 (недопустимый, слишком маленький)
- Тест 2: возраст = 30 (допустимый)
- Тест 3: возраст = 65 (недопустимый, слишком большой)
🧠 Рекомендации по выделению классов
- Если входное условие — диапазон
Например: от 1 до 10
➜ 1 допустимый класс: 1–10
➜ 2 недопустимых: <1 и >10 - Если входное условие — набор значений
Например: статус ∈ {«новый», «в работе», «закрыт»}
➜ по 1 допустимому классу на каждое значение
➜ 1 общий недопустимый класс — всё остальное. - Если условие — «должно быть так-то»
Например: поле обязательно для заполнения
➜ 1 допустимый класс (поле заполнено корректно)
➜ 1 недопустимый (пустое/некорректное значение).
✅ В чём польза эквивалентных классов для тестировщика?
- Ты не перебираешь все возможные значения, а проверяешь только «представителей» классов.
- Покрываешь все важные случаи, не утопая в бесконечных вариациях.
- Экономишь время и выглядишь на собесе как человек, который умеет думать системно, а не просто «тыкать поля».
2️⃣ Анализ граничных значений (Boundary Values) 📏
🧩 Суть техники
Граница — это место, где система переходит:
- от «разрешено» к «запрещено»,
- от одной скидки к другой,
- от «стаж работы слишком маленький» к «достаточный».
Техника граничных значений говорит:
Больше всего багов — на границе.
Поэтому проверяй не только внутри диапазона, но и рядом с границами.
🔢 Что такое «ШАГ» и зачем он нужен?
Прежде чем применять технику, нужно понять:
👉 ШАГ — это минимальная разница между двумя соседними значениями.
- Если суммы в корзине идут по целым рублям → шаг = 1 рубль.
- Если цены могут быть с копейками → шаг = 0.01.
🍏 Пример с корзиной и скидками
🇷🇺 Российский интернет-магазин
Цены только в рублях, без копеек → шаг = 1 рубль.
Граница — 100 рублей. Значит тестируем:
🇧🇾 Белорусский интернет-магазин
Цены в рублях и копейках → шаг = 0.01.
👉 На собеседовании обязательно проговаривай шаг:
«Если шаг = 1 рубль, проверю 99, 100 и 101.
Если есть копейки, проверю 99.99, 100.00 и 100.01».
🧠 О чём гласит техника граничных значений?
Ошибки чаще всего живут на границах диапазонов.
Поэтому, кроме обычных значений, обязательно тестируй значения на границе и рядом с ней.
3️⃣ Попарное тестирование (Pairwise) 🤝
🧩 Что это вообще такое?
Попарное тестирование — это техника, которая помогает проверить все пары параметров, но не перебирать все комбинации целиком.
Когда у тебя много параметров (цвет, размер, тип доставки, способ оплаты и т.д.), количество всех комбинаций может быть огромным.
👉 Попарное тестирование говорит:
«Большинство багов проявляются при взаимодействии двух параметров.
Поэтому протестируем все пары комбинаций, а не полный перебор».
🧯 Когда применять попарное тестирование?
- Есть несколько параметров с несколькими вариантами (цвет, размер, тип товара, страна, способ доставки).
- Полный перебор комбинаций даёт десятки/сотни сценариев.
- Нужно:
- формы с множеством выпадающих списков;
- фильтры (каталог товаров);
- настройки, где пользователь может задавать разные комбинации параметров.
✅ В чём польза для тестировщика?
- 📉 Меньше тест-кейсов, чем при полном переборе.
- 📈 Больше покрытия, чем если «тыкать наугад».
- 💰 Экономия времени и ресурсов.
- 🔍 Часто позволяет найти баги, которые не видно одиночными проверками.
⚠️ Недостатки
- Не покрывает все сложные комбинации (например, когда баг возникает при одновременном сочетании 3+ параметров).
- Нужно грамотно выбрать параметры и их значения, иначе можно упустить важные случаи.
🛠 Инструмент для попарного тестирования
Есть удобный онлайн-сервис:
👉 https://pairwise.teremokgames.com
- Вбить:
- Нажать «сгенерировать».
- Получить короткий список сценариев, которые покрывают все пары параметров.
- сделать тестовый пример,
- сохранить набор сценариев,
- приложить файл или скриншот в свою карточку по учебному проекту.
4️⃣ Таблица переходов / схема состояний 🔄
🧩 Что такое схема переходов и состояний?
Схема переходов и состояний — это модель, которая показывает:
- «Создать» → из «Не создан» в «В разработке»
- «Утвердить» → из «В разработке» в «Утверждён»
- «Аннулировать» → из «Утверждён» в «Устаревший»
Техника «таблица переходов» позволяет:
- явно описать эти состояния и переходы,
- проверить, что невозможные переходы не происходят (например, сразу из «Не создан» в «Утверждён»).
5️⃣ Таблица принятия решений 🧾
🧩 Суть техники
Иногда система принимает решение на основе нескольких условий.
Например:
Таблица принятия решений помогает:
- выписать все важные условия,
- указать возможные комбинации «да/нет»,
- прописать, какое действие выполняется в каждой комбинации.
Это очень удобно, когда логика сложная и много веток.
6️⃣ Прогнозирование ошибок (Error Guessing) 🧙♀️
🧩 Что это такое?
Это техника, основанная на опыте тестировщика.
Тестировщик задаёт себе вопросы:
- «Где тут разработчик мог накосячить?»
- «В этом месте обычно забывают проверять пустые значения?»
- «В прошлых проектах в этих сценариях часто вылезали баги».
И специально делает тесты именно под эти предполагаемые слабые места.
7️⃣ Причинно-следственный анализ (Cause–Effect) 🧬
🧩 Суть техники
Мы рассматриваем систему как набор:
Найти связь:
«какие комбинации причин приводят к каким следствиям».
- Причина: логин и пароль введены правильно
➜ Следствие: пользователь авторизован - Причина: пароль неправильный
➜ Следствие: ошибка авторизации
- системно перебрать комбинации условий;
- понять, где не хватает проверки;
- увидеть, что некоторые комбинации не обработаны вообще.
8️⃣ Исследовательское тестирование 🕵️♀️
🧩 Что это такое?
Исследовательское тестирование — это когда ты:
- не следуешь заранее написанным тест-кейсам,
- а сам изучаешь систему «живьём»,
- строишь гипотезы,
- сразу же проверяешь их.
- используют, когда документа мало,
- или продукт сильно меняется,
- или нужно быстро «прощупать» новую фичу.
Но даже в исследовательском тестировании техники тест-дизайна всё равно в голове: ты всё равно мысленно используешь эквивалентные классы, границы, сценарии, переключаешь состояния и пр.
9️⃣ Небольшой конспект техник (как шпаргалка) 📚
- ⚖️ Эквивалентное разбиение
Делим входные данные на классы (валидные / невалидные) и берём по одному представителю из каждого. - 📏 Граничные значения
Проверяем значения на границах диапазона и рядом с ними.
Перед применением — обязательно определяем ШАГ. - 🌐 Доменный анализ
Разделение диапазона значений на поддиапазоны (домены) и выбор 1–2 значений из каждого для тестирования. - 🧙 Прогнозирование ошибок
Используем опыт и знание типичных багов, чтобы специально искать слабые места. - 🧬 Причина / следствие
Вводим условия → смотрим результаты → проверяем связи между ними. - 🎭 Use Case тестирование
Проверяем реальные пользовательские сценарии (истории, как пользователи взаимодействуют с системой). - 🧨 Исчерпывающее тестирование
Проверка всех комбинаций. В теории красиво, на практике почти нереально. - 🤝 Попарное тестирование (Pairwise)
Строим тесты так, чтобы все пары параметров встретились хотя бы раз.
Сильно сокращает количество тестов. - 🔄 Состояния и переходы
Моделируем, в каких состояниях может быть объект и как он переходит из одного в другое. - 🧾 Таблица принятия решений
Упорядочиваем сложную бизнес-логику с несколькими условиями и результатами в виде таблицы.
🧷 Главное, что должен вынести новичок
- Тест-дизайн — это не «страшная теория», а способ думать о тестах умно.
- Техники помогают:
- На собеседовании важно:
дополнительная информация тут:
https://youtu.be/7a7vGZqwtCA?si=4T6kTpEieVlMjiOB