Тестирование всех пар
Тестирование всех пар, также парное тестирование, — это комбинаторный метод тестирования программного обеспечения, при котором для каждой пары входных параметров системы (обычно программного алгоритма) выполняются все возможные дискретные комбинации этих параметров. Используя специально подобранные тестовые векторы, такой подход позволяет существенно сократить число испытаний по сравнению с полным перебором всех комбинаций входных данных, так как тесты параметрических пар могут проводиться параллельно[1].
Обоснование
В большинстве случаев ошибки в программе возникают из-за одного входного параметра или взаимодействия между двумя параметрами[2]. Ошибки, связанные с взаимодействием трёх и более параметров, встречаются значительно реже[3] и намного труднее выявляются, а исчерпывающее тестирование всех возможных сочетаний стремится к экспоненциальному росту числа тестов[4]. Таким образом, комбинаторные методы выбора тестовых случаев — такие, как тестирование всех пар — представляют собой полезный компромисс между стоимостью и результативностью, существенно сокращая количество тестов без критичной потери полноты проверки функций[5].
Более формально, если тестовый случай имеет параметров, заданных в множестве , а область значений для каждого параметра задаётся как при , то количество всех возможных комбинаций равно . Если предположить, что проверка кода учитывает только пары параметров, общее число тестовых случаев значительно сокращается.
Например, пусть есть параметры X, Y и Z. Можно рассматривать предикат третьего порядка, принимающий все три параметра, или же альтернативно три предиката второго порядка . Запись показывает, что если код построен на условиях, зависящих от пар параметров, тогда множество возможных значений может быть мультимножеством, поскольку разные параметры могут принимать одинаковое число значений.
Если — это максимум мультимножества , то число парных тестовых случаев для такой функции будет:
Таким образом, если и , то количество парных тестов обычно составляет O(nm), где n и m — наибольшее и второе по величине число вариантов параметров, что значительно меньше количества полных комбинаций .
N-мерное тестирование
N-мерное тестирование (англ. N-wise testing) рассматривается как обобщение парного тестирования.
Суть метода — упорядочить множество , чтобы и параметры следовали этому порядку. Пусть отсортированное множество — это -кортеж:
Тогда множество соответствует парному тестированию, — тройному тестированию и т.д. В общем случае означает T-мерное (T-wise) тестирование.
N-мерное тестирование охватывает все комбинации, полученные по данной формуле.
Пример
Рассмотрим параметры, приведённые в таблице:
| Название параметра | Значение 1 | Значение 2 | Значение 3 | Значение 4 |
|---|---|---|---|---|
| Включено | Истина | Ложь | — | — |
| Тип выбора | 1 | 2 | 3 | — |
| Категория | a | b | c | d |
Для параметров 'Включено', 'Тип выбора' и 'Категория' диапазон составляет соответственно 2, 3 и 4 значения. Полное тестирование охватило бы 24 случая (2 × 3 × 4). Умножив два наибольших значения (3 и 4), получаем что для парного тестирования потребуется 12 проверок. Примеры тестовых случаев, сгенерированных с помощью инструмента «pict» от Microsoft, приведены ниже:
| Включено | Тип выбора | Категория |
|---|---|---|
| Истина | 3 | a |
| Истина | 1 | d |
| Ложь | 1 | c |
| Ложь | 2 | d |
| Истина | 2 | c |
| Ложь | 2 | a |
| Ложь | 1 | a |
| Ложь | 3 | b |
| Истина | 2 | b |
| Истина | 3 | d |
| Ложь | 3 | c |
| Истина | 1 | b |
Примечания
Литература
- Black, Rex. Pragmatic Software Testing: Becoming an Effective and Efficient Test Professional : [англ.]. — New York : John Wiley & Sons, 2007. — ISBN 978-0-470-12790-2.
- Kuhn, D. Richard; Kacker, Raghu N. & Yu Lei (октябрь 2010), Practical Combinatorial Testing. SP 800-142., National Institute of Standards and Technology, DOI 10.6028/NIST.SP.800-142.
- Kuhn, D. Richard; Wallace, Dolores R.; Gallo, Albert M. Jr. (июнь 2004). “Software Fault Interactions and Implications for Software Testing” (PDF). IEEE Transactions on Software Engineering [англ.]. 30 (6): 418—421. DOI:10.1109/TSE.2004.24. Проверьте дату в
|date=(справка на английском)