软件工程项目管理习题解答(全面) 下载本文

内容发布更新时间 : 2024/5/16 3:50:59星期一 下面是文章的全部内容请认真阅读。

2. 如果一个程序有两个输入数据,每个输入都是一个32位的二进制整数,那么这个程序有多少个可能的输入?如果每微秒可进行一次测试,那么对所有可能的输入进行测试需要多长时间?

答:每个32位的二进制整数具有232个可能的值,因此,具有两个整数输入的程序应该具有264个可能的输入。

每微秒可进行一次测试,即每秒可进行106个测试,因此,每天可进行的测试数为:

60×60×24×106=8.64×1010

这等于每年大约可进行3.139×1013个测试。

因为210=1024≈103,所以264=(210)6.4≈1019.2。

1019.25?10,所以做完全部测试将至少需要105年(即10万年)。 133.139?104.设计下列伪码程序的语句覆盖和路径覆盖测试用例:

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,Y=20,Z=3 ⑧ 3 个判定表达式全为真 输入:A=20,B=40,C=60

预期的输出:X=10,Y=20,Z=30

6. 使用基本路径测试方法,设计测试下面列出的伪码程序的测试用例: 1: START

INPUT(A,B,C,D) 2: IF(A>0)

3: AND(B>0) 4: THEN X=A+B 5: ELSE X=A-B 6: END 7: IF(C>A) 8: OR(D>B) 9: THEN Y=C-D 10: ELSE Y=C+D 11: END

12: PRINT(X,Y) STOP

答:用基本路径测试方法设计测试用例的过程,有下述4个步骤: (1) 根据过程设计的结果画出流图

与本题给出的伪码程序相对应的流图如图4.1所示。

125346789101112 图4.1 与第6 题伪码程序对应的流图

(2)计算流图的环形复杂度

使用下述3 种方法中的任一种都可以算出图4.1所示流图的环形复杂度为5。 ① 该流图共有15条边,12个结点,所以环形复杂度为 15-12+2=5

② 该流图共有5个区域,因此环形复杂度为5。 ③ 该流图中共有4个判定结点,因此环形复杂度为 4+1=5

(3)确定线性独立的路径的基本集合

所谓线性独立路径是指至少引入程序的一个新语句集合或一个新条件的路径,用流图术语来描述,独立路径至少包含一条在定义该路径之前不曾用过的边。

使用基本路径测试法设计测试用例时,程序的环形复杂度决定了程序中独立路径的数量,而且这个数值是确保程序中所有语句至少被执行一次所需的测试数量的上界。

对于图4.1 所示流图来说,由于它的环形复杂度为5,因此共有5长独立路径。下面列出了5条独立路径:

路径1:1—2—3—4—6—7—9—11—12 路径2:1—2—5—6—7—9—11—12 路径3:1—2—3—5—6—7—9—11—12 路径4: 1—2—3—4—6—7—8—9—11—12 路径5:1—2—3—4—6—7—8—10—11—12 (4)设计可强制执行基本路径的测试用例 ① 执行路径1 (两个判定表达式全为真) 输入:A=1,B=1,C=2,D=2(任意) 预期的输出: X=2,Y=0

② 执行路径2 (第一个判定表达式为假,第二个判定表达式为真) 输入:A=0,B=1,C=2,D=0(任意)