测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队
1 引言
上篇讲了因果图和判定表法,而这两种方法在变量值很多、排列组合数量极大的场景下,会生成非常庞大且冗余的测试用例,此时我们很难对所有组合场景进行全量测试用例覆盖,基于此短板,正交试验法应运而生。
2 概念及原理
2.1 定义
正交试验法是研究多因素、多水平的一种试验法,它是利用正交表来对试验进行设计,通过少数的试验替代全面试验
思想:用部分试验来代替全面试验,通过对部分试验结果的分析,了解全面试验的情况。
全面试验:可以分析各因素的效应,交互作用,也可选出最优水平组合。但全面试验包含的水平组合数较多,工作量大,在有些情况下无法完成。
2.2 正交表
使用正交试验法设计测试用例的核心在于正交表的选取,正交表是一整套规则的设计表格,一般表示为:
其中,L代表是正交表,n代表正交表的行数(即测试用例数),k代表因素的个数或正交表的列数(即输入条件的个数),m表示每个因素的水平数,且有n=k*(m-1)+1
- 因素(Factors) 表示在一项试验中,需要观察的变量
- 水平数(Levels) 表示在试验范围内,任何单个因素能够取得的值得最大个数(变量的取值)
举个栗子:
正交表必须满足以下两个特点,有一条不满足,就不是正交表:
- 每列中不同属性值出现的次数相等。
这一特点表明每个因素的每个水平与其它因素的每个水平参与试验的几率是完全相同的,从而保证了在各个水平中最大限度地排除了其它因素水平的干扰,能有效地比较试验结果并找出最优的试验条件 - 在任意2列横向组成的属性值对中,每种属性值对出现的次数相等。
这个特点保证了试验点均匀地分散在因素与水平的完全组合之中,因此具有很强的代表性
这也是正交表的两大优越性,即“均匀分散性,整齐可比”。通俗的说,每个因素的每个水平与另一个因素各水平各碰一次,这就是正交性。
3 方法步骤
3.1 整体流程
1.确定因素(变量)和每个因素的水平数(变量取值);
2.根据因素数和水平数确定n值,这里区分2种情况:
单一水平正交表(各因素的水平数相同)
混合水平正交表,即各因素的水平数不完全相同的正交表
3.选择合适的正交表;
4.根据正交表把变量的值映射到表中,每一行的各因素的取值组合作为一个测试用例。
3.2 选择正交表
1.查Dr. Genichi Taguchi 设计的正交表:Dr. Genichi Taguchi 正交表https://www.york.ac.uk/depts/maths/tables/orthogonal.htm
2.SAS标准技术支持:SAS设计正交表http://support.sas.com/techsup/technote/ts723_Designs.txt
查找时需要关注不同类型的正交表,区分以下2种情况:
1.单一水平正交表:
2.混合水平正交表:
当有2个或2个以上正交表可以被选择时,选取原则是:选试验次数最少的那个正交表。
4 举个栗子
场景:对支持4种特殊场景的破损类异常三级类型的报备功能进行测试
异常三级类型 = 外包装破损,商品腐坏,外包完好内物破损/泄漏
特殊场景 = 打包不规范,违规揽收,集包封签异常,车辆封签异常
上传方式 = 单条上报,批量上传
4.1 传统方法:全量覆盖
- 分析上述测试需求,根据规格描述有:
异常三级类型(外包装破损,商品腐坏,外包完好内物破损/泄漏)
特殊场景(打包不规范,违规揽收,集包封签异常,车辆封签异常)
上传方式(单条上报,批量上传)
因此有3个被测元素(因素),每个因素分别有3、4、2个取值。 - 针对所有因素的全部水平值进行全排列,测试用例个数:342=24,具体用例如下:
4.2 正交试验法设计用例
1.根据因素数和水平数确定n值:
2.选择合适的正交表。根据计算得出n=6,在 Dr. Genichi Taguchi 正交表 查找发现不存在n=6的正交表,这时我们就需要根据如下原则确定使用的正交表:
- 查找同时满足 n>6 && m>=max(m1=3,m2=4,m3=2) && k>=k1+k2+k3=1+1+1=3的正交表;
- 当有2个或2个以上正交表可以被选择时,选择试验次数最少的那个正交表,本次选取L16b。
3.将各因素水平值填入映射表,每一行转换成一个测试用例,测试用例数量:12个,可以看到,比全量覆盖方法得到的用例数减少了50%。
4.3 PICT生成正交试验测试用例
虽然使用正交试验法可以帮助我们筛选合适的测试用例,提升测试效率,但选择正交表并输出测试用例的过程却需要耗费一定的时间,那么有没有更加快捷的方法呢?
当然有!PICT这个小工具只需要我们提供所有的因素及变量值,它就可以帮助我们自动生成正交试验的测试用例了,接下来让我们学习一下如何使用PICT生成测试用例吧!
在使用PICT直接生成测试用例之前,需要先准备需要生成测试用例的txt文件,这个txt文件必须放在安装目录的同一个文件夹下,否则没有作用。
本次建立了一个名称test_pict.txt的文件,在文件中输入所有的因素及变量值,每一行是一个因素及其对应的所有变量值枚举,因素名称与变量值枚举之间用 “:” 连接,各变量值之间用“,”连接,均为英文符号,无空格,如:
- 异常三级类型:外包装破损,商品腐坏,外包完好内物破损/泄漏
- 特殊场景:打包不规范,违规揽收,集包封签异常,车辆封签异常
- 上传方式:单条上报,批量上传
注意编码格式是ANSI,否则会乱码(可以使用Notepad++改变编码格式),如下图:
pict test_pict.txt 即可自动生成测试用例,如下图:
接下来需要执行:pict test_pict.txt >text_pict.xls命令,将测试用例保存到text_pict.xls文件中,该文件仍会存放在安装目录下,打开该文件内容如下,每行数据即为一条测试用例:
5 总结
但正交试验法并不适用于强流程性需求的测试用例设计,这些场景我们就需要借助功能图法或场景法来进行测试用例的设计,这些方法又该怎样使用呢?
作者:京东物流 陈雨婷
来源:京东云开发者社区 自猿其说Tech 转载请注明来源
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
PWA 离线方案研究报告 | 京东云技术团队
本文并不是介绍如何将一个网页配置成离线应用并支持安装下载的。研究PWA的目的仅仅是为了保证用户的资源可以直接从本地加载,来忽略全国或者全球网络质量对页面加载速度造成影响。当然,如果页面上所需的资源,除了资源文件外并不需要任何的网络请求,那它除了不支持安装到桌面,已经算是一个离线应用了。 什么是PWA PWA(Progressive Web App)是一种结合了网页和原生应用程序功能的新型应用程序开发方法。PWA 通过使用现代 Web 技术,例如 Service Worker 和 Web App Manifest,为用户提供了类似原生应用的体验。 从用户角度来看,PWA 具有以下特点: 1. 可离线访问:PWA 可以在离线状态下加载和使用,使用户能够在没有网络连接的情况下继续浏览应用; 2. 可安装:用户可以将 PWA 添加到主屏幕,就像安装原生应用一样,方便快捷地访问; 3. 推送通知:PWA 支持推送通知功能,可以向用户发送实时更新和提醒; 4. 响应式布局:PWA 可以适应不同设备和屏幕大小,提供一致的用户体验。 从开发者角度来看,PWA 具有以下优势: 1. 跨平台开发:PWA ...
- 下一篇
火星探测器背后的人工智能:从原理到实战的强化学习
本文详细探讨了强化学习在火星探测器任务中的应用。从基础概念到模型设计,再到实战代码演示,我们深入分析了任务需求、环境模型构建及算法实现,提供了一个全面的强化学习案例解析,旨在推动人工智能技术在太空探索中的应用。 关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。 一、引言 火星,作为人类探索太空的下一个重要目标,一直吸引着科学家们的眼球。火星探测器作为探索这一未知世界的先锋,承担着巨大的任务和挑战。在这一任务中,强化学习(Reinforcement Learning, RL)作为一种智能学习方法,为火星探测器的自主决策提供了新的可能性。 强化学习,简而言之,是让计算机通过与环境的交互,自主学习如何做出最优的决策。在火星探测任务中,由于火星环境的复杂性和不确定性,传统的编程方法难以覆盖所有潜在的情况。因此,强化学习在这里扮演着至关重要的角色。它允许探测器在模拟环境中进行大量的试验和错误,从而学习如何在各种复杂环境下作出最佳决...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品