正交试验法设计测试用例

正交试验法设计工具:

1、正交设计助手

2、AllPairs

3、python(本质是使用AllPairs)

先看一个案例:

假设一个web系统,需要做兼容性测试,该系统兼容不同操作系统、数据库和web服务器软件,并且客户端有许多的浏览器:

>浏览器:Firefox、IE、Google Chrome
>数据库:MySQL、Oracle、DB2
>应用服务器:nginx、Apche、Tomcat
>操作系统:Windows Server、Unix、Linux

分析

4因素3水平实验:全面实验需要81条用例,而正交实验只需要9条用例

全面实验:
python设计正交实验设计 正交实验设计所用软件_测试用例
正交实验:
python设计正交实验设计 正交实验设计所用软件_python设计正交实验设计_02

工具一>正交设计助手

python设计正交实验设计 正交实验设计所用软件_Server_03


python设计正交实验设计 正交实验设计所用软件_Server_04

工具二—>Allpairs

1、根据需求在Excel中确定因素及每个因素的取值(水平)

python设计正交实验设计 正交实验设计所用软件_Server_05

2、新建txt文档,将取值表数据直接复制粘贴到txt中,并保存

python设计正交实验设计 正交实验设计所用软件_python设计正交实验设计_06

3、将步骤2的文件放到Allpairs安装的文件路径下

python设计正交实验设计 正交实验设计所用软件_python设计正交实验设计_07

4、打开cmd命令行工具,进入Allpairs解压后所在的路径,

输入allpairs.exe test.txt>test2.txt,然后回车

python设计正交实验设计 正交实验设计所用软件_Server_08

6、打开Allpairs文件路径,就可以看到新生成的正交表文件test2.txt了

python设计正交实验设计 正交实验设计所用软件_用例_09

就是不知道为什么Allpairs生成的用例多了一条,可能是我下载的版本问题

如果因素和水平符合标准的正交表,建议使用正交设计助手,如果水平没有那么规范,建议使用Allpairs

python设计正交实验设计 正交实验设计所用软件_Server_10

工具三—>python

1、导allpairspy包实现AllPairs功能

from allpairspy import AllPairs
 
parameters = [
    ["Firefox", "IE","Google Chrome"],
    ["MySQL", "Oracle", "DB2"],
    ["nginx", "Apche", "Tomcat"],
    ["Windows Server", "Unix", "Linux"]
]
 
print("测试用例:")
for i, pairs in enumerate(AllPairs(parameters)):
    print("用例编号{:2d}: {}".format(i+1, pairs))

python设计正交实验设计 正交实验设计所用软件_用例_11


2、过滤,用python输出测试用例的好处是能够过滤不需要的用例

例如公司开发资源不足,项目负责人确定第一个版本不需要支持Iinux系统在ie中的兼容性时,将不需要的用例直接过滤掉

from allpairspy import AllPairs

def is_valid_case(row):
    n = len(row)
    # 设置过滤条件
    if n > 3:
        # 不需要支持Iinux系统在ie中的兼容性
        if "IE" == row[0] and "Linux" == row[3]:
            return False
    return True


parameters = [
    ["Firefox", "IE","Google Chrome"],
    ["MySQL", "Oracle", "DB2"],
    ["nginx", "Apche", "Tomcat"],
    ["Windows Server", "Unix", "Linux"]
]


 
print("测试用例:")
for i, pairs in enumerate(AllPairs(parameters, filter_func=is_valid_case)):
    print("用例编号{:2d}: {}".format(i+1, pairs))

python设计正交实验设计 正交实验设计所用软件_用例_12


3、使用OrderedDict,可以将结果存储到nametuple数据结构中

from collections import OrderedDict
from allpairspy import AllPairs

def is_valid_case(row):
    n = len(row)
    # 设置过滤条件
    if n > 3:
        # 不需要支持Iinux系统在ie中的兼容性
        if "IE" == row[0] and "Linux" == row[3]:
            return False
    return True


parameters = OrderedDict({
    "浏览器":["Firefox", "IE","Google Chrome"],
    "数据库":["MySQL", "Oracle", "DB2"],
    "应用服务器":["nginx", "Apche", "Tomcat"],
    "操作系统":["Windows Server", "Unix", "Linux"]
})


 
print("测试用例:")
for i, pairs in enumerate(AllPairs(parameters, filter_func=is_valid_case)):
    print("用例编号{:2d}: {}".format(i+1, pairs))

python设计正交实验设计 正交实验设计所用软件_python设计正交实验设计_13