您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
测试用例设计方法六脉神剑——第一剑:入门试招,等价边界初探
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
测试用例设计方法六脉神剑——第一剑:入门试招,等价边界初探
自猿其说Tech
2022-05-26
IP归属:未知
9101浏览
测试
### 1 背景及问题 G.J.Myers在<软件测试技巧>中提出:测试是为了寻找错误而运行程序的过程,一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试, 一个成功的测试是揭示了迄今为止尚未发现的错误的测试。 对于新手来说,日常测试用例设计时,很少用到系统的方法论,大多是根据产品需求文档或自己的主观判断直接进行测试用例的编写,经常会造成漏测等严重问题。所以,使用方法论支撑测试用例设计的过程,使其更加合理化、规范化,是一件至关重要的事情。但测试用例设计方法种类繁多,适用场景也各不相同,针对具体需求层面进行测试用例编写时,很难选取合适的方法来进行设计。 ### 2 目标及意义 质量管理领域权威人物J.M.Juran将质量定义为“决定产品性能”和‘“满意程度’的特征”, 而测试注重于产品的满意度。 测试用例设计的过程是将产品需求转化为一种可操作性的步骤,在整个产品生命周期中发挥着至关重要的作用,基于方法论的规范化用例设计,能帮助测试人员拓展测试范围,完善测试覆盖面,降低漏测率,提升产品满意度。 本系列文章对经典的测试用例设计方法逐个进行剖析,并深入到日常工作的实际需求中,结合具体场景进行实战演练,并分别对各类方法的适用场景进行归纳梳理,形成可复用系统模板,帮助大家快速熟悉常用测试用例设计方法,提升测试人员专业度及工作效率,从而提升交付质量。 ### 3 初探 说到测试用例设计方法,大家最容易想到的肯定是等价类和边界值法,所以,首先,我们将对这两种测试用例设计方法进行介绍。 #### 3.1 等价类划分法 ##### 3.1.1 概念及原理 1)定义 - 等价类:某个输入域的子集合 - 等价类划分:有效等价类(合理的、有意义的输入集合) - 无效等价类(不合理的 or 无意义的输入集合) 2)基本思想 设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。 ##### 3.1.2 方法步骤 1. 根据需求,大体上可以先划分为有效和无效两种 2. 然后再细化相应的等价类(从组合情况进行细化) 3. 建立等价类表 4. 生成测试用例 #### 3.1.3 举个栗子 场景:一个输入框的输入规则为1~12位字母和数字组合 根据等价类划分法,具体可建立等价类表如下(把输入拆分成长度和符号组合两种),即可得到用例 ![](//img1.jcloudcs.com/developer.jdcloud.com/03ee3c8a-e9f6-4916-a659-bac28328961f20220526145308.png) #### 3.2 边界值分析法 ##### 3.2.1 概念及原理 1)定义 是等价类划分的一个补充方法,将等价类划分的边界作为用例设计(在有效和无效等价类的边界取值中,会存在值重复的情况,可按有效无效进行取舍)。 2)基本思想 大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部,所以为了保证测试质量,就需要重点测试边界,就有了边界值这样的测试方法。 3)价类和边界值的关系 - 边界值分析法是作为对等价类划分法的补充,边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。 - 边界值数据本质上是属于某个等价类的范围,测试时有时是一种冗余(正好等于,刚刚大于或刚刚小于边界的值),但是为了更好的测试质量,边界值必须要单独进行测试,适当必要的冗余是可以接受的。 4)使用方法 那我们怎么去找边界值呢?一般会关注以下几个点: - 上点:区间的端点值 - 内点:上点之间任意一点 - 离点:若是开区间的离点,就是开区间中上点内侧紧邻的点;若是闭区间的离点,就是闭区间中上点外侧紧邻的点 ① 闭区间 ![](//img1.jcloudcs.com/developer.jdcloud.com/36444ae2-c9f3-48cc-ad84-ce81460a660020220526145411.png) ② 半开半闭区间 ![](//img1.jcloudcs.com/developer.jdcloud.com/13d42f46-11bd-429d-8f28-0196eabead3a20220526145450.png) ③ 开区间 ![](//img1.jcloudcs.com/developer.jdcloud.com/f545dd72-7139-4d5e-8186-ff6d81d2282220220526150154.png) ##### 3.2.2 举个栗子 场景:一个输入框的输入规则为1~12位字母和数字组合 具体可建立等价类表如下(把输入拆分成长度和符号组合两种) 根据边界值法,按照闭区间[1, 12]确定上点(1,12)、内点(2)、离点(0,13),建立等价类和边界值表如下(把输入拆分成长度和符号组合两种),即可得到用例。 ![](//img1.jcloudcs.com/developer.jdcloud.com/119d90ac-6369-4471-b808-8f19a98c994620220526150212.png) #### 3.3 测试设计——“等价类+边界值” #### 3.3.1 举个栗子 场景:手机号兼容座机号的格式校验 - 有横杠:XXX(3位或4位)-XXXXXXXX(7或8位):3+7或者3+8或者4+7或者4+8 - 有横杠有分机号:XXX(3位或4位)-XXXXXXXX(7或8位)-XXX(1-5位) - 无横杠:XXX(3位或4位)XXXXXXXX(7或8位) 11位-17位 - 取消第一位必须为”1“,且取消第二位必须为“除0,1,2”限制。 设计步骤: 1)等价类划分:以第一条为例-有横杠:XXX(3位或4位)-XXXXXXXX(7或8位) 根据等价类划分法的步骤,首先进行拆分第一部分和第二部分,获得第一部分的有效等价类[3, 4]和无效等价类(len>4 & 0<len<3);获得第二部分的有效等价类[7,8]和无效等价类(len>8 & 0<len<7)。以此类推,获取所有的有效和无效等价类。 2)边界值分析:根据区间开闭性,定位上点、内点、离点。 如:有效等价类[3, 4]的上点为3和4,无效等价类(len>4 & 0<len<3)的离点为5和2,内点无。 3)数据处理:按照步骤1和2及数据的组合情况,列出所有的情况。 ![](//img1.jcloudcs.com/developer.jdcloud.com/597adb4c-1f2a-408e-b931-2d923654ef6520220526150330.png) 4)整理最终用例:根据步骤3得到的数据,按照要求设计测试数据及相应的预期结果,得到最终测试用例。 ![](//img1.jcloudcs.com/developer.jdcloud.com/91f1a2b0-1fe8-4da5-8140-e9a2dc528fe920220526150344.png) ### 4 总结 ![](//img1.jcloudcs.com/developer.jdcloud.com/47780ee9-3d95-4d6a-b618-2d427b2197e220220526150357.png) 等价类划分和边界值分析法只考虑了单个的输入条件,在输入条件有各种组合、输入条件之间的相互制约关系的场景中很难发挥有效作用,这个时候就需要因果图与判定表法来帮助我们设计测试用例了,让我们一起来看看吧~ ------------ ###### 自猿其说Tech-JDL京东物流技术与数据智能部 ###### 作者:陈雨婷 王鹏 张苑 李硕(西安CS测试小分队)
原创文章,需联系作者,授权转载
上一篇:测试用例设计方法六脉神剑——第二剑:招式组合,因果判定出世
下一篇:《数学之美》读后感
相关文章
安全测试之探索windows游戏扫雷
Jmeter压测实战:Jmeter二次开发之JSF采样器实现
Laputa自动化测试框架介绍
自猿其说Tech
文章数
426
阅读量
2150199
作者其他文章
01
深入JDK中的Optional
本文将从Optional所解决的问题开始,逐层解剖,由浅入深,文中会出现Optioanl方法之间的对比,实践,误用情况分析,优缺点等。与大家一起,对这项Java8中的新特性,进行理解和深入。
01
Taro小程序跨端开发入门实战
为了让小程序开发更简单,更高效,我们采用 Taro 作为首选框架,我们将使用 Taro 的实践经验整理了出来,主要内容围绕着什么是 Taro,为什么用 Taro,以及 Taro 如何使用(正确使用的姿势),还有 Taro 背后的一些设计思想来进行展开,让大家能够对 Taro 有个完整的认识。
01
Flutter For Web实践
Flutter For Web 已经发布一年多时间,它的发布意味着我们可以真正地使用一套代码、一套资源部署整个大前端系统(包括:iOS、Android、Web)。渠道研发组经过一段时间的探索,使用Flutter For Web技术开发了移动端可视化编程平台—Flutter乐高,在这里希望和大家分享下使用Flutter For Web实践过程和踩坑实践
01
配运基础数据缓存瘦身实践
在基础数据的常规能力当中,数据的存取是最基础也是最重要的能力,为了整体提高数据的读取能力,缓存技术在基础数据的场景中得到了广泛的使用,下面会重点展示一下配运组近期针对数据缓存做的瘦身实践。
自猿其说Tech
文章数
426
阅读量
2150199
作者其他文章
01
深入JDK中的Optional
01
Taro小程序跨端开发入门实战
01
Flutter For Web实践
01
配运基础数据缓存瘦身实践
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号