COMBINATORIAL TESTING

-Test note of “Essential Software Test Design”

2015-09-06

Content

16.1 Coverage
16.2 Combination Strategies
16.3 Input Parameter Modeling
  16.3.1 Structural Input Parameter Modeling
  16.3.2 Functional Input Parameter Modeling
16.4 Conflicts in the Input Parameter Model
16.5 Tools

The aim of combinatorial testing is to provide a solution to combinatorial explosion.

Example:

1. To illustrate combinatorial explosion during test case selection, consider testing the «classical» function triangle(side1, side2, side3).

2. Combinatorial explosion during configuration identification occurs in a similar manner. Consider testing (a part of) a Web based system which should support several:

  • Different operating systems (Windows, MacOS, Unix, Linux),
  • Different browsers (2 versions of Internet Explorer),
  • Different types of data connections (modem, three ADSL speeds, and fiber optical connection).

Figure 16:1: Input parameter model of triangle example.

16.1 Coverage


Top

The ability to vary coverage is a central concept in combinatorial testing. Higher coverage will give you better test quality but also more test cases/configurations. Figure 16:2 shows a subsumption hierarchy of the most commonly used coverage criteria used in combinatorial testing. A coverage criterion X subsumes another coverage criterion Y if and only if 100% coverage with respect to X automatically results in 100 % coverage with respect to Y. Subsumption is indicted in the figure by arrows.

Figure 16:2: Subsumption hierarchy for combination strategy coverage criteria

The simplest form of coverage used in combinatorial testing is 1-wise coverage. It requires each parameter value of every parameter to be included in at least one combination. Figure 16:3 shows a set of combinations that satisfies 1-wise coverage with respect to the model of the triangle problem in Figure 16:1.

Figure 16:3: 1-wise coverage of the triangle example.

A natural extension of 1-wise coverage is 2-wise (pair-wise) coverage. It requires every subcombination of values of any two (pair) of parameters to be included in the set of combinations.

Figure 16:4: 2-wise coverage of the triangle example.

Usually test cases containing more than one invalid value are less effective in detecting faults. The main reason is that code for error handling generally checks the input values one at a time and as soon as the first invalid input value is found the error handler is invoked and the execution is terminated.

Figure 16:6: 2-wise valid coverage of the triangle example.

Figure 16:7: Single error coverage of the triangle example.

The final coverage criterion included in the subsumption hierarchy in Figure 16:2 is called base choice coverage.

  • The first step to satisfy base choice coverage is to identify a base combination. The base combination consists of the base values of each parameter.
  • The tester is free to pick any value as the base value but it is recommended to pick the valid value that is most often used.
  • From the base combination new combinations are derived by altering the values of one parameter at a time such that each value of that parameter is included in at least one combination while keeping the rest of the parameters fixed in their base values.

Figure 16:8 shows a set of combinations that satisfy base choice coverage under the assumption that the base combination is <A2, B2, C2>.

Figure 16:8: Base choice coverage of the triangle example.

16.2 Combination Strategies


Top

Combination strategies are algorithms that select a set of combinations from an input parameter model, such that the selected set of combinations satisfy some coverage criterion. A goal with most combination strategies is to keep the set of combinations as small as possible. This goal is relatively easy to fulfill for simple coverage criteria, such as:

  • 1-wise,
  • base choice,
  • single error,
  • 1-wise valid.

In fact, for all of these coverage criteria it is possible to find minimal sets of combinations. In contrast, for the more complex coverage criteria, such as 2-wise, 2-wise valid and higher, the problem of finding a minimal set of combinations that satisfy the coverage criterion is more difficult.

More than 20 combination strategies exist. Some of the more known are Each Choice (EC) that satisfies 1-wise coverage, Base Choice (BC) that satisfies base choice coverage, Automatic Efficient Test Generator (AETG) ESSENTIAL SOFTWARE TEST DESIGN that satisfies t-wise coverage for t ≥ 2, and Orthogonal Arrays (OA) and In Parameter Order (IPO), both satisfying 2-wise coverage.

16.3 Input Parameter Modeling


Top

One of the key success factors of combinatorial testing is input parameter modeling. In most cases it is possible to define several different models for the same test problem. The contents of the model have a direct impact on the quality of the test cases.

Figure 16:9: Alternative input parameter model for the triangle problem.

16.3.1 Structural Input Parameter Modeling

In structural input parameter modeling, the parameters in the interface of the test object are mapped one-to-one onto parameters in the input parameter model.

The main advantage with the structured approach is that it is a simple task to create the input parameter model.

The drawback with the structural approach is that there are no guarantees that the resulting test cases will take all aspects of the functionality of the test object into account.

16.3.2 Functional Input Parameter Modeling

In functional input parameter modeling it is not necessary to consider each input parameter in isolation and we are not restricted to only include properties of the input parameters in the model. Instead we can model aspects of the functionality and possibly the state of the test object.

The major advantage with the functional approach is that it generally results in test cases with higher quality than test cases from a structural model.

The two drawbacks are that it may be difficult to identify the input parameter model parameters and it may be difficult to translate a combination into actual inputs of the test case since the values of more than one parameter may affect the same input parameter.

16.4 Conflicts in the Input Parameter Model


Top

Input parameter modeling sometimes result in models in which some of the sub-combinations are strange or even meaningless. Any impossible or semantically meaningless subcombination is called a conflict. As an example consider the model in Figure 16:9. The meaning of the sub-combination <A3, B1> is unclear.

Figure 16:10: The steps to replace conflicting combinations while preserving coverage. Conflicts marked in bold.

16.5 Tools


Top

When deciding on tools there are several properties to look for:

  1. Which coverage criteria are supported by the tool.
  2. To what extent can the tool handle confl icts in the input parameter model?
  3. Does the tool support predefi ned combinations?
  4. Can the tool export its results in any known format?
  5. What infrastructure does the tool require?
  6. What does the tool cost?

combinatorial testing, which contains, among other things links to more than 20 different tool suppliers.

PICT is a free Perl-based tool from Microsoft supporting t-wise coverage as well as 2-wise valid coverage, single error coverage, and variable strength coverage. It supports conflicts and pre-selection of test cases. Despite the rather crude user interface this is probably the most powerful tool at the moment.

Telcordia offers a Web commercial, based service in which the user enters an input parameter model in a Web interface and a resulting set of combinations is returned to the user. This service is based on the AETG combination strategy, which means that there is support for t-wise testing for t≥2. There is also support for handling conflicts in the input parameter model.

COMBINATORIAL TESTING的更多相关文章

  1. pict(Pairwise Independent Combinatorial Testing)工具使用

    PICT工具就是在微软公司内部使用的一款成对组合的命令行生成工具,现在已经对外提供,可以在互联网上下载到. 要把输入类型和其对应的参数输入到一个CSV格式(CSV: 以逗号分割的纯文本文件,不带有任何 ...

  2. 组合测试(Combinatorial Test)/配对测试 (pairwise)

    组合测试方法:配对测试实践 实施组合测试 常用的Pairwise工具集:http://www.pairwise.org/tools.asp 成对测试(Pairwise Testing)又称结对测试.两 ...

  3. Pair Testing

    All-Pairs Testing is a test design method to deal with the combinatorics problem of defining test ca ...

  4. 用例设计工具PICT — 输入组合覆盖

    1 成对测试简介 成对测试(Pairwise Testing)又称结对测试.两两测试,是一种正交分析的测试技术.成对组合覆盖这一概念是Mandl于1985年在测试Aad编译程序时提出来的.是当不可能遍 ...

  5. 两两组合覆盖测试用例设计工具:PICT

    两两组合覆盖测试用例设计工具:PICT 2016-08-31 目录 1 成对测试简介2 PICT使用  2.1 安装 PICT  2.2 使用PICT3 PICT算法  3.1 准备阶段  3.2 产 ...

  6. PICT实现组合测试用例(一)

    最近阅读了史亮老师的<软件测试实战:微软技术专家经验总结>一书,其中“测试建模”一章让我受益匪浅.想想以前的测试有多久没有花过心思放在测试用例的设计上了,一直强调“测试思想”的培养也都只是 ...

  7. PICT实现组合测试用例(二)

    上次简单总结了PICT命令的一些用法,这次重新把<软件测试实战>里面有关这一章的内容再总结一次,以巩固理解. 组合测试的概念 组合测试(combinatorial testing)是一种测 ...

  8. Content of "Essential Software Test Design"

    Content of "Essential Software Test Design" 2015-11-16 PART I 7 TEST DESIGN TECHNIQUES: AN ...

  9. 组合覆盖与PICT的使用

    组合覆盖法是一种有效减少测试用例个数的测试用例设计方法.根据覆盖程度的不同,可以分为单因素覆盖.成对组合覆盖.三三组合覆盖等.其中又以成对组合覆盖最常用. 关于组合覆盖的更多内容,参考:http:// ...

随机推荐

  1. hdu 2005 求第几天(水题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2005 转载于:https://blog.csdn.net/tigerisland45/article/ ...

  2. MXNet 中的 hybird_forward 的一个使用技巧

    from mxnet.gluon import nn from mxnet import nd class SliceLike(nn.HybridBlock): def __init__(self, ...

  3. hql查询后释放内存

    Session session=getSession(); //进行session查询,取得前16个数据 Query q=session.createQuery(hql).setFirstResult ...

  4. web开发 入门

    插件 ,索引文件,js目录,视图目录,资产目录,css目录,数据目录,font-awesome-4.7.0目录,图像目录. 引导程序 框架.字体.layer,mockjs.paging分页.树网格.t ...

  5. BZOJ.4767.两双手(组合 容斥 DP)

    题目链接 \(Description\) 棋盘上\((0,0)\)处有一个棋子.棋子只有两种走法,分别对应向量\((A_x,A_y),(B_x,B_y)\).同时棋盘上有\(n\)个障碍点\((x_i ...

  6. full GC触发的条件

    full GC触发的条件除直接调用System.gc外,触发Full GC执行的情况有如下四种.1. 旧生代空间不足旧生代空间只有在新生代对象转入及创建为大对象.大数组时才会出现不足的现象,当执行Fu ...

  7. Monte Carlo计算Pi,python实现

    Monte Carlo import random import matplotlib.pyplot as plt import numpy as np 6 # 函数模拟点的随机掉落,并分为两组 de ...

  8. java字符串反转

    1.递归反转 public static String reverseString(String x) { if (x == null || x.length() < 2) return x; ...

  9. 图文并茂 —— 基于Oozie调度Sqoop

    利用大数据来做BI分析的时候,必不可少需要设置一些调度任务. 本篇就讲述一下如何利用hue来编辑shell操作,这里面的很多操作在其他的调度操作里面也是可以借鉴的. 如果是linux里面可以直接执行的 ...

  10. android: LayoutInflater使用

    1. 题外话 相信大家对LayoutInflate都不陌生,特别在ListView的Adapter的getView方法中基本都会出现,使用inflate方法去加载一个布局,用于ListView的每个I ...