前言
咱们晓得黑盒测试外面有很多的测试方法,有等价划分类,边界值剖析,谬误揣测法,随机数,因果图,断定表,正交试验,场景法等等,明天来聊聊等价类划分
一、什么是等价类划分法
太业余的词汇可能不容易了解,那我就用艰深的语言来解释吧。
等价类能够分为无效等价类和有效等价类,就是对程序来说是非法的输出。艰深的来解释呢,就是你去了一家面包店,无效等价类呢就是让你在这家店买面包,有效等价类呢就是让你在面包店买一只鸡回来。显然,面包在面包店是能够买的到的,就是无效的申请,鸡是个别在面包店买不到的(正经的面包店谁卖鸡啊)
含意:
1. 无效等价类就是对程序的规格阐明有意义的,正当的输出数据所形成的汇合,利用无效等价类可
验证程序是否实现了规格阐明中的性能和性能。
2. 有效等价类是那些对程序的规格阐明不合理或者无意义的数据所形成的,为了验证程序做其不应作的事件。
听懂了吗?那就再举例一个简略的程序吧,比方我设计一个程序,要求输出一个整数,而后输入这个整数的两倍的数值。
先剖析题目,题目要求是输出的是整数,很显然整数必定是一个无效的输出,即无效等价类,输出一个整数输入正确的数值
那如果,我输出的是小数、符号、字母呢?
显然,这些都会返回InputMismatchException
,输出不匹配异样,即输出的数据类型和设置承受的数据类型不统一。
所以,我能够很简略的划分出等价类,无效等价类为整数,有效等价类为非整数。
好了,简略理解了什么是等价类了,那咱们就持续深刻学习了
二、等价类划分准则
1. 在输出条件规定了取值范畴或值的个数的状况下,则能够确立一个无效等价类和两个有效等价类。
比如说身份证就固定了 18 位数字,手机号码 11 位等等。(留神这里只是关注长度,选择性疏忽其余问题)
2. 在输出条件规定了输出值的汇合或者规定了“必须如何”的条件的状况下,可确立一个无效等价类和一个有效等价类。
比方要求输出一个两位数,那就只有 [1,2,3,4...,99] 这个汇合里取无效等价类
3. 在输出条件是一个布尔量的状况下, 可确定一个无效等价类和一个有效等价类。
Boolean 值只有两个后果,true 和 false
4. 在规定了输出数据的一组值(假设 n 个),并且程序要对每一个输出值别离解决的状况下,可确立 n 个无效等价类和一个有效等价类。
比方要求输出的是一个数组,数组外面必须是 0 或 1,所以 0 和 1 就是无效等价类
5. 在规定了输出数据必须恪守的规定的情兄下, 可确立一个无效等价类 (合乎规定) 和若干个有效等价类(从不同角度违反规定)。
比方身份证号码,前 6 位是地址码,两头 8 位是出生年月日,前面是三位程序码加一位校检码。
6. 在确知已划分的等价类中各元素在程序处理中的形式不同的状况下, 则应再将该等价类进一步的划分为更小的等价类.
比方 2 里两位数先划分了 [1,2,3,4...,99] 这个无效等价类,如果我的程序对这个两位数的解决是:奇数就 +1,偶数就 /2,。所以还须要对这个汇合进行奇数和偶数的进一步划分。
三、设计测试用例步骤
1. 剖析确定等价类
2. 建设等价类表,列出所有划分出的等价类
3. 依据列出的等价类表,依据三个步骤设计用例
1) 为每个等价类规定惟一编号
2) 设计新的测试用例,尽可能的去笼罩未被笼罩的无效等价类,反复步骤直到所有无效等价类被笼罩
3) 设计新的测试用例,尽可能的去笼罩未被笼罩的有效等价类,反复步骤直到所有有效等价类被笼罩
四、等价类划分法的优劣
长处:思考到单个输出域的各类状况,防止了自觉或者随机选取数据的不完整性和笼罩的不稳定性,应用简略方便使用,同时可无效管制测试设计的数量,可能缩小肯定的工作量。
毛病:遇到组合的状况的话,等价类划分法是不足以解决问题的,同时等价类划分基于等价类中的输出都能产生雷同的成果,在很多状况下用例抉择不当会产生问题(如边界),还须要联合其余的办法来解决问题
五、小结
当呈现边界值的时候,仅仅用等价类划分法是无奈精确来判断的时候,就须要联合黑盒测试另外一个办法,边界值分析法。
举个简略的例子:A 攻打 B,B 反弹 80% 的挫伤,假如 A 和 B 的血量都是 1000 的时候,先进行一个简略的划分,很显著,A 的挫伤大于等于 1000 的时候,就能胜利。然而 B 也是会反弹挫伤的,所以须要进行边界值的判断,判断 A 的挫伤范畴达到哪个范畴之间,才不会被反伤打死导致平局。这时候就须要联合边界值分析法来辅助测试,通过计算得出当 A 挫伤为 1250 的时候,会因为 B 的反伤把本人血量升高为 0,那就要对这个值进行边界值剖析,判断 1250-,1250,1250+ 的时候,A 会不会死亡,这就是须要联合其余办法解决问题的时候。当然还有更深刻的探讨,要是 A 的挫伤小于 1000 的时候,B 须要多少的挫伤能力将 A 打死,如果是 A 也有反伤呢,B 是否获得胜利等等
所以做测试的时候,只依附一两种办法是比拟难来笼罩掉所有的状况的,常常会联合其余的