Modern QA2026Техники тест-дизайна
Join

Course11 Manual Testing Fundamentals

Foundations · Chapter 11

Техники тест-дизайна

Updated Jul 2026

Классические техники тест-дизайна преподаются с 1970-х годов и по-прежнему остаются основой разработки тест-кейсов. Каждый интервьюер ожидает, что вы их знаете, и каждый опытный QA-инженер применяет их — часто интуитивно — при выборе тест-кейсов для написания. Эти техники отвечают на вопрос: «Я не могу протестировать все возможные входные данные. Какие из них выбрать?»

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

Тестируйте на границах входных диапазонов, где концентрируются ошибки. Ошибки на единицу (off-by-one) — наиболее распространённый числовой баг в программном обеспечении, и BVA специально разработан для их выявления.

Принцип

Для любых входных данных с допустимым диапазоном тестируйте:

  • Значение непосредственно перед нижней границей (невалидное)
  • Саму нижнюю границу (валидное)
  • Значение сразу после нижней границы (валидное)
  • Значение непосредственно перед верхней границей (валидное)
  • Саму верхнюю границу (валидное)
  • Значение сразу после верхней границы (невалидное)

Пример: поле возраста (принимает 18-65)

Тестовое значение Ожидаемый результат Обоснование
17 Отклонено Непосредственно перед минимумом
18 Принято Нижняя граница
19 Принято Сразу после минимума
64 Принято Непосредственно перед максимумом
65 Принято Верхняя граница
66 Отклонено Сразу после максимума

Дополнительные границы для проверки

  • Ноль: принимает ли поле 0? А отрицательные числа?
  • Пустая строка и null: в большинстве систем это разные значения
  • Максимальная длина: для текстовых полей — что происходит при максимальной длине, максимальная длина + 1?
  • Пределы типов данных: переполнение целого числа (2 147 483 647 для 32-битного знакового int)
  • Граничные даты: конец месяца (28/29/30/31), границы года, високосные годы

BVA на практике

GIVEN a registration form with age field (valid range: 18-65)
WHEN  the user enters age = 17 and submits
THEN  the form shows validation error "Age must be between 18 and 65"

GIVEN a registration form with age field (valid range: 18-65)
WHEN  the user enters age = 18 and submits
THEN  the form accepts the input and proceeds to the next step

Эквивалентное разбиение (EP)

Разделите входные данные на группы (классы эквивалентности), в которых все значения должны обрабатываться одинаково. Протестируйте одно репрезентативное значение из каждого класса.

Принцип

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

Пример: то же поле возраста (18-65)

Класс Диапазон Репрезентативное значение Ожидаемый результат
Невалидное снизу < 18 10 Отклонено
Валидное 18-65 30 Принято
Невалидное сверху > 65 70 Отклонено

EP для нечисловых входных данных

Эквивалентное разбиение работает для любого типа входных данных:

Входные данные Валидные классы Невалидные классы
Поле email Корректный формат email (user@domain.com) Отсутствие @, отсутствие домена, пустая строка, только пробелы
Загрузка файла Допустимые форматы (.jpg, .png, .pdf) Недопустимые форматы (.exe, .bat), пустой файл, файл слишком большого размера
Выпадающий список стран Страны из списка (нельзя выбрать невалидное, но проверьте пустой выбор)
Поисковый запрос Буквенно-цифровые строки SQL-инъекции, XSS-полезные нагрузки, чрезмерно длинные строки

Сочетание EP и BVA

EP сокращает количество тестов. BVA уточняет выбор на границах классов. Используйте их вместе:

  1. Сначала определите классы эквивалентности с помощью EP
  2. Затем на границе каждого класса примените BVA

Для поля возраста: EP даёт три класса. BVA уточняет границы между классами до конкретных значений (17, 18, 65, 66).

Таблицы решений

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

Построение таблицы решений

  1. Перечислите все условия (входные данные/состояния)
  2. Перечислите все действия (выходные данные/поведение)
  3. Вычислите количество комбинаций: 2^n для n булевых условий
  4. Заполните ожидаемое действие для каждой комбинации
  5. Найдите правила, которые можно объединить (если условие не влияет на результат)

Пример: правила доставки

Условие Правило 1 Правило 2 Правило 3 Правило 4
Клиент премиальный? Д Д Н Н
Заказ > $100? Д Н Д Н
Действие: Бесплатная доставка Да Да Да Нет
Действие: Подарочная упаковка Да Нет Нет Нет

Эта таблица показывает, что Правило 3 (непремиальный клиент с крупным заказом) получает бесплатную доставку — это намеренно? Таблицы решений выявляют вопросы бизнес-логики, которые иначе могли бы остаться незамеченными.

Более сложный пример: одобрение кредита

Условие П1 П2 П3 П4 П5 П6 П7 П8
Кредитный рейтинг > 700? Д Д Д Д Н Н Н Н
Доход > $50K? Д Д Н Н Д Д Н Н
Существующий клиент? Д Н Д Н Д Н Д Н
Одобрить кредит Да Да Да Нет Да Нет Нет Нет
Процентная ставка Низкая Средняя Средняя - Средняя - - -

Из этой таблицы выведите один тест-кейс на каждое правило. Это обеспечит полное комбинаторное покрытие бизнес-логики.

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

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

Построение диаграммы

[Draft] --submit--> [Pending Review] --approve--> [Published]
                                      --reject---> [Draft]
[Published] --archive--> [Archived]
[Archived] --restore---> [Draft]

Выведение тест-кейсов

Из приведённой выше диаграммы выведите тест-кейсы для:

Допустимые переходы (позитивные тесты):

  • Draft -> Pending Review (submit)
  • Pending Review -> Published (approve)
  • Pending Review -> Draft (reject)
  • Published -> Archived (archive)
  • Archived -> Draft (restore)

Недопустимые переходы (негативные тесты):

  • Draft -> Published напрямую (должно быть заблокировано)
  • Archived -> Published напрямую (должен требоваться переход через Draft)
  • Published -> Draft (должно требоваться архивирование)
  • Pending Review -> Archived (должно быть заблокировано)

Циклы переходов:

  • Draft -> Pending -> Draft -> Pending -> Published (цикл отклонения работает корректно)

Покрытие состояний:

  • Каждое состояние достигается хотя бы один раз
  • Каждый переход выполняется хотя бы один раз

Табличный формат переходов состояний

Текущее состояние Событие Следующее состояние Действие
Draft Submit Pending Review Отправить уведомление рецензенту
Pending Review Approve Published Сделать видимым для публики
Pending Review Reject Draft Отправить причину отклонения автору
Published Archive Archived Убрать из публичного доступа
Archived Restore Draft Вернуть автору для редактирования

Попарное тестирование (дополнительная техника)

Когда у вас много входных параметров, тестирование всех комбинаций нереалистично. Попарное тестирование (также называемое all-pairs) гарантирует, что каждая пара значений параметров тестируется хотя бы один раз.

Пример

Тестирование веб-формы с параметрами: браузер (Chrome, Firefox, Safari), ОС (Windows, Mac, Linux), язык (EN, ES, FR).

Полный перебор: 3 x 3 x 3 = 27 тест-кейсов. Попарное тестирование: приблизительно 9 тест-кейсов покрывают каждую пару.

Инструменты, такие как PICT (Microsoft), AllPairs или онлайн-генераторы попарных комбинаций, создают оптимальный набор тестов.

Выбор подходящей техники

Ситуация Лучшая техника
Числовой ввод с определённым диапазоном BVA + EP
Несколько категорий входных данных EP
Бизнес-правила с комбинациями условий Таблицы решений
Функции с рабочим процессом или жизненным циклом Переходы состояний
Много параметров, каждый с небольшим числом значений Попарное тестирование
Неизученная область, нет чётких требований Исследовательское тестирование

На практике опытные QA-инженеры комбинируют эти техники. Для одной функции вы можете использовать EP для определения классов, BVA для выбора конкретных значений и таблицу решений для обработки комбинаций бизнес-правил.

Практическое упражнение

Вы тестируете систему скидок со следующими правилами:

  • Сотрудники получают скидку 20%
  • Заказы свыше $200 получают скидку 10%
  • Скидки не суммируются (скидка для сотрудников имеет приоритет)
  • Промокоды могут добавить ещё 5% (суммируется с любой из скидок)
  1. Постройте таблицу решений, охватывающую все комбинации условий
  2. Определите неоднозначные правила, которые выявляет таблица
  3. Напишите тест-кейсы для каждого правила в формате Given/When/Then
  4. Примените BVA к порогу $200 (тестируйте при $199.99, $200.00, $200.01)

Ключевые выводы

  • BVA выявляет ошибки на единицу на границах диапазонов
  • EP сокращает количество тестов путём группировки эквивалентных входных данных
  • Таблицы решений обеспечивают полное покрытие комбинаций бизнес-логики
  • Диаграммы переходов состояний проверяют допустимые пути и блокируют недопустимые
  • Комбинируйте техники для полного покрытия с минимальным количеством тестов