测试经验谈之组合测试探讨

一、测试背景

       《微软的软件测试之道》建议从两因素组合测试开始,逐渐提高组合维度,直至6因素组合测试,因为有研究表明6因素组合测试可以发现绝大多数的程序缺陷。但是,随着组合维度的提高,测试用例数呈爆炸式增长。假设有N个因素,每个因素均有M个因子,所有的测试用例数=M的N次方。

        举一个实际的例子,曾经测试过一个业务筛选类接口,总共涉及50+个因素的筛选,每个因素的值有1~300+,如果要进行所有的组合测试,测试用例数太过庞大了,根本无法执行。即便仅仅从每个因素中取2个值,涉及的用例个数=2的50次方,这是不可能实现的测试覆盖。

         需要若干因素排列组合来设计测试用例,是项目测试中比较常见的方式。但是显然完全的排列组合来设计测试用例,虽然可以达到覆盖度,但显然可实施性不高。那么该如何设计测试用例,来测试呢

二、组合测试方法

        1)使用条件:当输入条件过多,覆盖样例太大时,为了有效的、合理的减少输入条件的组合数,组合测试能够简化问题大大减少组合数。   

        2)局限性:只是减少在仅有太多的测试事例处理的情况下的测试用例输入数目。 成对测试设置的生成不会创建测试用例预期的结果。

         3)定义

         成对测试(Pairwise Testing)又称结对测试、两两测试,是一种正交分析的测试技术。成对组合覆盖这一概念是Mandl于1985年在测试Aad编译程序时提出来的。是当不可能遍历产品所有功能点时用到的一种测试手段,即如果用尽可能少的工作发现最多的缺陷(测试投入产出性价比)。

        经验证,Cohen等人应用成对组合覆盖测试技术对Unix中的“Sort”命令进行了测试。测试结果表明覆盖率高达90%以上,可见成对成对测试是一种非常有效的测试用例设计方法。

         成对组合覆盖要求任意两个因素(输入条件)的所有水平组合至少要被覆盖1次。实现成对组合覆盖的算法工具有很多,其中微软的PICT就是其中一个。

           4)具体实施工具

pict的使用使用

           5)正交方法设计测试用例

具体的例子很多:例子1、例子2、例子3   

三、组合测试的实践

           有句古话:尽信书则不如无书。这里套用一下,尽信方法则不如无方法。组合参数场景的测试用例设计,必须结合业务实际需要来组合参数,否则设计的测试用例必定“漏洞百出”。这里总结几条实践的经验:

  • 通过增加约束条件来进一步减少用例的数量。比如,组合在一起没有实际意义的因素;
  • 充分考虑业务上需要来进步一补充/减少测试用例数量。比如,业务上用户如何使用,异常条件下因素如何组织等;
  • 从易用性、用户习惯等等层面考虑组合涉及的因素是否合理,能否合理组织/或削减

 

           通常测试人员是产品的第一个用户。组合测试的核心,除了本身的功能实现外,另一个重要的关注点在于目前的实现能否方便用户快速、便捷实现某种条件的查询。凡事违背此原则的实现,可能都需要重新考虑产品的易用性方面问题了。

参考:

https://www.bbsmax.com/A/D854eANxdE/

 

 

你可能感兴趣的:(【测试】系列,【团队】建设,【产品】思维,【测试】前沿)