Что такое pairwise testing
Что проверяют
Умеете ли вы обосновать сокращение набора тестов расчётом, а не ощущением, и знаете ли, как получить такой набор программно, вместо того чтобы выписывать комбинации руками.
Как отвечать
Pairwise, он же all-pairs, это критерий покрытия: для любой пары параметров каждое сочетание их значений встречается хотя бы в одном тесте. Метод опирается на наблюдение, что подавляющее большинство дефектов вызывается одним значением или взаимодействием двух параметров, а тройные срабатывают редко.
Выигрыш виден на счёте. Три параметра по два значения дают восемь полных комбинаций и четыре теста pairwise; десять двоичных параметров дают больше тысячи комбинаций и меньше десятка тестов. Полный перебор растёт произведением мощностей, покрывающий набор примерно логарифмически по числу параметров.
Набор генерируют инструментом и подставляют в параметризацию:
from allpairspy import AllPairs
matrix = [["chrome", "firefox"], ["ru", "en"], ["free", "pro"]]
cases = [tuple(row) for row in AllPairs(matrix)]Тот же набор даёт PICT, а в pytest он уходит в parametrize. Сильный ответ упомянет ограничения на недопустимые сочетания и обязательные комбинации, которые добавляются к сгенерированному набору отдельно.
Где спотыкаются
Продают pairwise как гарантию. Он покрывает пары, а дефекты от взаимодействия трёх и более условий остаются, поэтому критичные для бизнеса сочетания задают явно и добавляют к результату генератора.
Скармливают генератору сырые параметры с огромными доменами. Сначала классы эквивалентности и границы, иначе набор выйдет не меньше исходного, зато с ложным ощущением метода.
Не описывают запрещённые сочетания. Генератор честно выдаёт тест, который система не принимает, тот падает не по вине продукта, набор начинают править руками, и покрытие пар тихо рассыпается.