努力经营当下,直至未来明朗!
普通小孩也要热爱生活!
一、设计测试用例的万能公式
- 设计测试用例除了方法之外还需要我们尽可能的去想可能存在的情况。
- 设计测试用例原则:用例的设计不仅要考虑其实现了其应该实现的,还要考虑其未实现其不应该实现的。
- 测试用例是否设计的越多越好?
① 在工作中,测试用例能更多的覆盖覆盖项目测试为最好
② 在面试中,测试用例设计的越多越好(因为考察的是设计测试用例能力以及思维发散能力) - 设计测试用例的万能公式:【必备!!】
功能测试 + 性能测试 + 界面测试 + 兼容性测试 + 易用性测试 + 安全测试
① 功能测试:可能来自于需求文档,也可能来自于生活经验
② 性能测试:功能没有问题不代表性能一定是好的,性能往往表现在一些极端方面(如:高并发量、响应时间等)
③ 界面测试:颜色、形状、大小、材质[针对实物]; 文字、输入框、图片、下拉框…所有可以看到的元素[针对网页]
(工作中是根据设计图来设计界面测试用例的)
④ 兼容性测试:浏览器的兼容性、版本的兼容性、系统兼容性以及数据兼容性等
⑤ 易用性测试:软件是否具备简单易上手的属性(如引导、提示性文字等)
⑥ 安全测试:隐私数据是否加密(如用户界面密码的展示)、数据库里是否对隐私数据进行加密 [拒绝SQL注入与越权(垂直/水平越权)]
- 举例:设计水杯的测试用例:
可以使用XMind进行设计【操作:enter创建同级目录,tab创建子目录】
6.举栗子:对登录页面设计测试用例
- 兼容性测试中要注意:不同的浏览器、不同的版本可能会非常多,难道我们要所有的版本和浏览器都进行测试吗?我们选型的标准是什么?
1)不是所有的版本和浏览器都要进行测试,这是无法实现的。
2)选型标准:
① 大部分用户使用的
② 在工作中是有数据后台可以检测到大部分用户使用的浏览器/版本/手机型号等的,后台可以将这些数据进行检测和管理起来;此时我们就参考管理平台给出的数据进行选型。
二、设计测试用例的具体方法
- 笔试阶段:要根据 测试用例的要素来进行用例的编写。
测试用例的要素:即测试数据,只有当我们需要写出具体的测试数据时,才需要给出具体的数值。
面试的时候设计测试用例可以概要的去设计。
- ✨ 设计测试用例的具体方法:
1)基于需求的设计方法:根据万能公式来设计
2)等价类
3)边界值
4)因果图(判定表法)
5)正交排列
6)场景设计法
7)错误猜测法
1. 等价类
- 概念:依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。
- 等价类其实就是:分区/分块的概念
- 等价类的划分:
1)有效等价类:针对需求文档的要求是有意义的集合
2)无效等价类:针对需求文档的要求是没有意义的集合 - 步骤:
1)确认有效等价类和无效等价类
2)编写测试用例 - 举栗子:
输入密码正确是6~18位,则编写测试用例(具体到测试数据)
① 输入长度为6~18位密码,具体是10位
② 输入长度为小于6位密码,具体是2位
③ 输入长度为18位密码,具体是20位 - 补充:
如果给出的不是范围,是具体的需求,那就针对这些需求都是有效等价类,除外的是无效等价类(无效等价类中挑选一些测试即可)
2. 边界值
- 该问题非常常见,非常容易发现问题
- 边界值是指:有效边界+无效边界/次边界值
- 举栗子:
输入密码正确是6~18位,则边界值:
① 有效边界值:6、18
② 无效边界值:5、19 - 经典面试题:
假如浮点型的范围是[6,10],那么它的有效边界和无效边界是?
①单精度:4字节,有效位数8位
②双精度:8字节,有效位数16位
③所以:单精度:±0.00000001 ; 双精度:±0.0000000000000001
【单双精度浮点数的区别:单双精度】
3. 因果图(判定表)
-
其实类似于“判定表”,但是大部分书籍中都是因果图。
-
使用场景较少,使用场景是:输入条件的组合对应不同的结果。
-
判定表设计测试用例的步骤:
1)确认输入条件和输出条件
2)找出输入条件和输出条件之间的关系
3)画判定表
4)根据判定表编写测试用例 -
举栗子:
当订单使用了红包或者订单金额大于300元,则该订单是优惠订单,否则是不优惠订单。
1)确认输入条件和输出条件:
① 输入条件:红包A、订单大于300元B、提交订单C
② 输出条件:优惠订单1、无优惠订单2
2)找出输入条件和输出条件之间的关系
A B C AB AC BC ABC 非ABC(null)
2 2 2 2 1 1 1 2
3)画判定表(excel)
4)根据判定表编写测试用例
①有红包,金额不大于300元且订单没有提交,则是无优惠订单。
②没有红包,金额大于300元且订单没有提交,则是无优惠订单。
③没有有红包,金额不大于300元,订单提交,则是无优惠订单。
④有红包,金额大于300元,订单没有提交,则是无优惠订单。
⑤有红包,金额不大于300元,订单提交,则是优惠订单。
⑥没有红包,金额大于300元,订单提交,则是优惠订单。
⑦有红包,金额大于300元且订单提交,则是优惠订单。
⑧没有红包,金额不大于300元且订单没有提交,则是无优惠订单。
- 判定表法和因果图法其实步骤差不多,只是因果图法在画判定表之前多了一步“画因果图”。(但是画因果图很难,况且没有一个具体的画法,目前没有太大必要去研究)
4. 场景设计法
-
只是一个思路引导作用。告诉我们不能完全参考需求文档上写的基本流程,要尽可能多的思考实际可能存在的意想不到的情况。
-
概念:
现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试用例更容易理解和执行。 -
涉及概念:基本事件流(完成事件的正确流程顺序)和备选事件流(正常流程进行中各阶段可能存在其他情况)
【基本事件流是最短的,因为备选事件流会在基本事件流的基础上额外增加一些其他情况】 -
举栗子:
ATM取款:
-
编写测试用例
1)基本事件流:先插卡,然后输入密码,… ,最后退卡
2)备选事件流:
① 插入卡之后,卡被ATM卡住,… ,最后退卡
② 插入卡之后,输入密码错误,… ,最后退卡
…
5. 正交法
-
用的比较少,基本很少见。
-
正交试验设计法是指从大量的试验中挑选出适量的、有代表性的点,根据“正交表”从而合理地设计出测试用例
-
了解“正交表”
1)正交表的表示,如:L4(23),其中4代表4组试验/4行(也就是4个测试用例),3代表的是因素数/2列(也就是输入条件个数),2代表每个因素数对应的水平数(也就是每个输入条件的可能选项)
2)正交表特点:
① 每一列中,不同的数字出现的次数相同。(也就是水平数出现次数相同,但是各列之间的数字可以不同)
② 任意两列中数字的排列方式齐全且均衡。(每个组合出现的次数相同) -
根据正交表设计测试用例的步骤:
1)找出因素数和水平数
2)生成正交表,需要借助生成正交表的工具allpairs
3)根据正交表来编写测试用例
4)补充可能存在遗漏但是非常重要的测试用例 -
举栗子:
注册页面:姓名、电子邮箱、密码、确认密码、验证码。(也就是:因素)
每个因素对应的水平数都是:填写 or 不填写
1)找出因素数和水平数:
① 因素:姓名、电子邮箱、密码、确认密码、验证码
② 水平:填写、不填写
2)使用allpairs生成正交表:
①在excel中创建因素和水平,并进行复制
②打开pairs的文件夹,创建一个txt文件,并将刚刚的复制粘贴并保存
③然后使用cmd打开pairs所在的路径,然后 allpairs.exe 刚刚的文件 > 生成正交表的文件
(不用手动创建,自己会生成)
④ 正交表
利用allpairs生成的正交表跟实际的正交表可能有出入,但是仍然不影响我们使用allpairs生成正交表。
3)根据正交表编写测试用例
①填写姓名、电子邮箱、密码、确认密码、验证码。
②填写姓名,不填写电子邮箱、密码、确认密码、验证码。
③填写电子邮箱、确认密码,不填写项目、密码、验证码。
④填写密码、验证码,不填写姓名、电子邮箱、确认密码。
⑤填写姓名、电子邮箱、密码,不填写确认密码、验证码。
⑥填写确认密码、验证码,不填写姓名、电子邮箱、密码。
4)补充可能存在遗漏但是非常重要的测试用例
⑦ 全部都不填写姓名、电子邮箱、密码、确认密码、验证码。
- 如何使用allpairs生成正交表?
1)将水平和因素写入excel(其他工具也可以,但是不推荐)
2)在allpairs同级目录下创建一个新的txt文件,复制excel中的 因素数和水平数 粘贴到该txt文件中。直接保存(ctrl + s),不要做任何其他操作。
3)使用allpairs工具生成正交表(cmd):先cd到pairs路径,然后allpairs.exe 刚刚的文件 > 生成正交表结果的文件(不用手动创建,自己会生成)
6. 错误猜测法
- 概念:
错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针对性地设计测试用例的方法。 - 依赖测试人员的工作经验和积累。
✨ 小结
- 设计测试用例的万能公式:功能测试+性能测试+界面测试+兼容性测试+可用性测试+安全测试。
- 设计测试用例的具体方法:等价类、边界值、因果图(判定表:输入条件组合)、场景设计法(基本事件流和备选事件流)、正交法(allpairs)、错误猜测法(个人经验)。