您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程导论第五版第七章
第7章实现7.1编码7.1.1选择程序设计语言7.1.2编码风格1.程序内部的文档2.数据说明3.语句构造4.输入输出5.效率7.2软件测试基础7.2.1软件测试的目标7.2.2软件测试准则7.2.3测试方法7.2.4测试步骤1.模块测试2.子系统测试3.系统测试4.验收测试5.平行运行软件工程导论(第五版)27.2.5测试阶段的信息流图7.1测试阶段的信息流7.3单元测试7.3.1测试重点1.模块接口2.局部数据结构3.重要的执行通路4.出错处理通路5.边界条件软件工程导论(第五版)37.3.2代码审查7.3.3计算机测试图7.2正文加工系统的层次图7.4集成测试7.4.1自顶向下集成图7.3自顶向下结合软件工程导论(第五版)47.4.2自底向上集成图7.4自底向上结合软件工程导论(第五版)57.4.3不同集成测试策略的比较7.4.4回归测试7.5确认测试7.5.1确认测试的范围7.5.2软件配置复查7.5.3Alpha和Beta测试7.6白盒测试技术7.6.1逻辑覆盖1.语句覆盖图7.5被测试模块的流程图2.判定覆盖3.条件覆盖4.判定/条件覆盖软件工程导论(第五版)65.条件组合覆盖6.点覆盖7.边覆盖8.路径覆盖7.6.2控制结构测试1.基本路径测试图7.6求平均值过程的流图2.条件测试3.循环测试软件工程导论(第五版)7图7.73种循环软件工程导论(第五版)87.7黑盒测试技术7.7.1等价划分7.7.2边界值分析7.7.3错误推测7.8调试7.8.1调试过程图7.8调试过程7.8.2调试途径1.蛮干法2.回溯法3.原因排除法软件工程导论(第五版)97.9软件可靠性7.9.1基本概念1.软件可靠性的定义2.软件的可用性7.9.2估算平均无故障时间的方法1.符号2.基本假定3.估算平均无故障时间4.估计错误总数的方法7.10小结习题71.下面给出的伪码中有一个错误。仔细阅读这段伪码,说明该伪码的语法特点,找出并改正伪码中的错误。字频统计程序的伪码如下:软件工程导论(第五版)102.研究下面给出的伪码程序,要求:(1)画出它的程序流程图。(2)它是结构化的还是非结构化的?说明理由。(3)若是非结构化的,则(a)把它改造成仅用3种控制结构的结构化程序;(b)写出这个结构化设计的伪码;(c)用盒图表示这个结构化程序。(4)找出并改正程序逻辑中的错误。软件工程导论(第五版)113.在第2题的设计中若输入的N值或KEYWORD不合理,会发生问题。(1)给出这些变量的不合理值的例子。(2)将这些不合理值输入程序会有什么后果?(3)怎样在程序中加入防错措施,以防止出现这些问题?4.回答下列问题。(1)什么是模块测试和集成测试?它们各有什么特点?(2)假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计在对它进行测试期间将发现多少个错误?为什么?(3)设计下列伪码程序的语句覆盖和路径覆盖测试用例:软件工程导论(第五版)125.某图书馆有一个使用CRT终端的信息检索系统,该系统有下列4个基本检索命令:要求:(1)设计测试数据以全面测试系统的正常操作;(2)设计测试数据以测试系统的非正常操作。6.航空公司A向软件公司B订购了一个规划飞行路线的程序。假设自己是软件公司C的软件工程师,A公司已雇用自己所在的公司对上述程序进行验收测试。任务是,根据下述事实设计验收测试的输入数据,解释选取这些数据的理由。领航员向程序输入出发点和目的地,以及根据天气和飞机型号而初步确定的飞行高度。程序读入途中的风向风力等数据,并且制定出3套飞行计划(高度,速度,方向及途中的5个软件工程导论(第五版)13位置校核点)。所制定的飞行计划应做到燃料消耗和飞行时间都最少。7.严格说来,有两种不同的路径覆盖测试,分别为程序路径覆盖和程序图路径覆盖。这两种测试可分别称为程序的自然执行和强迫执行。所谓自然执行是指测试者(人或计算机)读入程序中的条件表达式,根据程序变量的当前值计算该条件表达式的值(真或假),并相应地分支。强迫执行是在用程序图作为程序的抽象模型时产生的一个人为的概念,它可以简化测试问题。强迫执行的含义是,一旦遇到条件表达式,测试者就强迫程序分两种情况(条件表达式的值为真和为假)执行。显然,强迫执行将遍历程序图的所有路径,然而由于各个条件表达式之间存在相互依赖的关系,这些路径中的某一些在自然执行时可能永远也不会进入。为了使强迫执行的概念在实际工作中有用,它简化测试工具的好处应该超过它使用额外的不可能达到的测试用例所带来的坏处。在绝大多数情况下,强迫执行的测试数并不比自然执行的测试数大很多,此外,对强迫执行的定义实际上包含了一种技术,能够缩短在测试含有循环的程序时所需要的运行时间。程序的大部分执行时间通常用于重复执行程序中的DO循环,特别是嵌套的循环。因此必须发明一种技术,使得每个DO循环只执行一遍。这样做并不会降低测试的功效,因为经验表明第一次或最后一次执行循环时最容易出错。Laemmel教授提出的自动测试每条路径的技术如下。当编写程序时每个DO循环应该写成一种包含测试变量T和模式变量M的特殊形式,因此DOI=1TO38应变成DOI=1TOM*38+(1-M)*T可见,当M=0时处于测试模式,而M=1时处于正常运行模式。当处于测试模式时,令T=0则该循环一次也不执行,令T=1则该循环只执行一次。类似地应该使用模式变量和测试变量改写IF语句,例如IFX+Y0THENZ=XELSEZ=Y应变成IFM*(X+Y)+T0THENZ=XELSEZ=Y正常运行时令M=1和T=0,测试期间令M=0,为测试THEN部分需令T=+1,测试ELSE部分则令T=-1。要求:(1)选取一个包含循环和IF语句的程序,用Laemmel技术修改这个程序,上机实际测试这个程序并解释所得到的结果。(2)设计一个程序按照Laemmel技术自动修改待测试的程序。利用这个测试工具修改上一问中人工修改的程序,两次修改得到的结果一致吗?(3)怎样把Laemmel技术推广到包含WHILEDO和REPEATUNTIL语句的程序?(4)试分析Laemmel技术的优缺点并提出改进意见。软件工程导论(第五版)148.对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。要求:(1)根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间τ的关系曲线。在画这条曲线时做了什么假设?(2)为做到MTTF=100h,必须进行多长时间的集成测试?当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中?9.如对一个长度为100000条指令的程序进行集成测试期间记录下下面的数据:(a)7月1日:集成测试开始,没有发现错误。(b)8月2日:总共改正100个错误,此时MTTF=0.4h(c)9月1日:总共改正300个错误,此时,MTTF=2h据上列数据完成下列各题。(1)估计程序中的错误总数。(2)为使MTTF达到10h,必须测试和调试这个程序多长时间?(3)画出MTTF和测试时间τ之间的函数关系曲线。10.在测试一个长度为24000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。经一个月测试后,甲发现并改正20个错误,使MTTF达到10h。与此同时,乙发现24个错误,其中6个甲也发现了。以后由甲一个人继续测试这个程序。问:(1)刚开始测试时程序中总共有多少个潜藏的错误?(2)为使MTTF达到60h,必须再改正多少个错误?还需用多长测试时间?(3)画出MTTF与集成测试时间τ之间的函数关系曲线。
本文标题:软件工程导论第五版第七章
链接地址:https://www.777doc.com/doc-2011380 .html