软件工程导论(第六版)部分课后习题答案 联系客服

发布时间 : 星期五 文章软件工程导论(第六版)部分课后习题答案更新完毕开始阅读c9249d28f01dc281e43af072

7-4:回答下列问题。

(1) 什么是模块测试和集成测试?它们各有什么特点?

(2) 假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计在对它进行测试期间将发现多少个错误?为什么? (3) 设计下列伪码程序的语句覆盖和路径覆盖测试用例。 解答:

(1)模块测试:保证每个模块能完成一个清晰定义的子功能而且和统计其他模块的功能之间没有相互依赖的关系。 集成测试:又称为组装测试,就是将软件产品中各个模块组装起来,检查其接口是否存在问题,以及组装后的整体功能、性能表现

(2)经验表明,在类似的程序中,单位长度里的错误数ET/IT近似为常数。美国的一些统计数字表明,通常:0.005<=ET/IT<=0.02,即在测试之前,每1000条指令中大约有5~20个错误。所以,在对1000行FORTRAN语句构成的程序进行测试期间将发现的错误的个数大约有25~100个。

(3)该伪码程序对应的程序流程图如下:

从上到下每个判定依次命名为a、b、c:

7-8:对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。要求:

(1) 根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间τ的关系曲线。在画这条曲线时做了什么假设?

(2) 为做到MTTF=100h,必须进行多长时间的集成测试?

(3)当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中? 解答: (1)因为平均无故障时间MTTF与测试时间τ之间存在线性关系,即MTTF=a+bτ, 由于:10=a+b,15=a+2b, 得到:a=5,b=5

故:平均无故障时间MTTF与测试时间τ之间存在线性关系为:MTTF=5+5τ

(2)为做到MTTF=100h,有方程:100=5+5τ,故τ=19 即必须进行19个月的集成测试。 (3)由于经验:平均无故障时间与单位长度程序中剩余的错误数成反比,故有: MTTF=10000/( K * (ET-EC(τ) ) )

由于:10=10000/( K * (ET-15) ),15 = 10000/( K * (ET-25) ) 得到:ET=45,K=33.33 当集成测试结束时,MTTF=100h,有:100 = 10000/( 33.33 * ( 45-EC(19) ) ) 故:EC(19)=42,即当集成测试结束时总共改正了42个错误,还有45-42=3个错误潜伏在程序中。

7-9:如对一个长度为100000条指令的程序进行集成测试期间记录下下面的数据: (a)7月1日:集成测试开始,没有发现错误。

(b)8月2日:总共改正100个错误,此时MTTF=0.4h (c)9月1日:总共改正300个错误,此时MTTF=2h 根据上列数据完成下列各题。 (1)估计程序中的错误总数。

(2)为使MTTF达到10h,必须测试和调试这个程序多长时间? (3)画出MTTF和测试时间τ之间的函数关系曲线。 解答:

(1)据估算平均无故障时间MTTF的公式有:

1/K(Et/100000-100/100000)=0.4 1/K (Et/100000-300/100000)=2 得:K=1000,Et=350 即程序中的错误总数达350。 (2)当MTTF=10h时,有 1/K (350/100000- Ec/100000)=10

得:Ec=340.按七八月分测试改错进度估算,还需进行2个月的集成测试。

(3)MTTF和测试时间τ之间的函数关系曲线如下:

7-10:在测试一个长度为24000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。经一个月测试后,甲发现并改正20个错误,使MTTF达到10h。与此同时,乙发现24个错误,其中6个甲也发现了。以后由甲一个人继续测试这个程序。问: (1) 刚开始测试时程序中总共有多少个潜藏的错误?

(2) 为使MTTF达到60h,必须再改正多少个错误?还需用多长测试时间? (3) 画出MTTF与集成测试时间τ之间的函数关系曲线。 解答:

(1)本题中采用的是分别测试法,测试前程序中的错误总数:B0=B1*B2/bc=20*24/6=80 (2)由于经验:平均无故障时间与单位长度程序中剩余的错误数成反比,故有: MTTF=24000/( K * (ET-EC(τ) ) ) 由于:10=24000/( K * (80-20) ) 得到:K=40 为使MTTF达到60h,有:60 = 24000/( 40 * ( 80-EC(τ) ) )

故:EC(τ)=70,即总共需要改正70个错误,由于测试员甲和乙分别测试时,测试员甲已经更正了20个错误,以后由甲一个人继续测试这个程序,因此,还需要更正70-20=50个错误。 补充:【复旦大学2001年博士研究生入学考试试题】某模块的程序流程图如下。试分别根据判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖等覆盖标准设计最少的测试用例。

第八章

8-1:软件的可维护性与哪些因素有关?在软件开发过程中应该采取哪些措施来提高软件产品的可维护性?

(1)1可理解性2可测试性3可修改性4可移植性5可重用