Python实现自动生成测试用例

正交表法测试用例设计的Python实现

目录

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

1、概要

软件测试的过程中,设计测试用例是必要的工作。如何快速,准确,高覆盖率的编写测试用例,是测试用例设计的关键。在测试用例的设计方法中,有等价类划分法,边界值法,正交表法等。在这些理论方法中,每种方法都有自己的优势,本文主要介绍基于正交表方法,进行测试用例的设计,并使用python 编写脚本进行实现,使测试用例的设计的过程变得清晰,简洁,自动化。

2、正交表法简介

2.1、什么是正交表法

将可能影响测试结果的各种因素放在表格的每一列,并列举出可能出现的情况,再将各种场景进行排列组合,组合出所有可能出现的测试场景。比如一家生产陶瓷的公司,他们不同类型的陶土在不同的煅烧温度和时间下,会产生不同釉面的瓷器,为了测试可以产生多少种不同的瓷器,那么他们设计的正交测试表如下:

煅烧温度陶土类型煅烧时间
1000摄氏度陶土类型A12h
1200摄氏度陶土类型B24h
1500摄氏度48h

从上表,我们可以进行全排列组合,做出测试用例,显然测试用例的条数是3×2×3=18

该公司的质量人员通过此表排列出测试用例,进行煅烧试验,即可得到不同场景下的测试结果。

2.2、正交表法优点

不同的测试用例设计方法有各自的优势,正交表法有以下优势。

  1. 设计测试用例效率高。设计测试用例即是设计表格的过程
  2. 清晰简洁。从设计的表格中,即可一眼看出设计的逻辑
  3. 用例的评审变得容易。传统的测试用例评审是审核一条一条的测试用例,费时费力,而正交表法设计的表格,在评审时评审表格即可,如果有需要修改的地方,增减表格中的元素即可。
  4. 节省人力资源。使测试人员从繁重的测试用例设计工作中解脱出来。
  5. 测试用例覆盖率可调节。正交表法的测试用例覆盖度取决于设计者输入的因素多少,可以通过增加减少因素,达到增加和减少测试用例的目的。
  6. 测试用例准确。人工编写的测试用例,容易出现错误,正交表的测试用例因为简洁明了,出错的机率大大降低。

2.3、正交表法的缺点

同样的,正交表方法也有它自己的缺点,主要缺点如下:

  1. 因素互斥。因素存在互斥的情况下,无法进行排列组合。比如上面的表格中,假如陶土类型A不能在1500摄氏度的条件下煅烧,那么“陶土类型A“和”1500摄氏度“就不能排列组合到一起。
  2. 流程终止。当排列组合中某个因素出现会导致测试过程终止时,此时排列组合无法进行。
  3. 手工排列组合困难。设计表格容易,但是把各种因素手工排列组合起来困难。

2.4、为什么选择正交表法

基于正交表以上优点和缺点,可以得出结论,对测试人力不足的软件测试项目,为了保证覆盖率和测试工作效率,我们可以选择正交表测试法,以节省测试用例设计,评审,修改的时间。对于正交表自身存在的天然缺点,我们可以通过编写python脚本的方式进行规避和解决。下面介绍该方法的python实现。

3、Python实现

Python实现正交表法设计测试用例,主要解决正交表存在的上述三个问题。即:无法自动化排列组合,因素互斥,流程终止的问题。我们用python编写了case_generate工具进行了实现。

3.1、实现自动化排列组合

实现思路。首先设计一个excel模板,将要测试的功能的各个因素列举,如下图所示。

之后编写Python脚本,从excel中读取每一列,然后利用Python的高级函数特性reduce函数,对每一列循环进行排列组合,得到最终的排列组合。最后再将这些排列组合输出到另外一个表格中。具体参照代码:case_generate.py。核心排列组合代码如下图:

3.2、解决元素互斥

实现思路:

对于不能排列到一起的组合,我们需要添加表格背景颜色,我们规定,相同颜色的表格的元素无法排列组合到一起。如下图所示:

上图是BaaS的重置密码功能的正交表,当重置密码的渠道是邮箱渠道时,将直接发送重置密码邮件到用户邮箱,此时管理员不需要进行重置密码的操作,因此“邮箱渠道“和”管理员重置密码“、”管理员驳回“这些操作是互斥的,因此他们的背景颜色都是黄色。

我们编写脚本,在读取每一列的元素值时,会读取他们的表格背景颜色属性,当最后排列组合时,让带有相同颜色的元素无法排列组合到一起。具体代码参照:case_generate.py。核心代码如下所示:

3.3、解决流程终止

一些因素可以引起流程终止,如“管理员驳回“,当管理员驳回时。重置密码验证的操作就不用进行了。因此排列组合到”管理员驳回“这一因素时,就结束了。我们通过下面的方法解决整个问题:

实现思路:

对于可以引起流程终止的因素,我们在因素文字后面增加“[!]“标记,python脚本取到[!]时,会进行特殊处理,将[!]以后的因素剔除。具体代码参照:case_generate.py。核心代码如下:

4、case_generate工具使用方法

基于上述python实现的case_generate 工具,包含了以下脚本case_generate.py,case_transform.py,setting.ini。下面介绍该工具的使用方法论。

4.1、使用流程图

4.2、使用步骤

  • Python 环境安装依赖包:xlrd 1.2.0,openpyxl
  • 对脚本工具的setting.ini的进行配置,如下图:

  • 在工具路径 . \case_generate\mod 下,新建一个xxxxmod.xls文件,注意:文件一定为xls 后缀,且.xls前要加mod关键字。如下图:

  • 打开xxxxmod.xls文件,sheet名称改为要测试的功能名称,注意:这里一定要改sheet名,否则生成的用例的功能名字会错误。如下图所示:

  • 在xxxxmod.xls 中设计测试用例,列举影响测试结果的各种因素,分析互斥因素并标记颜色,分析流程终止因素并标记[!],如下图所示:

  • 运行脚本case_generate.py,在. \case_generate\result生成正交表的排列组合表,如下图所示:

  • 打开生成的排列组合表,执行测试用例,添加期待结果,实际结果,用例执行结果,如下图所示:

  • 运行case_transform.py,在路径. \case_generate\transform 下生成可交付的case表格,如下图所示:

  • 至此,case_generate工具的使用流程就结束了。

4.3、生成可以导入禅道的 csv 用例文件

如果想要生成一份可以导入禅道的用例文件,可以采用如下步骤进行生成:

  • 首先登录禅道,并点击 测试-用例-导出-导出模板,如下图所示:

  • 然后选择GBK格式,导出一份模板文件,如下图所示:

  • 打开导出的模板文件,查看模板信息。如下图所示:

注意:每个“所属模块”字段后都有一个编号,如“配置变更(#16)”,记住这个编号,后面的配置中将使用到它。如果你没有配置模块,请在禅道中先设置好模块

  • 然后打开setting.ini 脚本,参照上图模板信息,配置禅道用例字段,用例模块,用例类型,关键字,用例阶段等信息,如下图所示:

  • 运行目录下的case_transform_zentao.py脚本,生成csv文件到\case_generate\zentao目录下,如下图所示:

  • 打开生成的文件,检查以下格式,如下图所示:

  • 如果上面的格式检查没有问题,可以进行导入操作。进入禅道,点击 测试-用例-导入-导入csv,如下图所示:

  • 选择GBK格式,并选择要导入的文件,如下图所示:

  • 点击保存,进行导入前的检查,如下图所示:

  • 如果检查没有问题,点击保存按钮进行保存导入,大功告成!如下图所示:

  • 随便点击一个用例,进去看看情况,查看关键字段是否存在问题,如下图所示:

  • 经过检查,所有的自动生成的case字段均显示正常。那么生成禅道csv测试case的流程就正常结束了。继续愉快的测试工作吧~!

4.4、注意事项

  1. 正交表mod.xls表格的名称格式为 “XXXmod.xls“,文件格式必须为xls,sheet名称需要更改为功能名
  2. 正交表mod.xls 设计完成后,需要保存并关闭,才可进行下一步
  3. 保证result、transform目录下,无对应mod生成的case文件时,才能生成新的case,如果修改了mod文件,需要生成新的case,需要把之前生成的case文件删除。

  • 14
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值