我理解等价类测试的工作原理。
它与边界值测试有何异同?
等价类测试
等价类测试是当你有许多测试项(例如值)需要测试,但由于成本(时间/金钱)的原因,你没有时间对它们进行全部测试。因此,你将测试项分组成类别,其中每个类别中的所有项都应该完全相同。理论上,你只需要测试每个项中的一个来确保系统正常工作。
示例1
2岁以下儿童免费乘坐公交车。年轻人支付10美元,成年人支付15美元,老年人支付5美元。
类别:
价格:0 -> 年龄:0-1
价格:10 -> 年龄:2-14
价格:15 -> 年龄:15-64
价格:5 -> 年龄:65-无穷大
示例2(多个参数)
手机K80、J64和J54运行Java 5。K90和J99运行Java 6。但是有两个可能的浏览器FireFox和Opera,J型号运行FF,K型号运行O。
类别:
浏览器:FF, Java:5 -> 手机:J64,J54
浏览器:FF, Java:6 -> 手机:J99
浏览器:O, Java:5 -> 手机:K80
浏览器:O, Java:6 -> 手机:K90
等价类测试的危险
在测试书籍中很少提到但非常重要的一点是使用等价类测试时存在风险。
仅仅因为两个项/值应该在同一类别中且表现相同,并不意味着它们确实表现相同。
边界值分析简单地意味着选择接近类别边界的值。因此,您仍然根据类别划分输入域,但是不要从类别中间选择值,而是使用边界值。
例如,如果输入条件为从20到70的范围,则您有三个输入类别:
因此,在进行边界值分析时,应选择输入=19、20、21、69、70、71。这种类型的分析可捕捉边界处的错误。
边界值分析是等价类划分的一部分或子集。在边界值分析中,只选择边界上的值,而不是一些随机值。
边界值分析克服了等价类划分的缺点。如果为移动电话号码(10位数字)指定固定长度,则:
在这种情况下,下限是数字-1(即10-1=9) 上限是数字+1(即10+1=11)
现在我们可以对9和11进行测试。
动态测试类型 -
基于规范的测试
A. 等价类划分
A1. 边界值分析
A2. 决策表
A3. 用例测试
A4. 状态转换测试
基于结构的测试
A. 测试覆盖率
B. 代码覆盖率
C. 语句覆盖率
D. 判定覆盖率
基于经验的测试
A. 错误测试
B. 探索性测试
等价类划分 - 这是一种测试人员将测试条件划分为组和集合的技术。系统应该等效地处理它们,因此称为等价类。从每个分区测试一个条件将起到假设所有条件都在该分区中工作的作用。
例如 >> 检查单个数字值的加法。即介于0和9之间的值。
小于-9的值,即-10,-11,…(无效分区)
小于0的值,即-1,-2,…直到-9(有效分区)
介于0-9之间的值,即0,1…直到9(有效分区)
大于9的值,即10,11(无效分区)
对于每个分区的任意两个值进行加法测试就足够了。
边界值测试 - 它基于在分区之间的边界进行测试。
例如 >> 考虑以下组合。
-9和-10的加法
-10和-11的加法
0和-1的加法
0和1的加法
9和10的加法
11和10的加法