女 <55 职务 年龄 >=55 N=年龄-55 打开部门工资表 性别 <65 职务 男 年龄 >=65 N=年龄-65 处 科 工资*1.05 +50 +45 N=N-1 工资=工资+增资 处 科 工资*1.04 +50 +40 N=N-1 工资=工资+增资 写入工资表 写入工资表 写入工资表 写入工资表 下一职工? 下一部门? 普调工资的 N-S图
(上图只有女性普调工资的PAD图,男性普调工资的PAD图类似。)
11. 用六种逻辑覆盖技术对下面的流程图所表示的程序进行测试。
开始
OY N X>=80 and y>=80AB
x+y>=140 and
(x>=90 or y>=90) A=1
YC
A=2 E
结束
(1).语句覆盖:
X=85,Y=85(路径A-E);
X=95,Y=50 (路径B-C-E); X=75,Y=75 (路径B-D-E); (2) 判断覆盖:
X =85, Y=85 (判断1成立,判断2不成立) A-E; X=95, Y=50 (判断1不成立,判断2成立) B-C-E; X=75, Y=75 (判断1、判断2都不成立) B-D-E; (3)条件覆盖:
X=85,Y=85(判断1两条件成立) A-E ;
X=95,Y=50 (判断2中条件3、条件4成立) B-C-E;
X=50,Y=90 (判断2中条件3、条件5成立) B-C-E ; X=60,Y=60(判断1、判断2各个条件都不成立) B-D-E;
(4)判断/条件覆盖:
X=85,Y=85(判断1为Y 且两条件成立) A-E;
X=95,Y=50 (判断2为Y 且条件3、条件4成立)B-C-E; X=50,Y=95 (判断2为Y 且条件3、条件5成立)B-C-E;
X=60,Y=60(判断1、判断2为N 且各个条件都不成立) B-D-E;
NDA=3X=90,Y=90 (1)(5) X=50,Y=90 (2)(7) X=90,Y=50 (3)(6) X=70,Y=70 (4)(8) X=40,Y=90 (2)(11) X=90,Y=40 (3)(10) X=40,Y=40 (4)(12)
第9个条件本身自相矛盾,所以不能测试。 条件(1)与条件(9)(10)(11)(12)矛盾,所以也不能测试。 (
6)路径覆盖:判断/条件覆盖已经覆盖了全部路径。 12.根据下图按六种覆盖方法,设计测试用例
a bF(A>1) and (B=0) TcX=X/A dF(A=2) or (X>1) TeX=X+1
路径:
ace —— L1 abd —— L2 abe —— L3 acd —— L4
对于第一个判断:
条件 A>1 取真为T1 , 取假为 T1 条件 B=0 取真为T2 , 取假为 T2 对于第二个判断:
条件 A= 2 取真为T3 , 取假为 T3 条件 X>1 取真为T4 , 取假为 T4 ① 语句覆盖 ? 设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。 ? 在图例中,正好所有的可执行语句都在路径 L1 上,所以选择路径 L1 设计测试用例: T1T2 【 (2, 0, 4) 】
注:(2, 0, 4)即:A=2,B=0,X=4 下同。 ② 判定覆盖 ? 设计若干个测试用例,运行被测程序,不仅每个语句至少执行一次,而且每个判定的每
种可能的结果都应该至少执行一次。 ? 对于图例,如果选择路径 L3 和 L4 ,就可得满足要求的测试用例: 【(2, 1, 1)】覆盖 【 L3 】 【(3, 0, 3)】覆盖 【 L4 】 ③ 条件覆盖 ? 设计若干测试用例,运行被测程序,不仅每个语句至少执行一次,而且使判定表达式中
的每个条件都取到各种可能的结果。
测试用例 覆盖分支 条件取值
T1T2T3T4 【(2, 0, 4)】 L1
【(1, 1, 1)】 L2 T1T2T3T4需要注意的是,条件覆盖不一定满足判定覆盖,如:
测试用例 覆盖分支 条件取值 【(2, 0, 1)】 L1 T1T2T3T4 【(1, 1, 2)】 L3 T1T2T3T4④ 判定/条件覆盖 ? 设计足够的测试用例,使得判断表达式中的每个条件都取到各种可能的值,而且每个判
断表达式也都取到各种可能结果。
测试用例 覆盖分支 条件取值
T1T2T3T4 【(2, 0, 4)】 L1
【(1, 1, 1)】 L2 T1T2T3T4⑤ 条件组合覆盖 ? 设计足够的测试用例,运行被测程序,使得所有可能的条件取值组合至少执行一次。
T1T2记 ① A>1, B=0 作
② A>1, B≠0 作 1 TT2第一个判断
③ A≯1, B=0 作 T1T2 ④ A≯1, B≠0 作 T1T2
⑤ A=2, X>1 作 T 3 T4 ⑥ A=2, X≯1 作 T3T4第二个判断
T3T4T3T4 ⑦ A≠2, X>1 作 ⑧ A≠2, X≯1 作
测试用例 覆盖分支 覆盖条件 覆盖组合
【(2, 0, 4)】 (L1) T 1T2T3T4 ①, ⑤ 【(2, 1, 1)】 (L3) T 2 T 3 T 4 ②, ⑥ 1T 【(1, 0, 3)】 (L3) T 1T 4 ③, ⑦ 2T3T 【(1, 1, 1)】 (L2) T 2 T 1T3T4 ④, ⑧ ⑥ 路径覆盖 ? 就是设计足够的测试用例,覆盖程序中所有可能的路径。 测试用例 通过路径 覆盖条件 【(2, 0, 4)】 L1 T 1 T 2 T 3 T 4 【(1, 1, 1)】 L2 T1T2T3T4 【(1, 1, 2)】 L3 T 1 T 2 T 3 T 4 【(3, 0, 1)】 L4 T1T2T3T413. 某工厂公开招工,规定报名者的年龄应在16周岁至35周岁之间(到2005年3月30日止)。即出生年月不在上述范围内,将拒绝接受,并显示“年龄不合格”等出错信息。假定出生年月由6位数字字符表示,前4位代表年,后2位代表月。 (1)利用等价类法设计测试用例.
(2)利用边界值分析法设计测试用例。 等价类表如下 :
输入条件 出生年月
有效等价类 ①6位数字字符
无效等价类 ②有非数字字符
③少于6个数字符④多于6个数字符 ⑥ <197003 ⑦ >198903 ⑨等于0 ⑩>12
依据等价类法设计测试用例如下表:
对应数值
⑤在197003--- 198903之间
月份对应数值 ⑧在1—12之间