上次学习了软件测试相关的测试模型,以及等价划分法测试用例编写,接下来继续学习其他的测试用例方法
边界法
我们在使用软件的时候经常遇到一种输入数值的输入框,比如金额,比如0-100的整数,这个时候一般对这个输入的位数或者输入的数值有上限限制,这个时候往往在编写程序过程中经常会出现边界错误,所以针对这种最常见的错误,边界法由此而生,边界法基于等价分类法,即是等价分类法中最特殊的一种稍高于其边界值及稍低于其边界值的一些特定情况的测试用例
查找边界值
如何找到边界值呢?首先我们可以找到测试数据的边界点,即有效等价类和无效等价类边界范围,首先我们需要先给范围内的边界值进行一次测试,查看是否和预期结果一致,然后再去针对有效等价类边界的上一个有效值,以及无效等价类的第一个无效值进行验证操作,这三类值组成了边界法的用例测试编写范围。
例如:输入的参数值必须大于等于0同时小于等于100的整数的功能,代码编写可能是这样的:
if(value >= 0 && value <= 100){
.......
}
但是也有部分程序员代码是这么编写的:
if(value > -1 && value < 101){
.....
}
一个判定可能会有多种写法,都能实现一样的功能,但是代码编写过程中,可能会将>=误写为>,或者>-1这里误写为>= -1,这个时候这个功能的结果变了,而使用边界法则可以将-1、0、 1以及99、100、101这几个边界值都去覆盖测试一次,可以保障整个程序功能不会出现取值范围问题,而用例编写一般如下:
![](https://img.haomeiwen.com/i10006281/a59d7977dd1f397b.png)
常见的边界值
在开发过程/测试过程中有些边界值很常见,往往我们会优先把这些排除,并且这些地方也是出错概率最高的地方:
1.在遇到输入文本框有长度限制的时候,比如身份证,手机号码等,验证长度是否正确
2.在遇到报表的时候,重点关注第一行和最后一行
3.数组元素循环操作或者遍历操作的时候,重点关注第一个值和最后一个值是否满足
4.在做循环操作的时候,我们需要重点关注前两次循环和最后两次循环的操作是否正确
5.在文本输入框的时候,比如输入范围的数值的时候,或者小于某个值得时候,优先关注最大范围的值以及前后两个值,最小范围的值及前后两个值
因果图法
边界法虽然好用,但是仅限于只有一个范围的场景,如果需要测试的地方是多个条件的组合,例如A和B都存在,才会触发xxx,这个时候边界法就无法使用了,针对于多种组合进行分析,从而设计测试用例的方法,出现了因果图法,它适合于检查程序输入条件的各种组合情况,将其拆分为图解的方式
因果图中的基本符号
做过软件开发的都知道,在开发过程中经常会使用到各种运算符,例如A和B只要有一个成功则为成功,A和B之间的|运算符,以及&&运算符等,在软件测试也有对应的符号,只是有所不同的是,在软件测试中,会把业务逻辑中的组合关系按照对应关系符号的方式来表示,现在来认识一下这些符号吧
恒等
含义:若原因出现,则结果出现;若原因不出现,则结果也不出现
![](https://img.haomeiwen.com/i10006281/72aa6d5145d69849.png)
非(~)
含义:若原因出现,则结果不出现;若原因不出现,则结果出现
![](https://img.haomeiwen.com/i10006281/1191b3e3dc16a774.png)
或(∨)
含义:若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现
![](https://img.haomeiwen.com/i10006281/59ad9a3dff9a58f4.png)
与(∧)
含义:若几个原因都出现,则结果才出现;若其中一个原因不出现,则结果不出现
![](https://img.haomeiwen.com/i10006281/df5cd86c1d13aa1e.png)
有了基础的符号,那么我们进行组合的时候,是不是就出现了多种约束呢?在软件测试中,因果关系的约束条件分为了五种:
互斥
最多有一个可能成立(常见场景:下拉菜单)
![](https://img.haomeiwen.com/i10006281/8486d1b8b7fe3869.png)
包含
至少有一个必须成立(常见场景:下拉菜单,并且必须选择一个,否则给默认选中)
![](https://img.haomeiwen.com/i10006281/4ba9023aa04a0df4.png)
屏蔽
当A成立时B一定不成立;但是A不成立时,B不一定不成立,即A会屏蔽B的结果(比如今天29号,那么一定不是平年的二月,但是任何一年,二月的29号可能存在也可能不存在)
![](https://img.haomeiwen.com/i10006281/4461acae048b2f54.png)
唯一
三个原因中有且只有一个成立(常见场景:下拉菜单,比如快递公司选择等,只存在唯一的,彼此互斥,并且当前必须选择一个)
![](https://img.haomeiwen.com/i10006281/67be892c9556112e.png)
要求
一个出现以后另一个一定出现(常见场景:支付交易等,一步做完一定会出现固定的下一步)
![](https://img.haomeiwen.com/i10006281/c0e1e27426ad7ab1.png)
因果图使用步骤
因果图使用步骤很麻烦,在实际公司测试环节,很少使用,一般分为做图人员和测试人员,比如当前项目测试的负责人或者组长可能会把这些绘制成因果图,便于后期测试或者整理,但是仅限于少数专业团队,由于难度很高,并且及其耗时,所以很少会真的做因果图,或者针对核心部分做因果图即可,所以能正确理解因果图和使用步骤尤为重要,具体使用步骤如下:
1.找出所有的原因,原因即输入条件或输入条件的等价类
2.找出所有原因对应的结果,即输出条件
3.明确所有的输入条件之间的制约关系以及互相组合关系,并且针对这些确定对应的结果,即输出条件
4.将因果图绘制出来,并转换为判定表/决策表使用
5.把判定表/决策表中的每一列的情况设计为测试用例
判定表法
上面在步骤中我们可以看到因果图最终还要借助判定表法来最终出现设计用例,因为因果图使用不便,并且只是为了辅助,可以更好的分析出来条件和结果,而判定表则是针对因果图的分析和判定,从而科学的产出测试用例。同样的,在实际测试过程中,我们往往很少去做完因果图以后,再去判定表,往往会直接跳过因果图,直接写判定表产出测试用例,提高测试效率
判定表组成
判定表包含四个组成部分:条件桩、动作桩、条件项、动作项
条件桩
条件桩则是针对每一个问题的所有条件
动作桩
动作桩是针对于每一个问题和条件对应的输出结果
条件项
条件项是针对于每一个问题的条件中的取值
动作项
动作项则是针对每一个问题中取得条件的不同而最终产生的不同的输出结果
而使用判定表法,我们首先只需要列出来所有的条件桩和动作桩,填入对应的条件项,填入对应条件产生的
动作项,得到初始的判定表,这个时候我们可以将判定表中常见的或者规则一致的进行合并,简化判定表,
这样一个判定表就做好了
使用判定表法编写简单测试用例
现在我们来使用判定表法编写一个关于“好学生判定”功能的测试用例,现有需求如下:
在某个学校,认定一个学生是否为好学生的条件为成绩好、品德高尚并且遵纪守法,如果有任何一条不达
标,则不是好学生
现在,我们来根据已知信息来快速创建Excel,编写判定表,如下:
![](https://img.haomeiwen.com/i10006281/4444716a4c3d8255.png)
ps:上图中的第一行代表每一种组合方式的序号,一般我们会先把组合方式单独列在一个excel,并指定对应的编号,而条件桩这三行则是组合的全部条件类型,如果当前组合方式中使用了当前的条件,则是1,未使用则为0,动作桩这里,则是对结果的分类,如果当前每一列的组合方式中结果满足当前行,则填写Y(yes),不满足则不填,这样,就完成了当前的测试用例编写,如果使用因果图,再去编写判定表,可以试试,这里仅仅几行的条件桩使用因果图的方式起码也要双倍的时间,所以建议谨慎选择因果图法(熟悉每一个图的含义为主)或者专人专用的方式使用此种方式
网友评论