黑盒测试是软件测试中的一类方法。在进行黑盒测试时,测试员并不知道程序是如何编写的,而是在规格说明指导下,输入一些测试用例,来检测程序的功能是否正确和完善。因而黑盒测试也被称为功能测试或基于规格说明的测试。理论上,如果我们可以输入大量的、足够的测试用例,就可以完美的测试软件的功能。这种近乎纸上谈兵的方法叫做穷举输入测试。而在真正的黑盒测试中,常用的方法有等价类划分、边界值分析、决策表测试等。接下来我讲谈论一下等价类划分的方法:
所谓的等价类是指输入域中的某个互不相交的子集集合。其目的是测试用例的无冗余性。等价类划分为有效等价类(满足规格说明)和无效等价类(不满足规格说明)。常用的等价类划分方法有:
▶ 按区间划分
▶ 按数值划分
▶ 按数值集合划分
▶ 按限制条件或规则划分
▶ 细分等价类
具体的内容不在这里陈述。
等价类的用例设计的步骤如下:
1.在确立等价类之后,可列出所有划分出的等价类表;
2.为每一个等价类规定一个唯一的符号;
3.设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,指导测试用例覆盖了所有的有效等价类;
4.设计一个新的测试用例。使其覆盖且只覆盖一个尚未覆盖的无效等价类。重复这一步,直到测试用例覆盖了所有的无效等价类
接下来,我将使用一个实例对上述方法进行演练:
下面是我用JS编写的一个输入框,它允许输入1-6个英文字符或数字,按“提交”按钮结束:
这个简单的程序的等价类划分为:
有效等价类 | 无效等价类 | |
长度 | 1-6 | 0,>6 |
字符 | 英文字符或数字 |
英文,数字以外的控制字符,标点符号 |
测试用例为:
编号 | 输入 | 预期输出 |
1 | length short | |
2 | dafddfdf | length long |
3 | dekajkd+ | length long |
4 | de+d4 | character false |
5 | dede | right |
程序实际输出截图如下:
1.
2.
3.
4.
5.
检验后,尚未发现程序中的bug。
这就是我所理解的等价类划分的测试方法。
下面是测试程序的代码:
1 <html> 2 <head> 3 <title>Software Testing</title> 4 </head> 5 <body> 6 <p>NAME: </p> 7 <form> 8 <input type="text" value = "" id = "input1"/> 9 <input type="submit" onclick="getText();"/> 10 </form> 11 12 <script language="JavaScript" Type="text/javascript"> 13 function getText(){ 14 var a = document.getElementById("input1").value; 15 var len = a.length; 16 if(len > 6){ 17 alert(a +" : length long"); 18 } 19 else if(len <= 0){ 20 alert(a +" : length short"); 21 } 22 else{ 23 var t = 1; 24 for(var i = 0;i<len;i++){ 25 if((a.charCodeAt(i)>='48'&&a.charCodeAt(i)<='57')|| 26 (a.charCodeAt(i)>='97'&&a.charCodeAt(i)<='122')|| 27 (a.charCodeAt(i)>='65'&&a.charCodeAt(i)<='90')){ 28 29 } 30 else{ 31 t = 0; 32 33 } 34 } 35 36 if(t==1){ 37 alert(a +" : right"); 38 } 39 else{ 40 alert(a +" : character false"); 41 } 42 } 43 44 } 45 </script> 46 </body> 47 </html>