2.2 Тест-дизайн. Принципы разработки тестов

Тест дизайн – это этап процесса тестирования ПО, на котором проектируются и создаются тестовые случаи (тест кейсы), в соответствии с определёнными ранее критериями качества и целями тестирования. Попросту говоря, задача тест сводится к тому, чтобы используя различные стратегии и техники тест дизайна, создать набор тестовых случаев, обеспечивающий оптимальную проверку тестируемого приложения.

Цели тест дизайна
  • Обеспечить покрытие функционала приложения тестами:
  • Тесты должны покрывать весь функционал
  • Тестов должно быть минимально достаточно
Тест дизайн задачи
  • Проанализировать требования к продукту
  • Оценить риски возможные при использовании продукта
  • Написать достаточное минимальное количество тестов
  • Разграничить тесты на приемочные, критические, расширенные
Техники тест-дизайна:


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

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

Классы эквивалентности выделяются путем выбора каждого входного условия (обычно это предложение или фраза в спецификации) и раз-биением его на две или более групп. Для проведения этой операции используют таблицу (смотри ниже).

 

Входные условия

Правильные классы

Неправильные классы

 

эквивалентности

эквивалентности

 

 

 

 

 

 

 



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

Алгоритм использования:
  1. Определить классы эквивалентности.
  2. Это главный шаг техники, т.к. во многом от него зависит эффективность её применения.
  3. Выбрать одного представителя от каждого класса эквивалентности.
  4. На этом этапе следует выбрать один тест из эквивалентного набора тестов.
  5. Выполнение тестов.
  6. На этом шаге следует выполнить тесты от каждого класса эквивалентности.
  7. Если есть время, можно протестировать еще несколько представителей от каждого класса эквивалентности. Следует иметь ввиду, при правильном определение классов эквивалентности дополнительные тесты скорее всего будут избыточными и дадут такой же результат.
Техника анализа граничных значений - это техника проверки поведения продукта на крайних (граничных) значениях входных данных. Граничное тестирование также может включать тесты, проверяющие поведение системы на входных данных, выходящих за допустимый диапазон значений. При этом система должна определённым (заранее оговоренным) способом обрабатывать такие ситуации. Например, с помощью исключительной ситуации или сообщения об ошибке.

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

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

Алгоритм использования техники граничных значений:
  1. Выделить классы эквивалентности;
  2. Как и в предыдущей технике, этот шаг является очень важным и от того, насколько правильным будет разбиение на классы эквивалентности, зависит эффективность тестов граничных значений.
  3. Определить граничные значения этих классов;
  4. Нужно понять, к какому классу будет относиться каждая граница;
  5. Нужно провести тесты по проверке значения до границы, на границе и сразу после границы.
Количество тестов для проверки граничных значений будет равен количеству границ, умноженному на 3. Рекомендуется проверять значения вплотную к границе. К примеру, есть диапазон целых чисел, граница находится в числе 100. Таким образом, будем проводить тесты с числом 99 (до границы), 100 (сама граница), 101 (после границы).

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

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

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

Пример 

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

Браузер Операционная система Язык
1 Opera Windows RU
2 Google Chrome Linux RU
3 Opera Linux EN
4 Google Chrome Windows EN

При составлении матрицы принятия решений для двух браузеров, двух ОС и двух языков было бы нужно 8 сценариев. При попарном тестировании достаточно четырех. 

Все это можно просчитать и вручную, но не обязательно – гораздо удобнее автоматизировать процесс. Для этого существует программа попарного независимого комбинированного тестирования – Pairwise Independent Combinatorial Testing (PICT).

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

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

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

Источники: