此时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个错误。
覆盖测试
1. 为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条
件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。
三、 条件覆盖
对于第一个判定(X>8 AND Y>5)
条件X>8取真值记为T1,取假值记为-T1 条件Y>5取真值记为T2,取假值记为-T2 对于第二个判定(X>0 OR Y>0)
条件X>0取真值记为T3,取假值记为-T3 条件Y>0取真值记为T4,取假值记为-T4 对于第三个判定(X>16 OR Y>10)
条件X>16取真值记为T5,取假值记为-T5 条件Y>10取真值记为T6,取假值记为-T6
五、 组合覆盖
1、X>8, Y>5 记做T1 T2,第一个判定的取真分支 2、X>8, Y<=5 记做T1 -T2,第一个判定的取假分支 3、X<=8, Y>5 记做-T1 T2,第一个判定的取假分支 4、X<=8,Y<=5 记做-T1 -T2,第一个判定的取假分支 5、X>0,Y>0 记做T3 T4,第二个判定的取真分支 6、X>0,Y<=0 记做T3 -T4,第二个判定的取真分支 7、X<=0,Y>0 记做-T3 T4,第二个判定的取真分支 8、X<=0,Y<=0 记做-T3 -T4,第二个判定的取假分支 9、X>16,Y>10 记做T5 T6,第三个判定的取真分支 10、X>16,Y<=10 记做T5 –T6,第三个判定的取真分支 11、X<=16,Y>10 记做-T5 T6,第三个判定的取真分支 12、X<=16,Y<=10 记做-T5 –T6,第三个判定的取假分支
基本路径测试方法
2、使用基本路径测试方法,为以下程序段设计测试用例。 void Do (int X,int A,int B) { 1 if ( (A>1)&&(B=0) ) 2 X = X/A;
3 if ( (A=2)||(X>1) ) 4 X = X+1; 5 } 一.控制流图:
二.计算环形复杂度:
环形复杂度:V(G)=10-7+2=5或V(G)=4+1=5 三.导出独立路径(用语句编号表示) 路径1: 1A→1B→2→3A→4→5 路径2: 1A→1B→2→3A→3X→4→5 路径3: 1A→1B→2→3A→3X→5 路径4: 1A→1B→3A→4→5 路径5: 1A→3A→3X→5 四、设计测试用例:
第八章习题
1.软件的可维护性与哪些因素有关?在软件开发过程中应该采取哪些措施才能提高软件产品的可维护性?
基本因素:可理解性,可测试性,可修改性,可移植性,可重用性。文档是影响软件可维护性的决定因素。
软件重用技术是能从根本上提高软件可维护性的重要技术。面向对象的软件技术是目前最成功的软件重用技术。
在进行需求分析时同时考虑维护问题。
尽可能在软件开发过程中保证各阶段文档的正确性。 重视程序结构的设计,使程序具有较好的层次结构。 使用维护工具或软件工程环境。 提高程序可读性,尽量使用高级语言编程
2. 什么叫预防性维护!:把今天的方法学应用到昨天的系统上,以支持明天的需要。实质
上是软件再工程。
百度的一张试卷 一、 填空题 1. 软件生命周期可划分为 、 和 3个时期,通常把这3个时期再细分为8个阶段,它们是① 、② 、③ 、④ 、⑤ 、⑥ 、⑦ 和⑧ ,其中的 阶段的工作量是8个阶段中最大的。 2. 可行性研究的任务是从 、 和 等三个方面研究 。 3. 至少应该从 、 、 和 4个方面验证软件需求的正确性,其中 和 这两个方面的正确性必须有用户的积极参与才能验证,而且为了验证这两个方面的正确性,往往需要开发 。 4. 软件总体设计时应遵循 、 、 、 、 、和 等6条基本原则。详细设计通常以 技术为逻辑基础,因为从软件工程观点看, 是软件最重要的质量标准之一。 5. 软件测试的目的是 ,通常把测试方法分为 和 两大类。因为通常不可能做到 ,所以精心设计 是保证达到测试目的所必须的。 6. 软件维护通常包括4类活动,它们分别是 、 、 、 。 二、判断下述提高软件可维护性的措施是否正确,正确的在括弧内写对,错的写错。 1. 在进行需求分析时同时考虑维护问题。 ( ) 2. 完成测试后,为缩短源程序长度而删去程序中的注释。 ( ) 3. 尽可能在软件开发过程中保证各阶段文档的正确性。 ( ) 4. 编码时尽可能使用全局变量。 ( ) 5. 选择时间效率和空间效率尽可能高的算法。 ( ) 6. 尽可能利用硬件的特点以提高效率。 ( ) 7. 重视程序结构的设计,使程序具有较好的层次结构。 ( ) 8. 使用维护工具或软件工程环境。 ( ) 9. 进行概要设计时尽可能加强模块间的联系。 ( ) 10. 提高程序可读性,尽可能使用高级语言编程。 ( ) 三、按下述要求完成给出的程序流程图,即在答案栏内写出图中A、B、C、D、E的正确内容 给程序输入二维数组W(I,J),其中I≤M,J≤N(MT N均为正整数)。程序打印出数组中绝对值最小的元素值Q=W(K,L),及其下标K、L的值。假定数组中仅有一个绝对值最小的元素。应该完成的程序流程图如下所示
[答案栏] A: B: C: D: E:
四、 下面给出了用盒图描绘的一个程序的算法,请用逻辑覆盖法设计测试方案,要求做到用语句覆盖和路径覆盖
五、 某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;