Стр: 245/301
2.7.4. Попарное тестирование и поиск комбинаций Уточним данное ранее
{95}
определение:
Попарное тестирование (pairwise testing
354
)
— техника тестирования, в
которой вместо проверки всех возможных комбинаций значений всех па-
раметров проверяются только комбинации значений каждой пары пара-
метров.
Выбрать и проверить пары значений — звучит вроде бы просто. Но как вы-
бирать такие пары? Существует несколько тесно взаимосвязанных математических
методов создания комбинаций всех пар:
•
на основе ортогональных массивов
355
,
359
;
•
на основе латинских квадратов
356
;
•
IPO (in parameter order)
метод
357
;
•
на основе генетических алгоритмов
358
;
•
на основе рекурсивных алгоритмов
359
.
Глубоко в основе этих методов лежит серьёзная математическая тео-
рия
359
.
В упрощённом виде на примерах суть и преимущества этого под-
хода показаны в книге Ли Коупленда
360
и статье Майкла Болтона
355
, а спра-
ведливая критика — в статье Джеймса Баха
361
.
Итак, суть проблемы: если мы попытаемся проверить все сочетания всех
значений всех параметров для более-менее сложного случая тестирования, мы по-
лучим количество тест-кейсов, превышающее все разумные пределы.
Если представить изображённую на рисунке 2.7.e схему в виде набора пара-
метров и количества их значений, получается ситуация, представленная таблицей
2.7.g.
Минимальное количество значений получено по принципу «расположение:
локально или в сети», «существование: да или нет», «семейство ОС: Windows или
Linux
» и т.д. Вероятное количество значений оценено исходя из необходимости
учитывать несколько классов эквивалентности. Количество значений с учётом пол-
ного перебора получено исходя из технических спецификаций операционных си-
стем, файловых систем и т.д. Значение нижней строки получено перемножением
значений в соответствующей колонке.
354
The answer is not to attempt to test all the combinations for all the values for all the variables but to test
all pairs of variables. [Lee
Copeland,
«A practitioner’s guide to software test design»]
355
«Pairwise Testing», Michael Bolton [
http://www.developsense.com/pairwiseTesting.html
]
356
«An Improved Test Generation Algorithm for Pair-Wise Testing», Soumen Maity and oth. [
https://citeseerx.ist.psu.edu/view-
doc/download?doi=10.1.1.147.2164&rep=rep1&type=pdf
]
357
«A Test Generation Strategy for Pairwise Testing», Kuo-Chung Tai, Yu Lei [
https://
citeseerx.ist.psu.edu/viewdoc/down-
load?doi=10.1.1.106.8350&rep=rep1&type=pdf
]
358
«Evolutionary Algorithm for Prioritized Pairwise Test Data Generation», Javier Ferrer and oth.
[
https://neo.lcc.uma.es/staff/javi/files/gecco12.pdf
]
359
«On the Construction of Orthogonal Arrays and Covering Arrays Using Permutation Groups», George Sherwood
[
http://testcover.com/pub/background/cover.htm
]
360
«A Practitioner's Guide to Software Test Design», Lee Copeland.
361
«Pairwise Testing: A Best Practice That Isn’t», James Bach [
http://citeseerx.ist.psu.edu/viewdoc/down-
load?doi=10.1.1.105.3811&rep=rep1&type=pdf
].