目录
1、概要... 3
2、正交表法简介... 3
2.1、什么是正交表法... 3
2.2、正交表法优点... 3
2.3、正交表法的缺点... 4
2.4、为什么选择正交表法... 4
3、Python实现... 4
3.1、实现自动化排列组合... 4
3.2、解决元素互斥... 5
3.3、解决流程终止... 6
4、case_generate工具使用方法... 6
4.1、使用流程图... 7
4.2、使用步骤... 7
4.3、生成可以导入禅道的 csv 用例文件... 10
4.4、注意事项... 14
python脚本地址:
链接:https://pan.baidu.com/s/1rN-m7Jo5gLm4T6nN4ojBMQ
提取码:1234
软件测试的过程中,设计测试用例是必要的工作。如何快速,准确,高覆盖率的编写测试用例,是测试用例设计的关键。在测试用例的设计方法中,有等价类划分法,边界值法,正交表法等。在这些理论方法中,每种方法都有自己的优势,本文主要介绍基于正交表方法,进行测试用例的设计,并使用python 编写脚本进行实现,使测试用例的设计的过程变得清晰,简洁,自动化。
将可能影响测试结果的各种因素放在表格的每一列,并列举出可能出现的情况,再将各种场景进行排列组合,组合出所有可能出现的测试场景。比如一家生产陶瓷的公司,他们不同类型的陶土在不同的煅烧温度和时间下,会产生不同釉面的瓷器,为了测试可以产生多少种不同的瓷器,那么他们设计的正交测试表如下:
煅烧温度 | 陶土类型 | 煅烧时间 |
1000摄氏度 | 陶土类型A | 12h |
1200摄氏度 | 陶土类型B | 24h |
1500摄氏度 | 48h |
从上表,我们可以进行全排列组合,做出测试用例,显然测试用例的条数是3×2×3=18
该公司的质量人员通过此表排列出测试用例,进行煅烧试验,即可得到不同场景下的测试结果。
不同的测试用例设计方法有各自的优势,正交表法有以下优势。
同样的,正交表方法也有它自己的缺点,主要缺点如下:
基于正交表以上优点和缺点,可以得出结论,对测试人力不足的软件测试项目,为了保证覆盖率和测试工作效率,我们可以选择正交表测试法,以节省测试用例设计,评审,修改的时间。对于正交表自身存在的天然缺点,我们可以通过编写python脚本的方式进行规避和解决。下面介绍该方法的python实现。
Python实现正交表法设计测试用例,主要解决正交表存在的上述三个问题。即:无法自动化排列组合,因素互斥,流程终止的问题。我们用python编写了case_generate工具进行了实现。
实现思路。首先设计一个excel模板,将要测试的功能的各个因素列举,如下图所示。
之后编写Python脚本,从excel中读取每一列,然后利用Python的高级函数特性reduce函数,对每一列循环进行排列组合,得到最终的排列组合。最后再将这些排列组合输出到另外一个表格中。具体参照代码:case_generate.py。核心排列组合代码如下图:
实现思路:
对于不能排列到一起的组合,我们需要添加表格背景颜色,我们规定,相同颜色的表格的元素无法排列组合到一起。如下图所示:
上图是BaaS的重置密码功能的正交表,当重置密码的渠道是邮箱渠道时,将直接发送重置密码邮件到用户邮箱,此时管理员不需要进行重置密码的操作,因此“邮箱渠道“和”管理员重置密码“、”管理员驳回“这些操作是互斥的,因此他们的背景颜色都是黄色。
我们编写脚本,在读取每一列的元素值时,会读取他们的表格背景颜色属性,当最后排列组合时,让带有相同颜色的元素无法排列组合到一起。具体代码参照:case_generate.py。核心代码如下所示:
一些因素可以引起流程终止,如“管理员驳回“,当管理员驳回时。重置密码验证的操作就不用进行了。因此排列组合到”管理员驳回“这一因素时,就结束了。我们通过下面的方法解决整个问题:
实现思路:
对于可以引起流程终止的因素,我们在因素文字后面增加“[!]“标记,python脚本取到[!]时,会进行特殊处理,将[!]以后的因素剔除。具体代码参照:case_generate.py。核心代码如下:
基于上述python实现的case_generate 工具,包含了以下脚本case_generate.py,case_transform.py,setting.ini。下面介绍该工具的使用方法论。
如果想要生成一份可以导入禅道的用例文件,可以采用如下步骤进行生成:
注意:每个“所属模块”字段后都有一个编号,如“配置变更(#16)”,记住这个编号,后面的配置中将使用到它。如果你没有配置模块,请在禅道中先设置好模块。