《白盒测试》
一、企业发放奖金根据利润提成,利润I低于或者等于10万元时,奖金可提10%;利润高于10万,低于20万元时候,其中10万元按10%提取,高于10万部分,可提成7.5%;2000001000000时,超过100万的部分按1%提成。从键盘输入当月利润,求应发放的奖金。
1. 使用逻辑覆盖测试方法设计测试用例
2. 使用基本路径测试方法设计测试用例
规定:
r=right
l=left
1、判定覆盖
设计相应的测试用例(为变量i赋予特定的值),可以使判定A、B、C、D、E、G分别为真和假。
表1 判定覆盖测试用例
2、条件覆盖
设计若干测试用例,执行被测程序以后,要使每个判定中每个条件的可能取值至少满足一次。
表2 条件覆盖测试用例
3、判定-条件覆盖
设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次。
表3判定-条件覆盖测试用例
4.条件组合覆盖
设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。
表4 条件组合覆盖测试用例
4、基本路径覆盖
涉设计所有的测试用例来覆盖程序中的所有可能的、独立的执行路径。
(1).根据测试用例编写主要代码如下:
1public static void main(String[] args) {
// TODO Auto-generated method stub
2 Scanner sc=new Scanner(System.in);
3 double i=sc.nextDouble();
4 double w=1;
5 if(i>0&&i<=100000){
6 w=i*0.1;
7 }
8 if(i>100000&&i<=200000){
9 w=10000+(i-100000)*0.075;
10 }
11 if(i>200000&&i<=400000){
12 w=17500+(i-200000)*0.05;
13 }
14 if(i>400000&&i<=600000){
15 w=27500+(i-400000)*0.03;
16 }
17 if(i>600000&&i<=1000000){
18 w=33500+(i-600000)*0.015;
19 }
20 if(i>1000000){
21 w=39500+(i-1000000)*0.01;
22 }
23 System.out.println("您所得的提成为"+w+"元!");
24}
可得如下程序流程图:
(2).计算程序环路复杂度为6.
(3).确定基本路径
①.5—>9—>23
②.5—>11—>12—>23
③.5—>11—>14—>15—>23
④.5—>11—>14—>17—>18—>23
⑤.5—>11—>14—>17—>20—>21—>23
⑥5—>11—>14—>17—>20—>23
(4).准备测试用例,确保基本路径组中的每一条路径被执行一次。
①.i=50000 可以覆盖路径5—>9—>23
②.i=110000 可以覆盖路径5—>11—>12—>23
③.i=220000 可以覆盖路径5—>11—>14—>15—>23
④.i=440000 可以覆盖路径5—>11—>14—>17—>18—>23
⑤.i=660000 可以覆盖路径5—>11—>14—>17—>20—>21—>23
⑥i=1200000 可以覆盖路径5—>11—>14—>17—>20—>23
二、某系统登录函数如下:
private void button1_Click(object sender, EventArgs e)
{
string u_user = TextBoxusername.Text.ToString().Trim();
string u_pwd = TextBoxpwd.Text.ToString().Trim();
bool a = username.Equals(u_user);
bool b = pwd.Equals(u_pwd);
if ("".Equals(u_user) || "".Equals(u_pwd))
Labelerrorinfo.Visible = true;
else
{
if (a && b)
Response.Redirect("index.htm");
else
Labelerrorinfo.Visible = true;
}
}
3. 使用逻辑覆盖测试方法设计测试用例
4. 使用基本路径测试方法设计测试用例
规定:
r=right
l=left
1.判定覆盖
设计相应的测试用例(为变量赋予特定的值),可以使判定A、B分别为真和假。
2.条件覆盖
设计若干测试用例,执行被测程序以后,要使每个判定中每个条件的可能取值至少满足一次。
3.判定-条件覆盖
设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次。
4.条件组合覆盖
设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。
5、基本路径覆盖
涉设计所有的测试用例来覆盖程序中的所有可能的、独立的执行路径。
(1).根据测试用例代码如下:
1 private void button1_Click(object sender, EventArgs e)
2 {
3 string u_user = TextBoxusername.Text.ToString().Trim();
4 string u_pwd = TextBoxpwd.Text.ToString().Trim();
5 bool a = username.Equals(u_user);
6 bool b = pwd.Equals(u_pwd);
7 if ("".Equals(u_user) || "".Equals(u_pwd))
8 Labelerrorinfo.Visible = true;
9 else
10 {
11 if (a && b)
12 Response.Redirect("index.htm");
13 else
14 Labelerrorinfo.Visible = true;
15 }
16 }
可得如下程序流程图:
(2).计算程序环路复杂度为3.
(3).确定基本路径
①7—>8—>16.
②7—>11—>12—>16.
③7—>11—>14—>16.
(4).准备测试用例,确保基本路径组中的每一条路径被执行一次。
①u_use=””、 u_pwd=”” 可以覆盖路径7—>8—>16.
②u_use=”han”、 u_pwd=”0616” 可以覆盖路径7—>11—>12—>16.
③u_use=”jjh”、 u_pwd=”1212” 可以覆盖路径7—>11—>14—>16.