2. 如果一个程序有两个输入数据,每个输入都是一个32 位的二进制整数,那么这个程序有多少个可能的输入?如果每微秒可进行一次测试,那么对所有可能的输入进行测试需要多长时间? 答:每个32 位的二进制整数具有23 2 个可能的值,因此,具有两个整数输入的程序应该具有 26 4 个可能的输入。 每微秒可进行一次测试,即每秒可进行106 个测试,因此,每天可进行的测试数为: 60× 60× 24× 106 =8.64× 101 0 这等于每年大约可进行3.139× 101 3 个测试。 因为21 0 =1024≈ 103 ,所以26 4 =(2 1 0 )6.4≈ 101 9 .2 。 51 32.1 91 01 01 3 9.31 0,所以做完全部测试将至少需要105 年 (即 10 万年)。 4.设计下列伪码程序的语句覆盖和路径覆盖测试用例: START INPUT(A,B,C) IF A>5 THEN X=10 ELSE X=1 END IF IF B>10 THEN Y=20 ELSE Y=2 END IF IF C>15 THEN Z=30 ELSE Z=3 END IF PRINT(X,Y,Z) STOP 答:(1) 语句覆盖的测试用例 因为每个判定表达式为真或为假时均有赋值语句,为了使每个语句都至少执行一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一次。下面是实现语句覆盖的典型测试用例: ① 使 3 个判定表达式之值全为假 输入:A=1, B=1, C=1 预期的输出:X=1, Y=2, Z=3 ② 使 3 个判定表达式之值全为真 输入:A=20, B=40, C=60 预期的输出:X=10, Y=20, Z=30 ( 2)路径覆盖的测试用例 本程序共有8 条可能的执行通路,为做到路径覆盖总共需要8 组测试数据。下面是实现路径覆盖的典型测试用例: ① 3 个判定表达式之值全为假 输入:A=1, B=1, C=1 预期的输出:X=1, Y=2, Z=3 ② 3 个判定表达式依次为假、假、真 输入:A=1, B=1, C=60 预期的输出:X=1, Y=2, Z=30 ③ 3 个判定表达式依次为假、真、假 输入:A=1, B=40, C=1 预期的输出:X=1, Y=20, Z=3 ④ 3 个判定表达式依次为假、真、真 输入:A=1, B=40, C=60 预期的输出:X=1, Y=20, Z=30 ⑤ 3 个判定表达式依次为真、假、假 输入:A=20, B=1, C=1 预期的输出:X=10, Y=2, Z=3 ⑥ 3 个判定表达式依次为真、假、真 输入:A=20, B=1, C=60 预期的输出:X=10, Y=2, Z=30 ⑦ 3 个判定表达式依次为真、真、假 输入:A=20, B=40, C=1 预期的输出:X=10, ...