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

Рассмотрим на примерах. Есть сайт для заказа продуктов. При заказе продуктов нам надо на сайте указать определённые данные:

Попарное тестирование - Pairwise testing

Сколько в нашем случае будет тестов, если связать всё со всем? Региона доставки – 3 шт., способов оплаты – 3 шт., скидок – 3 шт. Перемножаем всё: 3 * 3 * 3 = 27.

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

Попарное тестирование - Pairwise testing

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

К примеру, есть регион доставки «Город 1». Нам необходимо создать тест, чтобы при проведении тестирования с этим регионом доставки было задействовано любое одно значение из способа оплаты и любое одно значение из скидки:

Попарное тестирование - Pairwise testing

Другие тесты с регионом доставки «Город 1», со способом оплаты «кредитная карта» и со скидкой «нет» не нужно создавать, так как они уже задействованы в одном из тестов. В следующем тесте необходимо задействовать другие значения параметров:

Попарное тестирование - Pairwise testing

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

Попарное тестирование - Pairwise testing

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

  • Оформить доставку продуктов выбрав регион доставки «Город 1», способ оплаты «кредитная карта», скидка «нет» (отсутствует скидка). Результат: доставка продуктов оформлена.
  • Оформить доставку продуктов выбрав регион доставки «Город 2», способ оплаты «наличные при доставке», скидка «5%». Результат: доставка продуктов оформлена.
  • Оформить доставку продуктов выбрав регион доставки «Город 3», способ оплаты «накопленными баллами», скидка «10%». Результат: доставка продуктов оформлена.

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

В ходе проведения исследовательских работ мной была выявлена определённая закономерность, которая стала теоремой. Она говорит о том, что конечное количество тестов в попарном тестировании определяется параметром с наибольшим количеством значений.

Теорема Захарова о максимальном параметре в попарном тестировании

Теорема

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

Если P1, P2, …, Pn — параметры с множествами значений K1, K2, …, Kn​, то минимальное количество тестов равно max⁡(K1, K2, …, Kn).

Доказательство

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

Пусть у нас есть n параметров, каждый из которых имеет определённое количество значений:

  • Параметр P1​ имеет K1 значений.
  • Параметр P2​ имеет K2​ значений.
  • Параметр Pn​ имеет Kn​ значений.

Обозначим Kmax = max⁡(K1, K2, …, Kn) — максимальное количество значений среди всех параметров.

Чтобы покрыть все пары значений параметров, необходимо:

  • Для каждого значения параметра с Kmax​ создать хотя бы один тест, в котором это значение сочетается с значением всех остальных параметров.
  • Поскольку каждое значение параметра с Kmax​ должно быть проверено хотя бы один раз, минимальное количество тестов не может быть меньше Kmax.

Рассмотрим пример с тремя параметрами:

  • Параметр P1 (Регион доставки): 3 значения (Город 1, Город 2, Город 3, Город 4).
  • Параметр P2​ (Способ оплаты): 3 значения (Кредитная карта, Наличные при доставке, Накопленными баллами).
  • Параметр P3 (Скидка): 3 значения (Нет, 5%, 10%).

Здесь Kmax = 4. Согласно теореме, минимальное количество тестов равно 4, так как максимальное количество значений у одного из параметров равно 4.

Для покрытия всех парных комбинаций достаточно 3 тестов:

  1. Тест 1: Город 1, Кредитная карта, Нет.
  2. Тест 2: Город 2, Наличные при доставке, 5%.
  3. Тест 3: Город 3, Накопленными баллами, 10%.
  4. Тест 3: Город 4, Накопленными баллами, 10%.

Эти тесты покрывают все пары значений:

  • Каждое значение региона доставки сочетается с каждым значением способа оплаты и скидки.
  • Каждое значение способа оплаты сочетается с каждым значением региона доставки и скидки.
  • Каждое значение скидки сочетается с каждым значением региона доставки и способа оплаты.

Для произвольного числа параметров:

  • Если Kmax​ — максимальное количество значений одного из параметров среди всех параметров, то минимальное количество тестов равно Kmax.
  • Это следует из того, что каждое значение параметра с Kmax​ должно быть проверено хотя бы один раз, и это значение должно сочетаться минимум с одним значением всех остальных параметров.

Таким образом, количество тестов в попарном тестировании определяется параметром с наибольшим количеством значений (Kmax​). Это значение задаёт нижнюю границу для минимального числа тестов, необходимых для покрытия всех парных комбинаций.

Постскриптум

Если вы хотите подробно узнать о других методах проектирования тестов, то прочтите книгу «Тестирование программного обеспечения. Основы», где мной подробно описан двадцать один метод проектирования тестов