您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程七章以前复习与习题课
第七章复习内容与习题要点1、有关测试的重要概念要搞清楚,如单元测试、集成测试、验验测试、渐增式测试,非渐增式测试等概念要准确理解;2、白盒测试技术的逻辑覆盖方法必须一一掌握(如语句、判定、条件、判定/条件、条件组合、路径覆盖);3、白盒测试技术的(控制结构测试)基本路径测试必须掌握;4、黑盒测试中的等价分类与边界值分析方法的综合使用要掌握;5、软件可靠性的基本概念和计算要掌握,布置的习题要独立做;6、熟悉编码阶段的有关原则和风格。7-4回答下列问题:(2)假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计对其进行测试期间将发现多少个错误?为什么?(3)设计下列伪码程序的语句覆盖和路径覆盖测试用例:STARTINPUT(A,B,C)IFA5THENX=10ELSEX=1ENDIFIFB10THENY=20ELSEY=2ENDIFIFC15THENZ=30ELSEZ=3ENDIFPRINT(X,Y,Z)STOP7-4.(2)答:经验表明,在类似的程序中,单位长度里的错误数ET/IT近似为常数。美国的一些统计数字告诉我们,通常0.5X10-2≤ET/IT≤2X10-2也就是说,在测试之前每1000条指令中大约有5~20个错误。假设在该程序的每1000条指令中有10个错误,则估计在对它进行测试期间将发现的错误数为5000X10/1000=50(个)7-4.(3)答:语句覆盖的测试用例因为每个判定表达式为真或为假时均有赋值语句,为了使每个语句都至少执行一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一次。下面是实现语句的典型测试用例:①使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路径覆盖的测试用例本程序共有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补充习题:使用基本路径测试方法,设计测试下面伪代码程序的测试用例:STARTINPUT(A,B,C,D)IF(A0)AND(B0)THENX=A+BELSEX=A-BENDIF(CA)OR(DB)THENY=C-DELSEY=C+DENDPRINT(X,Y)STOP使用基本路径测试方法,首先绘出流图,代码语句编号如下:1:STARTINPUT(A,B,C,D)2:IF(A0)3:AND(B0)4:THENX=A+B5:ELSEX=A-B6:END7:IF(CA)8:OR(DB)9:THENY=C-D10:ELSEY=C+D11:END12:PRINT(X,Y)STOP解:用基本路径测试方法设计测试用例的过程,有下述4个步骤:⑴根据过程设计的结果画出流图1234679111258101:STARTINPUT(A,B,C,D)2:IF(A0)3:AND(B0)4:THENX=A+B5:ELSEX=A-B6:END7:IF(CA)8:OR(DB)9:THENY=C-D10:ELSEY=C+D11:END12:PRINT(X,Y)STOP⑵计算流图的环形复杂度下述3种方法可以算出上图所示流图的环形复杂度为5。①该流图共有15条边,12个结点,所以环形复杂度为15-12+2=5②该流图共有5个区域,因此环形复杂度为5。③该流图中共有4个判定结点,因此环形复杂性度为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—12123467911125810⑷设计可强制执行基本路径集合中每条路径的测试用例①执行路径1:1-2-3-4-6-7-9-11-12(两个判定表达式全为真)输入:A=1,B=1,C=2,D=2(任意)预期的输出:X=2,Y=0②执行路径2:1-2-5-6-7-9-11-12(第一个判定表达式为假,第二个判定表达式为真)输入:A=0,B=1(任意),C=2,D=0(任意)预期的输出:X=-1,Y=21:STARTINPUT(A,B,C,D)2:IF(A0)3:AND(B0)4:THENX=A+B5:ELSEX=A-B6:END7:IF(CA)8:OR(DB)9:THENY=C-D10:ELSEY=C+D11:END12:PRINT(X,Y)STOP③执行路径3:1-2-3-5-6-7-9-11-12(第一个判定表达式为假,第二个判定表达式为真)输入:A=1,B=0,C=2,D=0(任意)预期的输出:X=1,Y=2④执行路径4:1-2-3-4-6-7-8-9-11-12(两个判定表达式全为真)输入:A=1,B=1,C=0,D=-1预期的输出:X=2,Y=1⑤执行路径5:1-2-3-4-6-7-8-10-11-12(第一个判定表达式为真,第二个判定表达式为假)输入:A=1,B=1,C=0,D=2预期的输出:X=2,Y=21:STARTINPUT(A,B,C,D)2:IF(A0)3:AND(B0)4:THENX=A+B5:ELSEX=A-B6:END7:IF(CA)8:OR(DB)9:THENY=C-D10:ELSEY=C+D11:END12:PRINT(X,Y)STOP7-5某图书馆有一个使用CRT终端的信息检索系统,该系统有下列4个基本检索命令(见书175页)。要求:(1)设计测试数据以全面测试系统的正常操作;(2)设计测试数据以测试系统的非正常操作。名称语法操作BROWSE(浏览)b(关键字)7-5.解:⑴测试系统正常操作的测试数据①顺序执行下列3个命令:b(KEYWORD)s(L)d(N)其中,KEYWORD是正确的关键字;L是执行命令b后在屏幕上显示的约20个行号中的一个(至少应该使L分别为第一个、最后一个和中央一个行号);N是执行命令s后列出的索引号中的一个(至少应该使N分别为第一个、最后一个和中央一个索引号)。针对若干个不同的KEYWORD重复执行上述命令序列。②顺序执行下列2个命令:f(NAME)d(N)其中,NAME是已知的作者姓名;N是执行命令f后列出的索引号中的一个(至少应该使N分别为第一个、最后一个和中央一个索引号)。针对若干个不同的NAME重复执行上述命令序列。⑵测试系统非正常操作的测试数据①用过长的关键字作为命令b的参数:例如,b(reliabilitysoftwareandhardwarecombined)预期的输出:系统截短过长的关键字,例如,上列命令中的关键字可能性被截短为reliabilitysoftware②用不正确的关键字作为命令b的参数:例如,b(AARDVARK)预期的输出:显示出最接近的匹配结果,例如,执行上列命令后可能显示1.AARON,JULES(book)③用比执行命令b后列出的最大行号大1的数作为命令s的参数预期的输出:“命令s的参数不在行号列表中”④用数字和标点符号作为命令b和命令f的参数预期的输出:“参数类型错”⑤用字母字符作为命令s和命令d的参数预期的输出:“参数类型错”⑥用0和负数作为命令s和命令d的参数预期的输出:“参数数值错”⑦命令顺序错:例如,没执行命令b就执行命令s,或没执行命令s就执行命令d预期的输出:“命令顺序错”⑧命令语法错:例如,遗漏命令名b、s、d或f;或命令参数没用圆括号括起来预期的输出:“命令语法错”⑨命令参数空:例如,b()、s()、d或f()预期的输出:系统提供默认参数或给出出错信息⑩使用拼错了的作者姓名作为f的参数预期的输出:“找不到这们作者的著作”7-8对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。要求:(1)根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间t的关系曲线。在画这条曲线时做了什么假设?(2)为做到MTTF=100h,必须进行多长时间的集成测试?当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中?7-8.解⑴:因为MTTF与测试时间成正比,不妨假设在程序的平均无故障时间MTTF和测试时间t之间存在线性关系,即MTTF=a+bt根据题意可知,当t=1时MTTF=10,当t=2时MTTF=15,把这些已知的数据代入上列方程后行到下列的联立方程式解上列联立方程得出a=5,b=5因此,MTTF与t之间有下列关系MTTF=5+5t根据上列方程式画出平均无故障时间MTTF与测试时间t的关系曲线,如下图所示:15210baba202tMTTF⑵为使MTTF=100h需要的测试时间可由下面的方程式得出100=5+5t解上列方程式得t=19即,需要进行19个月的集成测试。已知平均无故障时间与单位长度程序中剩余的错误数成反比,具体到本题程序即有根据题意可知,改正了15个错误后MTTF=10,改正了25错误后MTTF=15,把这此已知的数据代入上列方程之后,得到下列的联立方程式))((10000tECETKMTTF=)]25(/[1000015)]15(/[1000010TTEKEK解上列联立方程式得到ET=45,K=33.33从而有:MTTF=已知当19个月的集成测试结束时MTTF=100h,带入上式100=10000/[33.33(45-EC(19))]所以EC(19)=42也就是说,当集成测试结束时总共改正了42个错误,还有45-42=3个错误潜伏在程序中。))(c45(33.310000tE7-10在测试一个长度为24000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。经一个月测试后,甲发现并改正20个错误,使MTTF达到10h。与此同时,乙发现24个错误,其中6个甲也发现了。以后由甲一个人继续测试这个程序。问:1)刚开始测试时程序中总共有多少个潜藏的错误?2)为使MTTF达到60h,必须再改正多少个错误?还需用多长测试时间?3)画出MTTF与集成测试时间t之间的函数关系曲线。7-10.答:⑴本题中采用了分别测试法,因此,可以估算出刚开始测试时程序中错误总数为ET=24/6X20=80⑵因为MTTF=IT/[K(ET-Ec)]及甲第一个月测试结果得:10=24000/[K(ET-20)]=24000/[K(80-20)]=24000/(60K)所以K=40由此MTTF=24000/[40(80-EC)]60=24000/[40X(80-EC)]所以EC=70为了使平均无故障时间达到60h,总共需要改正70个错误,测试员甲在与乙分别测试时已经改正了20个错误,因此,还需再改正70-20=50个错误。由于分别测试强调甲、乙独立测试能力相同,
本文标题:软件工程七章以前复习与习题课
链接地址:https://www.777doc.com/doc-5435722 .html