正交表法测试用例设计的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摄氏度 陶土类型A 12h
1200摄氏度 陶土类型B 24h
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文件删除。

Python实现自动生成测试用例相关推荐

  1. python 文案自动生成_Python自动化测试如何自动生成测试用例?

    原文作者:陈安妮annie1 原出处:简书 上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰,我们将立即处理. 传统的测试用例需要测试或者开发人员将用户的操作用代码表示出来,通过断言判断 ...

  2. 怎么自学python自动化测试-python自动化测试如何自动生成测试用例?

    传统的用例需要测试或者开发人员将用户的操作用代码表示出来,通过断言判断是否和预期一致,写测试用例也占用了部分时间,加上版本迭代测试用例的维护成本也较高,于是基于无埋点的需求相结合来检测埋点,及时告警, ...

  3. python自动测试g_Python自动化测试如何自动生成测试用例?

    原文作者:陈安妮annie1 原出处:简书 上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰,我们将立即处理.传统的测试用例需要测试或者开发人员将用户的操作用代码表示出来,通过断言判断是 ...

  4. python自动化测试-Python自动化测试如何自动生成测试用例?

    今天, 陕西优就业 小优整理了一些技术类干货知识,学习软件测试的小伙伴,可以来看看,都是一些基础知识,希望能对你的学习有所帮助! 传统的测试用例需要测试或者开发人员将用户的操作用代码表示出来,通过断言 ...

  5. python生成yaml_使用python脚本自动生成K8S-YAML的方法示例

    1.生成 servie.yaml 1.1.yaml转json service模板yaml apiVersion: v1 kind: Service metadata: name: ${jarName} ...

  6. python生成yaml_使用python脚本自动生成K8S-YAML

    使用python脚本自动生成K8S-YAML 1.生成 servie.yaml 1.1.yaml转json service模板yaml apiVersion: v1 kind: Service met ...

  7. 50行python代码自动生成文章

    不知道从小到大,我们被迫写了多少心得体会,多少人生感想,如果真情实地的去感受写作然后成长当然很好,但是更多的都是形式主义的需求,并没有人去看里面的内容,白白浪费我们多少大好时光,有时候我们ctrl,C ...

  8. python 测试用例的无输入_如何为无参数方法自动生成测试用例?

    为了减少boiler-plate代码,我想出了在类测试仪中为所有无参数方法生成测试用例的想法.在 跑步时py.测试,它只识别静态编写的测试用例(测试a.测试b),而不识别使用setattr(Teste ...

  9. kettle使用数据库来生成序列_Python办公自动化:使用python来自动生成word文档

    让python做办公自动化,让你闲下来 让python做自动化,让你闲下来 上节对python的excel Python办公自动化系列:自动操作Excel自动化做了介绍.这次介绍如何用python对w ...

最新文章

  1. AI量身定制:如何打造符合“中国特色教育”的内容推荐体系?
  2. Linux命令行与shell脚本编程大全(第3版)
  3. python相关 MOOC第一周
  4. 装修(十三天,面板又换错了,大理石空鼓)
  5. 20个优秀的移动(iPhone)网站设计案例
  6. bitnamigitlab_Bitnami Gitlab 安装配置 step by step
  7. [小故事大道理] -- 蜜蜂为何不如苍蝇
  8. 针孔相机拍摄的图像坐标和空间点的对应关系
  9. python qtextedit设置光标位置_Python基础命令学习——就这一篇文章就够了
  10. . 在第一代计算机时代 编程采用,在第一代计算机时代,编程采用什么语言
  11. 计算机大一会学ps吗,PS老是卡真的是电脑的问题吗?学会这几步帮你解决PS卡顿问题!...
  12. 如何进行js的debug
  13. 兽音译者iOS APP,支持iPhone、iPad、Mac~
  14. bates chock_2019资生堂中国杯世界花样滑冰大奖赛-冰舞前瞻
  15. MATLAB如何读取文件中的数据(全网最简便)
  16. 新西兰 计算机 转专业,新西兰本科毕业之后怎么转专业
  17. 公众号榜单 | 2020·5月公众号地区排行榜重磅发布
  18. 方舟建服务器局域网显示,《方舟:生存进化》局域网怎么联机 局域网联机教程分享...
  19. 页面实时刷新技术探讨
  20. 放大电路中耦合电容的选择

热门文章

  1. 【Flutter】Flutter 全面屏适配 ( 需要适配的情况 | Android 设置最大宽高比 | 使用 SafeArea 进行全面屏适配 | 使用 MediaQuery 进行全面屏适配 )
  2. uniap uni.showModal默认按钮自定义设置
  3. 秋招第一面-OPPO
  4. 什么是云服务器?云服务器有哪些作用?
  5. 这个Java在线文档预览项目,太拽了吧 !
  6. PS 滤镜算法— — 表面模糊
  7. 详解 matplotlib.pyplot ,Python 初学者真能看懂
  8. 深度学习——评估学习模型
  9. EasyPusher实现安卓Android手机直播推送同步录像功能(源码解析)
  10. python 可执行文件大_为什么 python3.6 的动态链接库比 python2.7 的可执行文件大了很多?...