前言
工作过程中,我们接触到需求后第一要务是 熟悉需求并且输出测试用例,针对接口测试的入参测试,需要校验大量入参的组合场景,这时我们通常采用正交法来设计测试用例,在减少测试用例的数量时,同时保障测试用例的有效覆盖性。
正交法实验
正交试验法是分析多因素、多水准的一种实验法,它是借助正交表来对实验进行设计,依据少数的实验取代全面实验
在一项实验中,把影响实验结果的量称之为实验因素(因子),简称因素。因素可以理解为实验过程中的自变量,实验结果可以看成因素的函数。在实验过程中,每一个因素可以处于不同的状态或状况,把因素所处的状态或状况,称之为因素的水准,简称水准。
举个例子:
某所大学通信系共2个班级,刚考完某一门课程,想依据“性别”、“班级”和“成绩”这三个查询条件对通信系这门课程的成绩分布,男女比例或班级比例进行人员查询:
依据“性别”=“男,女”进行查询
依据“班级”=“1班,2班”查询
依据“成绩”=“及格,不及格”查询
按照传统设计——全部检测
分析上述检测需求,有3个被测元素,被测元素我们称之为因素,每个因素有两个取值,我们称之为水准值(也就是2)。
如果是普通的全面检测,则如下(2^3=8次)

如果是正交法,则如下(2^2=4次)

如果入参数量更多正交法的收益就越大
自动生成正交用例
手动将入参情况列出来总归是繁琐的,我们可以通过正交表来自动输出相关组合场景,正交表规则取自
http://support.sas.com/techsup/technote/ts723_Designs.txt
# encoding: utf-8
from itertools import groupby
from collections import OrderedDict
def dataSplit(data):
ds = []
mb = [sum([k for m, k in data['mk'] if m <= 10]), sum([k for m, k in data['mk'] if m > 10])]
for i in data['data']:
if mb[1] == 0:
ds.append([int(d) for d in i])
elif mb[0] == 0:
ds.append([int(i[n * 2:(n + 1) * 2]) for n in range(mb[1])])
else:
part_1 = [int(j) for j in i[:mb[0]]]
part_2 = [int(i[mb[0]:][n * 2:

文章介绍了如何运用正交法来设计接口测试用例,以减少测试用例数量并保证覆盖率。通过一个大学通信系成绩查询的例子,展示了正交试验法如何减少全面检测的次数。文章提供了一个Python类`OAT`,用于根据正交表自动生成测试用例,并展示了如何使用该类处理测试参数。
最低0.47元/天 解锁文章
2818

被折叠的 条评论
为什么被折叠?



