黑盒测试——等价类划分法实验
任务:
设某程序有两个输入:整数x1和整数x2,计算Y=f(x1,x2)。x1和x2的取值范围为1<= x1<=500,1<= x2<=500。当x1在[1,200) 取值且x2在[1,300] 取值时,Y=f(x1,x2) =x1+x2;当x1在[200,500] 取值且x2在[1,300] 取值时,Y=f(x1,x2) =x1-x2;对于定义域内其它x1和x2值,Y=f(x1,x2) =x1*x2。若输入定义域外的整数则显示“无效输入”。
要求:1、根据程序规格说明按等价类划分法给出各个等价类;
2、设计弱健壮等价类测试用例;
3、测试执行。
过程:
1、等价类划分
表1 等价类划分表
编号 | 输入条件 | 有效等价类 | 无效等价类 |
1 | 1≤x1<200 且 1≤x2≤300 | 是 | 否 |
2 | 200≤x1≤500 且 1≤x2≤300 | 是 | 否 |
3 | 1≤x1≤500 且 x2>300 | 是 | 否 |
4 | x1<1 或 x1>500 | 否 | 是 |
5 | x2<1 或 x2>500 | 否 | 是 |
2、等价类覆盖测试用例
表2 覆盖有效等价类测试用例表
编号 | 覆盖的有效等价类 | 测试数据 | 预期结果 | 实际结果 |
1 | 编号1 | (150, 250) | 400 | 400 |
2 | 编号2 | (350, 150) | 200 | 200 |
3 | 编号3 | (300, 350) | 105000 | 105000 |
4 | 编号1 | (199, 300) | 59700 | 59700 |
5 | 编号2 | (450,250) | 200 | 200 |
※被测程序并记录执行情况截图
表3 覆盖无效等价类测试用例表
编号 | 覆盖的无效等价类 | 测试数据 | 预期结果 | 实际结果 |
1 | 编号4 | (0, 100) | “无效输入” | “无效输入” |
2 | 编号4 | (501, 99) | “无效输入” | “无效输入” |
3 | 编号5 | (100, 0) | “无效输入” | “无效输入” |
4 | 编号5 | (99, 501) | “无效输入” | “无效输入” |
※被测程序并记录执行情况截图
测试源码 :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>New Document</title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content=""><script type="text/javascript">function add() {var varA = myForm.varA.value;var varB = myForm.varB.value;var sum = 0;if (varA.length<=0||varA.length>3)alert("无效输入");else if (varB.length<=0||varB.length>3)alert("无效输入");else if (!checkNum(varA) || !checkNum(varB))alert("无效输入.");else if (parseInt(varA) < 1 || parseInt(varA) > 500)alert("无效输入");else if (parseInt(varB) < 1 || parseInt(varB) > 500)alert("无效输入");else {if((1<=parseInt(varA) && parseInt(varA)<200) && (1<=parseInt(varB) && parseInt(varB)<300))sum = parseInt(varA) + parseInt(varB);else if((200<=parseInt(varA) && parseInt(varA)<=500) && (1<=parseInt(varB) && parseInt(varB)<=300))sum = parseInt(varA) - parseInt(varB);elsesum = parseInt(varA) * parseInt(varB);myForm.result.value = sum;document.getElementById("myForm.varA").focus();}}function checkNum(num) {var flag = true;if (num.charAt(0) < '0' || num.charAt(0) > '9') {flag = false;}return flag;}
</script></head><body><center><h3>输入1~500之间两个整数并计算Y=f(x1,x2)</h3>
</br></center><div align="center"><form name="myForm">姓名:<input type="text" name="name" /></br></br><input type="text" name="varA" /> +  <input type="text"name="varB" id="varB" />  <input type="button" name="submit"value=" = " onclick="add()" />  <input type="text"name="result" /> </form></div><center><p>输入两个1~500之间的整数,然后按"="计算Y=f(x1,x2). <br> 如果输入不符合要求,将给出相应提示.</p><p>实验1被测程序.</p></center>
</body>
</html>