инженер по контролю качества программного обеспечения международная компания-разработчик программного обеспечения, «Yucca Digital», Беларусь, г. Витебск
ОСНОВНЫЕ КОМБИНАТОРНЫЕ МЕТОДЫ ГЕНЕРАЦИИ ПАРНЫХ ТЕСТОВЫХ НАБОРОВ
АННОТАЦИЯ
Цель данной статьи – рассмотреть основные комбинаторные методы генерации парных тестовых наборов, позволяющих сократить количество тестовых примеров за счет охвата всех возможных пар входных параметров. В статье описываются как традиционные методы (на основе исчерпывающего перечисления и генерации по порядку параметров), так и расширенные методы (методы генерации на основе обобщенного порядка по параметрам, обобщенного порядка по параметрам с учетом плотностей и обобщенного порядка по параметрам с локализацией дефектов). Также рассматриваются преимущества и недостатки некоторых из методов.
ABSTRACT
The purpose of this article is to consider fundamental combinatorial methods of pairwise software testing that help to reduce the number of test cases by covering all possible pairs of input parameters. The article describes both traditional methods (based on exhaustive enumeration and In-Parameter-Order generation) and advanced methods (In-Parameter-Order-Generalized, In-Parameter-Order-Generalized with Density and In-Parameter-Order-Generalized with Fault Localization). Also, the advantages and disadvantages of some of the methods are reviewed.
Ключевые слова: попарное тестирование, комбинаторный метод, генерация тестовых наборов, комбинация входные параметров, покрытие, исчерпывающее перечисление.
Keywords: pairwise testing, combinatorial method, test suite generation, input parameters combination, coverage, exhaustive enumeration.
Парное тестирование программного обеспечения – это метод, направленный на сокращение количества тестовых примеров, необходимых для охвата всех возможных взаимодействий между входными параметрами системы. Оно основано на предположении, что большинство ошибок вызвано одиночными или попарными взаимодействиями параметров и что взаимодействия более высокого порядка редки и дорогостоящи для тестирования. Парное тестирование может значительно улучшить охват тестированием и коэффициент обнаружения дефектов, одновременно сокращая время и бюджет, необходимые для тестирования. Существует множество методов для создания парного набора тестов. В этой статье рассмотрим основные комбинаторные методы генерации парных тестовых наборов.
Комбинаторные методы основаны на перечислении или генерации всех возможных комбинаций значений входных параметров, а затем выборе или фильтрации подмножества из них, удовлетворяющего критерию попарного покрытия [2]. Эти методы обладают такими преимуществами, как простота, универсальность или гибкость. В тоже время они имеют некоторые недостатки, к которым можно отнести неэффективность, избыточность или нерегулярность.
Один из наиболее популярных комбинаторных методов основан на исчерпывающем перечислении [3, с. 9]. Этот метод генерирует все возможные комбинации значений входных параметров, а затем проверяет каждую комбинацию, чтобы увидеть, охватывает ли она какую-либо новую пару значений, которая ранее не была охвачена. Если да, то комбинация добавляется в набор парных тестов; в противном случае она отбрасывается. Например, в следующей таблице (табл. 1) показан исчерпывающий процесс перечисления для четырех параметров (A, B, C, D), каждый из которых имеет три возможных значения (1, 2, 3).
Таблица 1.
Исчерпывающий процесс перечисления
A |
B |
C |
D |
Новая пара? |
Тестовый набор |
1 |
1 |
1 |
1 |
Yes |
TC1 |
1 |
1 |
1 |
2 |
Yes |
TC2 |
1 |
1 |
1 |
3 |
Yes |
TC3 |
1 |
1 |
2 |
1 |
Yes |
TC4 |
1 |
1 |
2 |
2 |
No |
- |
1 |
1 |
2 |
3 |
No |
- |
... |
... |
... |
... |
... |
... |
3 |
3 |
3 |
3 |
No |
- |
Преимущество использования исчерпывающего перечисления заключается в том, что с его помощью можно сгенерировать полный набор попарных тестов для любого количества входных параметров и значений. Однако недостатком является то, что в большинстве случаях оно очень неэффективно и избыточно, поскольку требует генерации и проверки большого количества комбинаций, которые не нужны для попарного покрытия. Поэтому были предложены некоторые улучшения или вариации исчерпывающего перечисления, чтобы уменьшить количество генерируемых или проверяемых комбинаций, таких как горизонтальный рост, вертикальный рост или гибридный рост.
Другой комбинаторный метод основан на генерации по порядку параметров (от англ. In-Parameter-Order) [4, с. 210]. Этот метод генерирует попарные тестовые наборы последовательным образом, добавляя по одному параметру за раз и расширяя существующие тестовые наборы новыми значениями. Например, в следующей таблице (табл. 2) показан процесс генерации для четырех параметров (A, B, C, D), каждый из которых имеет три возможных значения (1, 2, 3).
Таблица 2.
Процесс генерации
Шаг |
Параметр |
Тестовый набор |
Шаг 1 |
A |
TC1: A=1 |
Шаг 2 |
B |
TC2: A=1, B=1 |
|
|
TC3: A=2, B=2 |
|
|
TC4: A=3, B=3 |
Шаг 3 |
C |
TC5: A=1, B=1, C=1 |
|
|
TC6: A=2, B=2, C=2 |
|
|
TC7: A=3, B=3, C=3 |
|
|
TC8: A=1, B=2, C=3 |
|
|
TC9: A=2, B=3, C=1 |
|
|
TC10: A=3, B=1, C=2 |
Шаг 4 |
D |
TC11: A=1, B=1, C=1, D=1 |
...... |
|
|
Преимущество использования метода, основанного на генерации по порядку параметров, заключается в том, что он может генерировать минимальный набор попарных тестов с помощью простого и быстрого алгоритма. К недостаткам можно отнести генерацию нерегулярных или несбалансированных наборов тестов, которые не удовлетворяют некоторым желаемым свойствам, таким как однородность или симметрия. Поэтому для улучшения качества или разнообразия наборов тестов были предложены некоторые расширения или модификации поколения данного метода, такие как методы генерации на основе обобщенного порядка по параметрам (от англ. In-Parameter-Order-Generalized), обобщенного порядка по параметрам с учетом плотностей (от англ. In-Parameter-Order-Generalized with Density) и обобщенного порядка по параметрам с локализацией дефектов (от англ. In-Parameter-Order-Generalized with Fault Localization) [1, с. 3].
Список литературы:
- Balera, J., Santiago Júnior, V. An algorithm for combinatorial interaction testing: definitions and rigorous evaluations. – 2017.
- Kuhn, D. R. “Combinatorial Software Testing”, Computer (Long. Beach. Calif). 42(8). – 2009. – С. 94-96.
- Myers G.J., "The Art of Software Testing," John Wiley & Sons, Inc., Hoboken, NJ, USA. – 1979.
- Ostrand T.J., "Combinatorial Testing of ACTS: A Case Study," in Proceedings of the IEEE International Symposium on Software Reliability Engineering Workshops - ISSREW ’13, Pasadena, California: IEEE.