
啊胡
2022/09/06阅读:62主题:绿意
黑盒测试之 正交试验法
实践是检验真理的唯一标准,学而不用假把式。
是什么(What)
利用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到,由于因果关系一般非常庞大,以至于据此因果图而得到的测试用例数目非常大,给软件测试带来沉重的负担。
为了有效地、合理地减少测试的工时与费用,可利用正交试验法
进行测试用例的设计。正交试验法是依据近代代数中的伽罗瓦(Galois)理论,从大量的(实验)数据(测试用例)中挑选适量的、有代表性的点(用例),从而合理地安排试验(测试)的一种科学试验设计方法。
类似的方法有聚类分析方法、因子方法等。正交试验法常使用下面2个术语。
• 因子:影响实验指标的条件称为因子。
• 因子的状态:影响实现因子的条件。
正交试验法的步骤(How)
利用正交试验法设计测试用例的步骤如下。
① 提取功能说明,构造因子-状态表
利用正交试验法来设计测试用例时,首先要根据被测试软件的规格说明书找出影响其功能实现的操作对象和外部因素,把它们当作因子
,而把各个因子的取值当作状态
。
首先对软件需求规格说明中的功能要求进行划分,把整体的、概要性的功能要求进行层层分解与展开,分解成具体的有相对独立性的基本的功能要求,这样就可以把被测试软件中所有的因子都确定下来,并为确定的因子的权值提供参考的依据。
确定因子与状态是设计测试用例的关键,因此要求尽可能全面地、正确地确定取值,以确保测试用例的设计做到完整与有效。
② 加权筛选
,生成因素分析表对因子与状态的选择可按其重要程度分别加权。可根据各个因子及状态的作用大小、出现频率的大小以及测试的需要,确定权值的大小。
③ 利用正交表
构造测试数据集正交表的推导过程依据Galois理论实现,可在一般数理统计方面的书籍查阅到相应的正交表。
在正交表中,每列表示一个因子,每行表示一个项目,当因素分析表中的因子数确定下来后,相应的正交表就可以确定了。
实战(Do)
【例】:用调查列表页存在一个搜索框,共有4个搜索项,每个搜索项有多个取值,如下:
-
性别:男、女 -
年龄:0-18、18-30、30-50、50+ -
终端:APP、小程序、H5 -
频率:0-100、100-1000、1000+
如何按照正常步骤进行,需要2*4*3*3=72种组合,就需要72个测试用例,针对这种组合量比较大的情况,如何采用最少的测试用例集合获得最大的测试覆盖率呢?就可以采用正交试验法。
解
:
-
确定因子和状态,构造因子-状态表

-
根据因子和状态个数,选择合适的正交设计表,测试用例数量可缩减为16个。可使用AllPairs自动生成正交表。
from allpairspy import AllPairs
parameters = [
["男", "女"],
["0-18", "18-30", "30-50", "50+"],
["APP", "小程序", "H5"],
["0-100", "100-1000", "1000+"],
]
print("PAIRWISE:")
for i, pairs in enumerate(AllPairs(parameters)):
print("{:2d}: {}".format(i, pairs))
生成的测试用例如下:

-
最后再根据正交表写出测试用例就完成了。
写在最后
看完不思考的喵不是一只成熟的测试喵~
利用正交试验法设计测试用例,比使用等价类划分、边界值分析、因果图等方法有以下优点:节省测试工作工时;可控制生成的测试用例数量;测试用例具有一定的覆盖率。
测试不是不可能穷尽的,大家在测试工作中遇到这种组合情况就可以采用正交试验法去设计测试用例。
每日一问:大家工作中是否使用了正交试验法设计测试用例?欢迎评论区一起讨论~
作者介绍
