总体编写策略:
对于测试用例编写来说,常用的四种方法基本就够用了,等价类、边界值、正交实验法、错误推断法,辅以场景测试法、需求/设计转换法、探索式测试思想,可以应付绝大多数产品的测试。个别的产品还需要在某一点细化和扩充,需要就事论事。
使用各种编写方法的综合设计策略;
1)在任何情况下都必须使用边界值分析方法,经验表明用这种方法设计出测试用例发现程序错误的能力最强。
2)必要时用等价类划分方法补充一些测试用例,尤其注意无效等价类情况。
3)如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法(或判定表法、正交试验法)。
4)用错误推测法再追加一些测试用例,主要是利用测试经验。
5)对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例;参照白盒用例编写。
6)对程序的应用场景进行研究和思考,增加不同场景下的测试用例;用户场景测试必须重视,很大一部分程序错误就是因为测试场景与用户真实场景的差异性带来的。
7)对业务和程序有更深的理解之后,可以充分发挥发散思维和探索式想法;大家不要误解探索式测试就是漫无目的的测试,其实探索式测试有非常详细的测试指导思路。
一、测试用例的引入
首先要思考两个问题:什么是测试用例?测试用例的构成要素?
1.测试用例的定义
2.测试用例的构成要素
在实际工作中根据项目要求对用例设计要素可做调整,下图基本覆盖常见用例设计模板。
从上面两点可知:
测试用例的定义:软件测试的核心,为了特定的目的而设计的一组测试输入、执行条件、预期结果的输出文档;
测试用例构成要素:用例编号、用例标题、测试项目、用例级别、预置条件、测试输入、执行步骤预期结果。
二、黑盒测试用例设计方法
1.等价类
1、黑盒-等价类
等价类:选取少数有代表性的数据,这一类数据等价于这一类的其它值;找出最小的子集,可以发现最多的错误;
两大特性:必须设计的用例;涵盖了大部分情况;
两类情况:有效等价类;无效等价类;
转化为测试用例
1、按照输入条件、有效等价类、无效等价类建立等价类列表,列出所有的等价类;
2、为每一个等价类固定一个编号;
3、设计一个测试用例,使其覆盖一个或多个有效的等价类;
4、设计一个或更多的测试用例以覆盖剩余的有效等价类;
使用场景:输入条件(取值范围/值个数;必须值集合;布尔值;一组处理值;必须遵守的规则;再细分更小等价类;)
等价类举例:
以三角形测试为例:输入3个整数做为三角形的三个边,通过程序判定三角形的类型。
2、黑盒-边界值
边界值:所谓边界条件,是指输入和输出等价类中那些恰好处于边界、超过边界、或在边界以下的状态 ;
两个特征:选择一个或多个元素,以便等价类的每一个边界都经过了测试;与仅仅关注输入条件不同,还需要考虑结果空间(输出等价类)设计测试用例;
边界条件可能非常微妙,因此把他们确定下来煞费心思;
使用场景:输入+输出都需要考虑(值的范围;值个数;有序集合;内部数据结构;分析规格说明;)
边界值举例:
以三角形测试为例:输入3个整数做为三角形的三个边,1<a、b、c<10,通过程序判定三角形的类型;
3、黑盒-因果图
因果图:输入条件的组合进行分析。用一个系统的方法选择出高效的测试用例集;
分析思路:
1、分析规格说明描述,确定原因和结果,并赋予标识符;
2、分析规格说明语义,找出原因与原因之间,原因与结果之间关系,画出因果图;
3、有些原因与原因之间,原因与结果之间组合不会出现,用记号表明约束或限制条件;
4、因果图转换为判定表;
5、判定表的每一列作为依据,设计测试用例;
使用场景:必须考虑输入条件的各种组合(一种适合于描述多种条件的组合、相应产生多个动作的形式来进行设计);
案例:支付宝个人账户注册——验证用户名需求:第一项要求输入手机号或者电子邮箱作为账户名,第二项要求正确输入验证码,两项都验证成功后填写账户信息;但如果第一项校验不正确,则报错L(输入手机号或电子邮箱格式错误);如果第二项验证不成功,则报错M(验证码输入错误)。
4.因果图法
判定表法设计用例——规则数:2的n次方(n是条件数)
条件数:4 —> 规则:16
条件数:5 —> 规则:32
条件数:6 —> 规则:64
条件数:7 —> 规则:128
因果图:
1、考虑所有输入/输出条件的相互制约关系以及组合关系
2、考虑输入条件之间的依赖关系
3、再根据分析的关系来转化为判定表的规则
案例:支付宝个人账户注册——验证用户名需求:第一项要求输入手机号或者电子邮箱作为账户名,第二项要求正确输入验证码,两项都验证成功后填写账户信息;但如果第一项校验不正确,则报错L(输入手机号或电子邮箱格式错误);如果第二项验证不成功,则报错M(验证码输入错误)。
5.状态迁移图法
状态迁移图:首先要找出所有的状态,然后再分析各个状态之间的转换条件和转换路径。然后从其状态迁移路径覆盖的角度来设计测试用例。(多用于协议测试)
测试步骤:
案例:飞机售票系统
- 客户向航空公司打电话预订机票,此时机票信息处于“预定”状态
- 顾客支付了机票费用之后,机票信息变为“已支付”状态
- 旅行当天达到机场,拿到机票后,机票信息变为“已出票”状态
- 登机检票后,机票信息变为“已使用”状态
- 在等级之前任何时间都可以取消自己的订票信息,如果已经支付了机票费用,还可以退款,取消后,订票信息处于“已取消”状态
抽取四条路径:
路径1:预订—已取消 路径2:预订—已支付—已取消 路径3:预订—已支付—已出票—已取消 路径4:预订—已支付—已出票—已使用
6.场景法
软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。
重要概念:
-
基本流
-
备选流
-
(异常流)
场景1:基本流
场景2:基本流—备选流程1—基本流
场景3:基本流—备选流程2—基本流
场景4:基本流—异常流程1
场景5:基本流—备选流程2—异常流程2
场景6:基本流—备选流程1—备选流程2—异常流程2
场景7:基本流—备选流程1-备选流程2—基本流
场景8:基本流—备选流程1—异常流程1
案例:支付宝个人账户注册——验证用户名需求:第一项要求输入手机号或者电子邮箱作为账户名,第二项要求正确输入验证码,两项都验证成功后填写账户信息;但如果第一项校验不正确,则报错L(输入手机号或电子邮箱格式错误);如果第二项验证不成功,则报错M(验证码输入错误)。
设计用例如下:
- 用例1:第一项输入手机号,第二项验证码正确,进入填写账户信息页面
- 用例2:第一项输入电子邮箱,第二项验证码正确,进入填写账户信息页面
- 用例3:第一项输入不是手机号或者电子邮箱,报错L(输入手机号或者电子邮箱格式错误)
- 用例4:第一项输入手机号或者电子邮箱,第二项验证码错误,报错M(验证码输入错误)
7.正交实验法
正交实验设计方法:是由数理统计学科中正交实验方法进化出的一种测试多条件多输入的用例设计方法,从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法。
条件:因子 取值:水平。
正交实验设计方法步骤:
三、总结
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取