4.4日总结
白盒测试实验五

程序伪代码
注意:
1)参数表中EMPTAB 为职员表,DEPTTAB为部门表;
2) ESIZE为职员表长度,DSIZE为部门表长度;
3)ERRCODE为出错码
MAXSALERS = 0;
ERRCODE = 0;
if(ESIZE <= 0 || DSIZE <= 0)
ERRCODE = 1;
else
{
for(i = 1; i < DSIZE ; i++) //选出各部门中最大的销售额值
if(SALES[i] > MAXSALES)
MAXSALES = SALES[i];
for(j = 1; j < DSIZE; j++) //循环找出销售额最大的部门
if(SALES[j] == MAXSALES)
{
FOUND = false;
for(int k = 1; k < ESIZE ; k++) //检查销售额最大部门的所有人员
if(EMPTAB.DEPT(k) == DEPTTAB.DEPT(j))
{
FOUND = true;
if(SALARY(k) >= 15000.00 or JOB(k) = 'M') //满足条件的人员加工资
SALARY(k) = SALARY(k) + 100.00;
else
SALARY(k) = SALARY(k) + 200.00;
}
if(FOUND == false)
ERRCODE == 2;
}
}
采用判定覆盖、条件覆盖对该程序进行用例设计
1.判定覆盖测试用例设计(需覆盖所有判断分支)
空表测试
输入:ESIZE=0, DSIZE=0
预期:ERRCODE=1
覆盖分支:if(ESIZE <= 0 || DSIZE <= 0)
无最大销售额部门职员测试
输入:
DEPTTAB = [{Dept:"A", Sales:5000}, {Dept:"B", Sales:3000}]
EMPTAB = [{Name:"X", Dept:"C", Salary:8000}]
预期:ERRCODE=2
覆盖分支:if(FOUND == false)
正常加薪测试
输入:
DEPTTAB = [{Dept:"A", Sales:8000}, {Dept:"B", Sales:3000}]
EMPTAB = [
{Name:"X", Dept:"A", Salary:10000, Job:"E"},
{Name:"Y", Dept:"A", Salary:16000, Job:"E"},
{Name:"Z", Dept:"A", Salary:12000, Job:"M"}
]
预期:
X工资+200 → 10200
Y工资+100 → 16100(≥15000)
Z工资+100 → 12100(经理)
ERRCODE=0
覆盖分支:
if(SALARY(k) >= 15000.00 or JOB(k) = 'M') 的True/False分支
2.条件覆盖测试用例设计(需覆盖所有条件组合)
|
条件组合 |
测试用例描述 |
输入数据 |
预期结果 |
|
ESIZE≤0 ∧ DSIZE≤0 |
两表均为空 |
ESIZE=0, DSIZE=0 |
ERRCODE=1 |
|
ESIZE>0 ∧ DSIZE≤0 |
仅部门表为空 |
ESIZE=2, DSIZE=0 |
ERRCODE=1 |
|
ESIZE≤0 ∧ DSIZE>0 |
仅职员表为空 |
ESIZE=0, DSIZE=2 |
ERRCODE=1 |
|
有最大销售额部门 ∧ 有职员 ∧ 工资<15000 ∧ 非经理 |
普通职员加200 |
EMPTAB:[{Dept:"A",Salary:10000}] |
工资→10200 |
|
有最大销售额部门 ∧ 有职员 ∧ 工资≥15000 |
高薪职员加100 |
EMPTAB:[{Dept:"A",Salary:15000}] |
工资→15100 |
|
有最大销售额部门 ∧ 有职员 ∧ 是经理 |
经理职员加100 |
EMPTAB:[{Dept:"A",Salary:8000,Job:"M"}] |
工资→8100 |
|
有最大销售额部门 ∧ 无职员 |
部门无员工 |
EMPTAB:[{Dept:"B",Salary:8000}] |
ERRCODE=2 |

浙公网安备 33010602011771号