软件工程七章以前复习与习题.ppt

上传人:小飞机 文档编号:6610829 上传时间:2023-11-17 格式:PPT 页数:55 大小:680KB
返回 下载 相关 举报
软件工程七章以前复习与习题.ppt_第1页
第1页 / 共55页
软件工程七章以前复习与习题.ppt_第2页
第2页 / 共55页
软件工程七章以前复习与习题.ppt_第3页
第3页 / 共55页
软件工程七章以前复习与习题.ppt_第4页
第4页 / 共55页
软件工程七章以前复习与习题.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《软件工程七章以前复习与习题.ppt》由会员分享,可在线阅读,更多相关《软件工程七章以前复习与习题.ppt(55页珍藏版)》请在三一办公上搜索。

1、第七章 复习内容与习题要点1、有关测试的重要概念要搞清楚,如单元测试、集成测试、验验测试、渐增式测试,非渐增式测试等概念要准确理解;2、白盒测试技术的逻辑覆盖方法必须一一掌握(如语句、判定、条件、判定/条件、条件组合、路径覆盖);3、白盒测试技术的(控制结构测试)基本路径测试必须掌握;4、黑盒测试中的等价分类与边界值分析方法的综合使用要掌握;5、软件可靠性的基本概念和计算要掌握,布置的习题要独立做;6、熟悉编码阶段的有关原则和风格。,7-4 回答下列问题:(2)假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计对其进行测试期间将发现多少个错误?为什么?

2、(3)设计下列伪码程序的语句覆盖和路径覆盖测试用例:STARTINPUT(A,B,C)IF A5THEN X=10ELSE X=1END IFIF B10THEN Y=20ELSE Y=2END IFIF C15THEN Z=30ELSE Z=3END IFPRINT(X,Y,Z)STOP,7-4(2)答:经验表明,在类似的程序中,单位长度里的错误数ET/IT近似为常数。美国的一些统计数字告诉我们,通常 0.5X10-2 ET/IT 2X10-2也就是说,在测试之前每1000条指令中大约有520个错误。假设在该程序的每1000条指令中有10个错误,则估计在对它进行测试期间 将发现的错误数为50

3、00X10/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

4、预期的输出: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预期

5、的输出:X=10,Y=20,Z=3 3个判定表达式全为真输入:A=20,B=40,C=60预期的输出:X=10,Y=20,Z=30,补充习题:使用基本路径测试方法,设计测试下面伪代码程序的测试用例:START INPUT(A,B,C,D)IF(A0)AND(B0)THEN X=A+B ELSE X=A-B END IF(CA)OR(DB)THEN Y=C-D ELSE Y=C+D END PRINT(X,Y)STOP,使用基本路径测试方法,首先绘出流图,代码语句编号如下:1:STARTINPUT(A,B,C,D)2:IF(A0)3:AND(B0)4:THEN X=A+B5:ELSE X=A-B

6、6:END7:IF(CA)8:OR(DB)9:THEN Y=C-D10:ELSE Y=C+D11:END12:PRINT(X,Y)STOP,解:用基本路径测试方法设计测试用例的过程,有下述4个步骤:根据过程设计的结果画出流图,1:STARTINPUT(A,B,C,D)2:IF(A0)3:AND(B0)4:THEN X=A+B5:ELSE X=A-B6:END7:IF(CA)8:OR(DB)9:THEN Y=C-D10:ELSE Y=C+D11:END12:PRINT(X,Y)STOP,计算流图的环形复杂度下述3种方法可以算出上图所示流图的环形复杂度为5。该流图共有15条边,12个结点,所以环形

7、复杂度为15-12+2=5该流图共有5个区域,因此环形复杂度为5。该流图中共有4个判定结点,因此环形复杂性度为4+1=5,确定线性独立路径的基本集合由于它的环形复杂度为5,因此共有5条独立路径,分别取为:路径1:12346791112路径2:1256791112路径3:12356791112路径4:123467891112路径5:1234678101112,设计可强制执行基本路径集合中每条路径的测试用例执行路径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(第

8、一个判定表达式为假,第二个判定表达式为真)输入:A=0,B=1(任意),C=2,D=0(任意)预期的输出:X=-1,Y=2,1:STARTINPUT(A,B,C,D)2:IF(A0)3:AND(B0)4:THEN X=A+B5:ELSE X=A-B6:END7:IF(CA)8:OR(DB)9:THEN Y=C-D10:ELSE Y=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-1

9、1-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=2,1:STARTINPUT(A,B,C,D)2:IF(A0)3:AND(B0)4:THEN X=A+B5:ELSE X=A-B6:END7:IF(CA)8:OR(DB)9:THEN Y=C-D10:ELSE Y=C+D11:END12:PRINT(X,Y)STOP,7-5 某图书馆有一个使用CRT终端的信息检索系统,该系统有下列4个基本检

10、索命令(见书175页)。要求:(1)设计测试数据以全面测试系统的正常操作;(2)设计测试数据以测试系统的非正常操作。,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后列出的索引

11、号中的一个(至少应该使N分别为第一个、最后一个和中央一个索引号)。针对若干个不同的NAME重复执行上述命令序列。,测试系统非正常操作的测试数据用过长的关键字作为命令b的参数:例如,b(reliability software and hardware combined)预期的输出:系统截短过长的关键字,例如,上列命令中的关键字可能性被截短为reliability software用不正确的关键字作为命令b的参数:例如,b(AARDVARK)预期的输出:显示出最接近的匹配结果,例如,执行上列命令后可能显示1AARON,JULES(book)用比执行命令b后列出的最大行号大1的数作为命令s的参数预

12、期的输出:“命令s的参数不在行号列表中”用数字和标点符号作为命令b和命令f的参数预期的输出:“参数类型错”用字母字符作为命令s和命令d的参数预期的输出:“参数类型错”,用0和负数作为命令s和命令d的参数预期的输出:“参数数值错”命令顺序错:例如,没执行命令b就执行命令s,或没执行命令s就执行命令d预期的输出:“命令顺序错”命令语法错:例如,遗漏命令名b、s、d或f;或命令参数没用圆括号括起来预期的输出:“命令语法错”命令参数空:例如,b()、s()、d或f()预期的输出:系统提供默认参数或给出出错信息使用拼错了的作者姓名作为f的参数预期的输出:“找不到这们作者的著作”,7-8 对一个包含100

13、00条机器指令的程序进行一个月集成测试后,总共改正了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

14、=2时MTTF=15,把这些已知的数据代入上列方程后行到下列的联立方程式 解上列联立方程得出a=5,b=5因此,MTTF与t之间有下列关系 MTTF=5+5t根据上列方程式画出平均无故障时间MTTF与测试时间t的关系曲线,如下图所示:,MTTF,为使MTTF=100h需要的测试时间可由下面的方程式得出 100=5+5t解上列方程式得 t=19即,需要进行19个月的集成测试。已知平均无故障时间与单位长度程序中剩余的错误数成反比,具体到本题程序即有根据题意可知,改正了15个错误后MTTF=10,改正了25错误后MTTF=15,把这此已知的数据代入上列方程之后,得到下列的联立方程式,MTTF=,解上

15、列联立方程式得到ET=45,K=33.33从而有:MTTF=已知当19个月的集成测试结束时MTTF=100h,带入上式 100=10000/33.33(45-EC(19)所以 EC(19)=42也就是说,当集成测试结束时总共改正了42个错误,还有45-42=3个错误潜伏在程序中。,7-10 在测试一个长度为24000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。经一个月测试后,甲发现并改正20个错误,使MTTF达到10h。与此同时,乙发现24个错误,其中6个甲也发现了。以后由甲一个人继续测试这个程序。问:1)刚开始测试时程序中总共有多少个潜藏的错误?2)为使MTTF达到60h

16、,必须再改正多少个错误?还需用多长测试时间?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=

17、50个错误。,由于分别测试强调甲、乙独立测试能力相同,则乙测试一个月发现了24个错,其中6个为甲发现的错误,这就相当于让甲继续测试一个月,即甲测试第二个月发现了20+24-6=38,则有MTTF=24000/40(80-38)=600/42=100/7(h)假设:MTTF=a+btMTTF=40/7+30/7t60=40/7+30/7t30t=420-4030t=380t=12.6(月)13(月)因为甲已经测试2个月了,则甲还需继续测试约11个月,(3)MTTF与时间t的函数曲线关系如下图,第六章习题解答及学习要点:1)什么结构化程序设计?使用顺序、分支和循环三种基本结构连接而成的单入口单出口

18、程序,见书经典定义;2)基本控制结构及扩展结构的含义和画法要准确理解;3)过程设计工具:程序流程图,N-S图,PAD图及过程设计语言PDL要熟练掌握;4)程序复杂程度的定量度量方法:McCabe与Halstead方法5)了解界面设计原理,3种基本的控制结构,其它常用的控制结构,图6.4 盒图的基本符号,习题,6-1 假设只有SEQUENCE和DO-WHILE两种控制结构,怎样利用它们完成IF-THEN-ELSE操作?,6-2 假设只有SEQUENCE和IF-THEN-ELSE 两种控制结构,怎样利用它们完成DO-WHILE操作?,Exp,A,Exp,START,END,T,F,T,F,P131

19、,第3题画出下列伪码程序的程序流程图和盒图。STARTIF P THEN WHILE q DO f END DO ELSE BLOCK g n END BLOCKEND IFSTOP,答:从该伪码程序转变成的程序流程图,注意DO WHILE与DO UNTIL结 构的严格区别,由该伪码转变成的盒图。注意DO WHILE与DO UNTIL结构的严格区别,P131,第四题:图6.18给出的程序流程图代表一个非结构化的程序,请问:1)为什么说它是非结构化的?2)设计一个与它等价的结构化程序。3)在2)题的设计中你使用附加的标志变量flag了吗?若没用,请再设计一个使用flag的程序;若用了,请再设计一

20、个不用flag的程序。,图6.18 一个非结构化程序,答:通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。图6.18所示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图4-1所示盒图描述了P条件的DO WHILE循环,图4-2所示描绘了q条件的DO UNTIL循环等价的结构化程序,请注意两种循环的控制条件。,不使用flag把该程序改造为等价的结构化程序的方法如图4-3所示。,F,T,P,g,(NOT P)OR(NOT q),图4-3,P131,第六题用

21、Ashcroft-Manna技术可以将非结构化的程序转换为结构化程序,下图是一个转换的例子。你能否从这个例子总结出Ashcroft-Manna技术的一些基本方法?进一步简化图6.19(b)给出的结构化设计。,答:从这个例子中看出,Ashcroft-Manna技术的基本方法是,当待改造的程序含有嵌套的非结构化的IF语句时,改造后的程序中增加DO-CASE语句和DO-UNTIL语句,并增加一个辅助变量I,I的初始值为1。最外层的IF语句在I=1时执行,执行完这个IF语句后把I赋值为随后应该执行的内层IF语句所对应的CASE标号值。DO-CASE语句的最大分支数(可执行的最大标号值)等于IF语句的个

22、数。当执行完最内层的IF语句之后,把I赋值为可执行的最大标号值加1,而DO-UNTIL循环的结束条件就是I等于这个值。,与图6.19(b)等价的,进一步简化后的结构化后的结构化程序的流程图。,5、研究下面伪代码程序:LOOP:Set I to(START+FINISH)/2If TABLE(I)=ITEM goto FOUNDIf TABLE(I)ITEM Set to FINISH to(I-1)If(FINISH-START)1 goto LOOPIf TABLE(START)=ITEM goto FOUNDIf TABLE(FINISH)=ITEM goto FOUNDSet FLAG

23、to 0Goto DONEFOUND:Set FLAG to 1DONE:EXIT,解(1):程序流程图(2):非结构化程序,因为循环结构有两个出口。,(3):结构化程序如图所示(4):二分查找算法,隐含的条件是升序排序,第5章 总体设计,概要设计的任务和过程;设计原理和启发式准则:模块化、抽象、数据局部化与隐藏、逐步求精、模块独立(耦合与内聚)、控制域、扇入扇出等;软件结构图形工具:H图与HIPO图;面向数据流的软件结构设计方法:变换流和事物流。,三、图3-1是某单位的工资管理系统数据流图。从图中描述可以看出:该系统首先收集教师、职工与月工资有关的数据(如姓名、工龄、工资级别工作量、加班时间

24、、矿工请假时间等,有些数据由人事科提供),并审核数据为正确数据;随后,系统取出审核过的正确数据,经过一系列与工资相关的计算和处理而得到工资数据,以此更新年度工资数据;最后针对不同用户需要生成各类工资报表,并将相关报表分发或送交给相应用户。请根据面向数据流图的结构化设计方法,在原数据流图上直接画出你所确定的输入流和输出流边界,并给出该系统的最终设计结果用层次图表示的软件结构。,第8章 维护(自学)习题:P201 1、2,例题选讲在日常教学过程中,教师广泛使用多媒体教室授课。根据一般常识可知,一个多媒体教室必须具备:教室(房间)、桌椅板凳、讲台、黑板、计算机、投影仪、屏幕、功放、麦克风、喇叭等设备及工具,现拟开发的一个多媒体教室管理系统,请按照面向对象分析方法和多媒体教室各种设备、工具的配置及使用常识,建立一个多媒体教室的对象模型(只画出对象模型图,不写分析过程)。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号