Тест дизайн — это этап процесса тестирования ПО, на котором проектируются и создаются тестовые случаи (тест-кейсы).


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

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

Метод эквивалентного разделения позволяет минимизировать число тестов, не создавая сценарий для каждого возможного значения, а выбрав только одно значение из целого класса и приняв за аксиому, что для всех значений в данной группе результат будет аналогичным.
Например, мы тестируем функциональность приложения, позволяющего покупать авиабилеты онлайн.
Стоимость билета будет зависеть от возраста пассажира, так как дети, студенты и пенсионеры относятся ко льготным категориям.
У нас есть четыре возрастных группы:
младше 15 лет,
от 15 до 25 лет,
старше 25 и младше 60 лет
и люди старше 60.
При этом, в поле для ввода возраста помещается всего два символа, поэтому указать возраст более 99 лет технически невозможно.
Тестировщику не нужно писать 99 тестов для каждого возраста, хватит пяти:
по одному для каждой возрастной группы (скажем, 10, 18, 35 и 75 лет)
и один для случая, если возраст человека превышает 99 лет. Да, последний тест на практике невыполним (поскольку в поле возраста невозможно ввести более двух знаков), и все же не следует забывать об этой проверке.

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

Техника граничных значений основана на предположении, что большинство ошибок может возникнуть на границах эквивалентных классов. Она тесно связана с вышеописанной техникой эквивалентного разделения, из-за чего часто используется с ней в паре.
Тогда для примера из предыдущего пункта границами будут являться значения 0, 15, 25, 60 и 99.
Граничными значениями будут 0, 1, 14, 15, 16, 24, 25, 26, 59, 60, 61, 98, 99, 100.
Анализ граничный значений и эквивалентное разделение может быть применен к полям, записям, файлам, или к любого рода сущностям, имеющим ограничения.

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

Используя свои знания о системе, тестировщик может «предугадать», при каких входных условиях есть риск ошибок. Для этого важно иметь опыт, хорошо знать продукт и уметь выстроить коммуникации с коллегами.
Например, в спецификации указано, что поле возраст должно принимать два символа.

В числе возможных тестов:
- Что произойдёт, если не ввести возраст?
- Что произойдёт, если ввести отрицательный возраст, например, - 9?
- Что произойдёт, если ввести не цифры, а другие символы?
- Что произойдёт, если ввести цифру и другой символ?
- Что произойдёт, если попытаться ввести не две цифры, а другое
количество?

Исчерпывающее тестирование.

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

Матрица соответствия требованиям.

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

Таким образом, таблица дает визуальное отображение двух параметров:
- наличие в системе требований, которые еще не покрыты(если у требования нет ни одного пересечения с тест-кейсами);
- есть ли в системе избыточное тестирование — если требования имеет несколько пересечений(необходимое условие).

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

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

Главные цели попарного тестирования:
- убрать избыточные проверки;
- обеспечить хорошее тестовое покрытие;
- выявить наибольшее количество багов на минимальном наборе тестов.

Допустим, какое-то значение (например, налог) для человека рассчитывается на основании его пола, возраста и наличия детей – получаем три входных параметра, для каждого из которых для тестов выбираем любое из возможных значений.
Например:
пол – мужской или женский;
возраст – до 25, от 25 до 60, более 60;
наличие детей – да или нет.
Для проверки правильности расчетов можно, конечно, перебрать все комбинации значений всех параметров:

А можно решить, что не нужно проверять сочетания значений всех параметров со всеми, а только убедиться, что проверятся все уникальные пары значений параметров.
Например, с точки зрения параметров пола и возраста нужно убедиться, что точно проверим мужчину до 25, мужчину между 25 и 60, мужчину после 60, а также женщину до 25, женщину между 25 и 60, также женщину после 60.
И точно так же для всех остальных пар параметров.
И таким образом, можем получить гораздо меньше наборов значений: