今天接着昨天的测试用例,继续说测试用例方法
1.边界值法
什么是边界?
边界是指输入框内能输入的最大值和最小值,边界值法是找到稍高于其边界值及稍低于其边界值的一些特定情况。边界值分析法也是一种常用的黑盒测试方法。大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。
比如只能输入1~100的数 边界值就是0,1,2,99,100,101
边界值的取值依据输入范围区间不同而有所不同,但都需要把上点值、离点值和内点值取到。
闭区间例如【1,10】 上点:1、10(上点是条件上的两个数) 内点:5 (内点是上点的中间数) 离点:0,11 (0,11是1,10的边界值)
开区间例如(1,10) 上点1、10 内点:5 离点:2,9(2,9 暂理解为闭区间取两边,开区间取“内”)。
半开半闭 (1,10】 上点1、10 内点:5 离点:2,11
边界值和等价类(上一篇有)区别:边界值分析不是从某等价类中随便挑一个作为代表,而是这个等价类的每个边界都要作为测试条件
常见的边界值
文本框接收字符个数,比如用户名长度,密码长度;
报表的第一行和最后一行;
数值元素的第一个和最后一个;
循环的第一次,二次和倒数第一次,二次。
2.因果图法
因果图法的定义
因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
特点
考虑输入条件的相互制约及组合关系
考虑输出条件对输入条件的依赖关系
因果图法产生的背景
等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽略了。
如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。
因果图核心
因果图比较适合输入条件比较多的情况,测试所有的输入条件的排列组合。所谓的原因就是输入条件,所谓的结果就是输出结果。
因果图法要注意考虑
所有输入/输出条件的相互制约关系以及组合关系
输入结果对输入条件的依赖关系,也就是什么样的输入组合会产生怎样的输出结果,即“因果关系”
因果图中的基本符号
通常在因果图中用Ci表示原因,用Ei表示结果,各结点标识状态,可取值“0”或“1”。“0”标识某状态不出现,“1”表示某状态出现。
恒等:若原因出现,则结果出现;若原因不出现,则结果不出现。
非:若原因出现则结果不出现,若原因不出现,则结果出现。
或:若几个原因中有一个出现,则结果出现,若几个原因都不出现,则结果不出现。
与:若几个原因都出现,则结果才出现;若其中一个原因不出现,则结果不出现。
因果图中的约束条件【科普】
互斥:E表示a,b,c三个原因不能同时成立
包含:I表示a,b,c中至少有一个条件成立
屏蔽(强制):M表示结果a是1,则结果b强制为0
唯一:O表示a、b、c条件中有且仅有一个成立
要求:R表示当a出现时b也必须出现
3.判定表法
因果图只是一种辅助工具,通过分析最终得到判定表,在通过判定表编写测试用例。但有时画因果图非常麻烦,影响测试效率,可以直接写判定表,进而编写测试用例。
判断表的组成
条件桩:所有条件
动作桩:所有输出(结果)
条件项:针对条件桩的取值
动作项:条件项的各种取值情况下的输出结果
判定表法流程
1.列出所有的条件桩和动作桩。
2.填入条件项。
3.填入动作项。得到初始判定表。
4.简化判定表(合并相似规则(相同动作)一般不用)
4.场景法
场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程。当拿到一个测试任务时,我们并不是先关注某个控件的边界值、等价类是否满足需求,而是先要关注它的主要功能和业务流程是否正确实现,这就需要使用场景法来完成测试。
当业务流程测试没有问题,也就是该软件的主要功能没有问题时,我们再重点从边界值、等价类等方面对控件进行测试
备注:在冒烟测试时也主要采用场景法进行测试
场景法中两个重要的概念
-基本流
-按照正确的业务流程来实现的一条操作路径(模拟正确的操作流程)
-备选流
-导致程序出现错误的操作流程(模拟错误的操作流程)
用例场景产生的背景
现在的软件几乎都是由事件触发来控制流程的,时间触发时的情景便形成了场景。而同一时间不同的触发顺序和处理结果形成事件流。
将这种在软件设计方面的思想引入到软件测试中,生动的描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时测试用例也更容易的得到理解和执行。
在使用场景法设计测试用例时,需要覆盖系统用例中的主成功场景和扩展场景,并且需要适当补充各种正反面的测试用例和考虑出异常场景的情形。
当使用场景法测试程序没有问题时,可以再使用边界值、等价类方法对账号、密码进行更加细致、完整的测试。