第1题
设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例来测试程序的日期检查功能。
1)划分等价类并编号,下表为等价类划分结果
| 输入等价类 | 有效等价类 | 无效等价类 |
| 日期的类型及长度 | ①6位数字字符 | ②有非数字字符 ③少于6位数字字符 ④多于6位数字字符 |
| 年份范围 | ⑤在1990~2049之间 | ⑥小于1990 ⑦大于2049 |
| 月份范围 | ⑧在01~12之间 | ⑨等于00 ⑩大于12 |
测试数据 期望结果 覆盖的有效等价类
200211 输入有效 ①、⑤、⑧
3)为每一个无效等价类设计一个测试用例,设计结果如下:
| 测试数据 | 期望结果 | 覆盖的无效等价类 |
| 95June | 无效输入 | ② |
| 20036 | 无效输入 | ③ |
| 2001006 | 无效输入 | ④ |
| 1912 | 无效输入 | ⑥ |
| 200401 | 无效输入 | ⑦ |
| 200100 | 无效输入 | ⑨ |
| 200113 | 无效输入 | ⑩ |
用基本路径测试法进行测试,为以下程序段设计测试用例。
void Sort(int iRecordNum, int iType)
{
int x=0;
int y=0;
while (iRecordNum-->0)
{
if(0==iType)
{
x=y+2;
break;
}
else
if(1==iType)
x=y+10;
else
x=y+20;
}
}
第一步:程序流程图和程序控制流图
画出其程序流程图和对应的控制流图如下:
第二步:计算圈复杂度
有以下三种方法计算圈复杂度:
A 流图中区域的数量对应于环型的复杂性;
2-3-4-5-9-2 2-3-6-7-2 6-7-2-8-6
V(G)=3+1
B给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图 中结点的数量; V(G)=E-N+2=11-9+2=4
C 给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量V(G)=3+1=4
第三步:导出测试用例
根据上面的计算方法,可得出四个的路径。(一条路径是指,和其他的路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的路径的条数。
路径1:2-9
路径2:2-3-4-5-9
路径3:2-3-6-7-2-9
路径4:2-3-6-8-2-9
根据上面的路径,去设计输入数据,使程序分别执行到上面四条路径。
第四步:准备测试用例
为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到,满足上面例子基本路径集的测试用例是:
路径1:2-9
输入数据:iRecordNum=0,或者取iRecordNum<0的某一个值
预期结果:x=0
路径2:2-3-4-5-9
输入数据:iRecordNum=1,iType=0
预期结果:x=2
路径3:2-3-6-7-2-9
输入数据:iRecordNum=1,iType=1
预期结果:x=10
路径4:2-3-6-8-2-9
输入数据:iRecordNum=1,iType=2
预期结果:x=20
第3题
用逻辑覆盖法为以下程序段设计测试用例
int logicExample(int x, int y)
{
int magic=0;
if(x>0 && y>0)
{
magic = x+y+10; // 语句块1
}
else
{
magic = x+y-10; // 语句块2
}
if(magic < 0)
{
magic = 0; // 语句块3
}
return magic; // 语句块4
}
一、语言覆盖
测试用例:
{x=3, y=3}可以执行到语句块1和语句块4,所走的路径:a-b-e-f
{x=-3, y=0}可以执行到语句块2、语句块3和语句块4,所走的路径:a-c-d-f
二、判定覆盖
两个判断(x>0 && y>0)(记为P1)和(magic<0)(记为P2)
测试用例:
| 数据 | P1 | P2 | 路径 |
| x=3,y=3 | T | F | a-b-e-f |
| x=-3,y=0 | F | T | a-c-d-f |
两个判断(x>0 && y>0)(记为P1)和(magic<0)(记为P2),三个条件x>0(记为C1)、y>0(记为C2)和magic<0(记为C3)
测试用例:
| 数据 | C1 | C2 | C3 | 路径 |
| x=3,y=0 | T | F | T | a-c-e-f |
| x=-3,y=5 | F | T | F | a-c-e-f |
测试用例:
| 数据 | C1 | C2 | C3 | P1 | P2 | 路径 |
| x=3,y=3 | T | T | T | T | F | a-b-e-f |
| x=-3,y=0 | F | F | F | F | T | a-c-d-f |
三个条件x>0(记为C1)、y>0(记为C2)和magic<0(记为C3)
x>0 y>0 x>0 y<=0 x<=0 y>0 x<=0 y<=0
测试用例
| 数据 | C1 | C2 | C3 | P1 | P2 | 路径 |
| x=3,y=3 | T | T | T | T | T | a-b-d-f |
| x=3,y=0 | T | F | F | F | F | a-c-e-f |
| x=-3,y=2 | F | T | F | F | F | a-c-e-f |
| x=-3,y=0 | F | F | F | F | F | a-c-e-f |
测试用例:
| 数据 | C1 | C2 | C3 | P1 | P2 | 路径 |
| x=3,y=5 | T | T | T | T | T | a-b-d-f |
| x=0,y=2 | F | T | T | F | F | a-c-d-f |
| 这条路径不可能 | a-b-e-f | |||||
| x=-8,y=3 | F | F | F | F | F | a-c-e-f |