Как быть в ситуации, когда необходимо не просто протестировать продукт, а продукт с множеством взаимосвязанных входных данных? Здесь нам на помощь опять приходит тест-дизайн.
Сегодня мы поговорим об еще одной технике составления тестов — техника попарного тестирования (не путать с парным тестированием) или, как ее еще называют, Pairwise testing.
Эта техника используется, когда нам необходимо комбинировать очень много различный вариантов входных данных. Цель ее состоит в том, чтобы сократить количество полученных тестов, но при этом сохранить качественное покрытие.
По традиции приведу определение из ISTQB:
Попарное тестирование (pairwise testing) — разработка тестов методом черного ящика, в которой тестовые сценарии разрабатываются таким образом, чтобы выполнить все возможные отдельные комбинации каждой пары входных параметров.
Ее стоит использовать в том случае, когда входные данные связаны друг с другом. Точнее результат выполнения теста напрямую зависит от того, какие комбинации данных будут подаваться на входе.
Рассмотрим очень простой пример. Предположим, у нас есть форма с полями “Логин”, “Пароль” и кнопкой “Войти”.
![Форма с полями](https://sun9-21.userapi.com/impf/c848616/v848616692/1c1aeb/YoGS-hfYQfQ.jpg?size=472x244&quality=96&sign=2bc72b1f0bdf7bd65bf3539b38c743f8&type=album)
Каждое поле может принимать два значения: пустое и заполненное. В обычной ситуации, когда результат работы формы не зависит от того, какие именно комбинации полей подаются на вход, нам достаточно провести всего три теста
![Тесты при обычной ситуации](https://sun9-19.userapi.com/impf/c848616/v848616692/1c1af2/RpPUNMKfrBI.jpg?size=457x147&quality=96&sign=f31d11cf59d9304a5a4bd404a5127a05&type=album)
Т.е. мы в наших тестах проверяем отдельно работу каждого поля, не задумываясь о том, что различные комбинации Логина/Пароля могут сломать систему. Но что, если у нас добавляется еще и зависимость полей? Тогда нам необходимо рассмотреть все возможные комбинации значений между полей. Для нашего примера это означает, что добавится еще один тест.
![Тесты при добавлении взаимосвязей](https://sun9-55.userapi.com/impf/c848616/v848616692/1c1af9/USed4ehNszg.jpg?size=451x176&quality=96&sign=b27bf881029ea57394fd1dd1829d6231&type=album)
На первый взгляд выглядит достаточно просто, добавился всего один тест. Но давайте посмотрим на более реальном примере.
![Форма с полями](https://sun9-22.userapi.com/impf/c848616/v848616692/1c1b01/X2EGEsQxwAI.jpg?size=332x734&quality=96&sign=14d47e7a2bf40356f152c71a1b19c1d6&type=album)
Опять же, даже здесь немного упростим проверку и выделим только самые базовые значения.
![Выделим базовые значения](https://sun9-41.userapi.com/impf/c848616/v848616692/1c1b08/wLtkLHbi2NQ.jpg?size=595x129&quality=96&sign=7a442a7518091f00985733ee18afca57&type=album)
Таким образом общее количество тестов будет следующим: 2*2*2*2*2*2 = 64
![Тесты](https://sun9-48.userapi.com/impf/c848616/v848616692/1c1b18/k4He0uPylSw.jpg?size=604x349&quality=96&sign=e35312ff721df06a9a929d9adf8346dc&type=album)
Даже сейчас это большая цифра. Такое тестирование будет малоэффективным и потребует большое количество ресурсов. Вот здесь на помощь приходит техника попарного тестирования, которая позволяет сократить количество тестов во много раз.
Суть ее состоит в том, что мы берем только комбинации пар каждых значений, вместо комбинаций всех значений:
![Комбинации пар каждых значений](https://sun9-59.userapi.com/impf/c848616/v848616692/1c1b32/hVCEL_7v5hM.jpg?size=594x315&quality=96&sign=767b519009dcc117c7428af109303cdf&type=album)
Вручную комбинировать каждую пару нет необходимости. Существуют программы, которые позволяют это сделать автоматически, достаточно только указать параметры и значения. Например, PICT, либо онлайн генераторы https://pairwise.teremokgames.com и т.д.
В нашем случае, после комбинации тестов с помощью попарного тестирования мы сократили количество проверок до 4-х
![Итоговые тесты](https://sun9-61.userapi.com/impf/c848616/v848616692/1c1b4c/m88ol-6TXYE.jpg?size=740x195&quality=96&sign=d042b9c1eaf68632b274acd029bbd076&type=album)
В каждом тесте мы проверяем сразу несколько пар комбинаций: E-mail — Никнейм, Никнейм — Пароль, Условия — Символы, E-mail — Пароль и т.д.
***
Подведем итог. Если мы столкнулись с тестированием механики, которая предусматривает различные комбинации входных данных, то в сокращении числа тестов нам как раз и поможет техника попарного тестирования.
И не забывайте пользоваться программами, которые избавят вас от ручного комбинирования.
Превосходная статья! Довольно понятно описано, и теперь попарное тестирование уже не кажется страшным и не понятным.