使用逻辑覆盖测试方法测试以下程序段:
Public void sort(int IR,int It)
{
Int x=0, y=10;
While(IR>0)
{
If(It==0)
X=y+2;
}
Else{
If(It==1)
{
X=y+5;
}
Else{
X=y+10;
}
}
IR- -;
}
说明:程序段中每行开头的数字(1~10)是对每条语句的编号。
(1) 画出程序的控制流图(用题中给出的语句编号表示)。
(2) 简述什么是测试用例。白盒测试的动态测试要根据程序的控制结构设计测试用例简述其原则。
(3) 分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
参考答案:
(1) 程序控制流图
(2) 测试用例:
就是将软件测试的行为活动作一个科学化的组织归纳。测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。执行的最小实体。
测试用例应包括:测试目标和被测功能、测试环境和其他条件、测试数据和测试步骤。
白盒测试的动态测试要根据程序的控制结构设计测试用例,原则是
1)、保证一个模块中的所有独立路径至少被使用一次
2)、对所有逻辑值均需测试true和false
3)、在上下边界及可操作范围内运行所有循环
4)、检查内部数据结构以确保其有效性。
(3) 设计的测试用例如下:
覆盖策略 | 测试用例 | 执行路径 |
---|---|---|
语句覆盖(SC) | X=4 y=5 z=5 | 2→45→7→8→9 |
判定覆盖(DC) | X=4 y=5 z=5 X=2 y=5 z=5 | 2→45→7→8→9 2→7→9 |
条件覆盖(CC) | X=2 y=6 z=5 X=4 y=5 z=15 | 2→7→8→9 2→7→8→9 |
判定/条件覆盖(CDC) | X=4 y=6 z=5 X=2 y=5 z=15 | 2→45→7→8→9 2→7→9 |
条件组合覆盖(MCC) | X=4 y=6 z=5 X=4 y=5 z=15 X=2 y=6 z=5 X=2 y=5 z=15 | 2→45→7→8→9 2→7→8→9 2→7→8→9 2→7→9 |
路径覆盖 | X=4 y=6 z=5 X=4 y=5 z=15 X=5 y=5 z=5 X=2 y=5 z=15 | 2→45→7→8→9 2→7→8→9 2→45→7→9 2→7→9 |
(x>3)&&(z<10) | x>3 | z<10 | (x==4)||(y>5) | x==4 | y>5 | ||
---|---|---|---|---|---|---|---|
T | X=4 | Z=5 | T | T | F(Y=5) | SC | T |
T F | X=4 X=2 | Z=5 Z=5 | T T | T F | F(Y=5) F(Y=5) | DC | T F |
F(T F) F(F T) F(F T) F(T F) | X=4 X=2 X=2 X=4 | Z=15 Z=5 Z=5 Z=15 | T(T F) T(F T) T(F T) T(T F) | T F F T | F(Y=5) T(Y=6) T(Y=6) F(Y=5) | CC | A&&(B||C),A||(B||C) A=T,B=F,C=T A=F,B=T,C=F |
T(TT) F(FF) | X=4 X=2 | Z=5 Z=15 | T(T T) F(F F) | T F | T(Y=6) F(Y=5) | CDC | A&&(B||C),A||(B||C) A=T,B=T,C=T A=F,B=F,C=F |
T(TT) F(TF) F(FT) F(FF) | X=4 X=4 X=2 X=2 | Z=5 Z=15 Z=5 Z=15 | T(TT) F(TF) T(TF) F(FF) | T T F F | T(Y=6) F(Y=5) T(Y=6) F(Y=5) | MCC | A&&(B||C),A||(B||C) A------B--------C T------T--------T T----- T------- F T------F--------T T------F--------F F------F--------F F------F--------T F------T--------F F------T--------T |
T(TT) F(TF) T(TT) F(FF) | X=4 X=4 X=5 X=2 | z=5 z=15 z=5 z=15 | T(TT) T(TF) F(FF) F(FF) | T T F F | T(y=6 ) F(y=5) F(y=5) F(y=5) | DD路径覆盖 | 2→45→7→8→9 2→7→8→9 2→45→7→9 2→7→9 |