软件工程学:实现_第1页
软件工程学:实现_第2页
软件工程学:实现_第3页
软件工程学:实现_第4页
软件工程学:实现_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通常把编码和测试统称为实现。,第7章实现,本章介绍编码和测试两个阶段,其中主要介绍进行单元测试、集成测试、确认测试的方法和步骤,设计测试方案的白盒和黑盒测试技术,以及软件可靠性的相关概念。,软件测试的任务:根据软件开发各阶段的文档资料和程序的内部结构,精心设计一组测试方案,用这些方案执行程序,找出软件中潜在的各种错误和缺陷,并进行调试纠错。,编码是详细设计的自然结果,是将详细设计得到的处理过程描述转换为基于某种程序设计语言的程序。,软件测试的目的:在软件投入生产运行之前,尽可能多地发现软件中的错误和缺陷。,防不胜防的软件错误例1:1963年,美国,飞往火星的火箭爆炸,损失$10million.原因:FORTRAN循环DO5I=1,3误写为DO5I=1.3,例2:1996年,美国WashingtonPost报导Dallas,Aug.23ThecaptainofanAmericanAirlinesjetthatcrashedinColombialastDecemberenteredanincorrectone-lettercomputercommandthatsenttheplaneintoamountain,theairlinesaidtoday.,第7章实现,第7章实现,Thecrashkilledallbutfourofthe163peopleaboard.AmericansinvestigatorsconcludedthatthecaptainoftheBoeing757apparentlythoughthehadenteredthecoordinatesfortheintendeddestination,Cali.ButonmostSouthAmericanaeronauticalcharts,theone-lettercodeforCaliisthesameastheoneforBogota,132milesintheoppositedirection.ThecoordinatesforBogotadirectedtheplanetowardthemountain,accordingtoaletterbyCecilEwell,Americanschiefpilotandvicepresidentforflight.ThecodesforBogotaandCaliaredifferentinmostcomputerdatabases,Ewellsaid.,软件测试是保证软件质量的关键步骤,是对软件规格说明、设计和编码的最后复审,其工作量约占总工作量40%以上(对于人命关天的系统,测试相当于其它开发总成本的3-5倍)。这意味着,写出程序代码并不是开发工作接近完成,实际上还有大约同样多甚至更多的工作需要做。,第7章实现,1.编码,2、编码风格,程序代码应简明清晰、易读易懂,应遵循以下规则:程序内部应该有很好的文档(标示符、注释、组织等)数据说明应该易于理解便于查阅(说明次序、实现方法等)语句构造应该尽可能简单直观输入输出风格遵守人机界面设计准则效率满足用户需求即可(运行时间、存储效率、I/O效率等),2.软件测试基础,定义:测试是为了发现程序中的错误而执行程序的过程。,1、软件测试的目标,目标:证明程序有错误,从而发现错误并排除错误。,2、软件测试指导原则,所有的测试都应该追溯到用户需求应该在测试开始之前制定严格的测试计划把Pareto原理应用到软件测试中应该从“小模块”开始,逐步过渡到“大模块”的测试不可能进行穷举测试测试方案应作为文档长期保存应该由独立的第三方进行测试,3、软件测试方法与技术,2.软件测试基础,(1)静态测试与动态测试,静态测试是指被测试程序不在机器上运行,而是采用人工测试或计算机辅助分析的手段对程序进行的测试。动态测试是指通过实际运行被测试程序从而发现错误的测试。,(2)黑盒测试与白盒测试,黑盒测试(black-box,orclosed-boxtesting):Makesurethateverykindofinputissubmitted,andtheoutputobservedmatchestheoutputexpected.Functionaltesting,白盒测试(white-box,oropen-box,clear-boxtesting):Usethestructureoftheprogramtotest.Structuraltesting,动态测试三过程:设计方案、执行程序、分析结果并发现错误,(3)穷举测试与选择测试,2.软件测试基础,若程序1次执行需10-3秒,则对于所有合法输入的测试大约需用1万年,而且还应测试输入非法数据的情况。,因此:穷举测试(completetest)通常是不可能的,说明黑盒、白盒测试都不可能使测试达到彻底。在实际中只能选择一些有代表性的典型用例进行有限测试。,例1:(Black-box)程序要求输入3个整型数据。若字长16位,则各种可能输入的排列组合共有(种),例2:(White-box)右图所示的程序中共有5201014条可能的执行通路,显然,每条通路都执行一遍是不现实的。,4、软件测试步骤,(1)ModuletestingprogramdesignA=2,X1)A=1,B=1,X=1(满足A1,B0;A2,X1),问:条件覆盖?判定覆盖,答:不一定。反例:A=2,B=0,X=1A=1,B=1,X=2,判定/条件覆盖:即判定覆盖条件覆盖,条件覆盖(Conditioncoverage),6.白盒测试技术,条件组合覆盖,全部可能的条件组合为:A1,B=0A1,B0A1,B=0A1,B0A=2,X1A=2,X1A2,X1A2,X1,Testcases:A=2,B=0,X=4(TT)A=2.B=1,X=1(FT)A=1,B=0,X=2(FT)A=1,B=1,X=1(FF),问题:没有测试到(TF)的情形,每个判定表达式中条件的各种可能组合都至少出现一次。,6.白盒测试技术,点覆盖,边覆盖,=语句覆盖,路径覆盖(Pathcoverage),=判定覆盖,Testcases:A=1,B=1,X=1A=1,B=1,X=2A=3,B=0,X=1A=2,B=0,X=4,路径覆盖条件组合覆盖,考察Controlflowgraph的角度,还可考虑下述覆盖:,每条可能的路径都至少执行一次,若图中有环,则每个环至少经过一次。,6.白盒测试技术,2、控制结构测试,6.白盒测试技术,基本路径测试,基本路径测试是T.McCabe提出的一种白盒测试技术,其步骤如下:,第1步根据过程设计结果画出流图。如P.166,第2步计算流图的环形复杂度。V=6,第3步确定线性独立路径的基本集合。独立路径是至少包含一条在定义该路径之前不曾用过的边。,Independentpath:path1:1-2-10-11-13path4:1-2-3-4-5-8-9-2-path2:1-2-10-12-13path5:1-2-3-4-5-6-8-9-2-path3:1-2-3-10-11-13path6:1-2-3-4-5-6-7-8-9-2-,第4步设计可强制执行基本集合中每条路径的测试用例。,注意:基本路径测试可以保证程序中每条语句至少执行一次,且每个条件在执行时都将分别取真、假值。基本路径测试中某些独立路径不能以独立的方式测试。,6.白盒测试技术,条件测试,条件测试技术设计的用例,能够检查程序模块中包含的逻辑条件。其测试策略是:对于任何复合条件,设计用例以能保证真分支、假分支及每个简单条件都至少执行一次。,K.C.Tai提出的BRO(BranchandRelationalOperator)测试是一种比较有效的条件测试策略:如果在条件中所有布尔量和关系算符都只出现一次而且没有公共变量,则能保证发现该条件中的分支错和关系算符错。,E1和E2是算术表达式,关系算符是、之一,但仅需要3个测试分别使E1的值小于、等于、大于E2就能够发现算符的错误。,如:E1关系算符E2,6.白盒测试技术,例1:B1typeshortstr=array1.6ofchar;要求被处理的数字串是右对齐的,即在少于6个字符的串左边补空格。负号在最高位数字左边一位。试用等价划分法设计测试方案。,7.黑盒测试技术,解:首先根据规格说明划分等价类。考虑到PASCAL编译器的固有检错功能,测试时不需要使用长度不等于6的数组,也不需要用非字符数组类型的参数。有效输入类:16个数字字符组成的数字串(最高位非0);最高位为0的数字串;最高位左邻负号的数字串;无效输入类:空字符串(6位空格);左边补位的既非0亦非空格;最高位右边含有空格;最高位右边含有其它非数字字符;负号与最高位间有空格;,7.黑盒测试技术,下面根据等价划分,设计出一套测试方案:,7.黑盒测试技术,7.黑盒测试技术,思路:列出可能有的错误;列出容易发生错误的特殊情况。以此为基础设计测试方案。根据:直觉、经验工具:常见错误清单、判定表等。,7.黑盒测试技术,2、边界值分析(BoundaryValueAnalysis),程序最容易在边界发生错误;通常与等价划分结合进行。,3、错误推测(FailurePrediction),错误推测是推测被测试程序中哪些地方容易出错,并据此设计测试方案。,注:对多个输入数据的组合应测试其组合效应;白盒测试在早期测试进行,黑盒测试在后期进行;对发现较多错误的程序段,应进行着重的测试。,8.调试(Debugging),测试发现错误调试改正错误,第1步:确定错误的位置(占95%工作量);第2步:改正错误。,调试(纠错)是在经成功测试发现错误之后,确定错误的位置并改正错误的过程。,1、调试过程,Executionofcases,Debugging,Additionaltests,Suspectedcauses,Identifiedcauses,Corrections,Regressiontests,Debugging,8.调试,调试是软件开发过程中最艰巨的脑力劳动,其原因在于心理方面、技术方面以及软件错误的自身特征方面。,激活对程序运行过程的跟踪,在程序中插入write(输出)语句,以八进制或十六进制的形式印出存储器的内容。通过分析这些大量的信息来发现错误的原因。,8.调试,2、调试途径,(1)蛮干法,缺点:输出信息量极大,不易解读且大多无用(浪费时间和精力);输出的是程序在某一时刻的静态情况,且往往不是出错时的状态;改动源代码,增加出错机会。,(2)回溯法,8.调试,由症状(symptom)最先出现的地方,沿程序的控制流(controlflow)往回检查,追踪分析源程序代码,直至找出错误原因。适用于小型程序。,(3)原因排除法,对分查找法,在关键点插入变量的正确值,则,收集数据,组织数据,研究数据间的关系,提出假设,证明假设,纠正错误,能,能,不能,不能,特殊一般从错误症状中找出规律,推断根源。,8.调试,归纳法,3W1HTable,What:列出一般现象Where:说明发现现象的地点When:列出现象发生时所有已知情况How:说明现象的范围和量级,Yes:描述出现错误的3W1HNo:作为比较,描述了没有错误的3W1H,例如:学生考试评卷报告。要求输出成绩排名、平均分、试题分析报告。,发现错误:对51个学生评分平均分为26(期望值80)对1个学生评分平均分为1,观察分析:取奇数时出错?打印的是中间学生的编号而非分数?加测试来验证上述推测。,8.调试,列举可能的原因,排除不正确的假设,精化余下的假设,证明假设,收集更多数据,纠正错误,有剩余,能,不能,无剩余,一般特殊从假设中逐步排除、精化,从而导出错误根源。,8.调试,演绎法,注意:对分查找法、归纳法和演绎法可以使用软件工具完成;比较有效的调试途径是回溯法和原因排除法;蛮干法效率最低,仅当其他方法失效时才使用;一旦确认错误位置就进行改正错误,考虑:是否同样错误在程序其他地方也存在修改后可能的下一错误是什么为防止类似错误,应该做什么,9.软件可靠性(Reliability),可用性(Usability):程序在给定的时间点,按照说明书的规定,成功地运行的概率。,1、基本概念,可靠性(Reliability):程序在给定的时间间隔内,按照规格说明书的规定,成功地运行的概率。,R(t)=P在时间(0,t)内按照规格说明成功运行,=e-t,其中:是失效率(即单位时间内程序运行失败的次数)t是运行时间,软件测试的根本目标:就是消除错误,保证软件的可靠性。,9.软件可靠性,则系统的“稳态可用性”(即利用率)为,Availability=(Shooman,1983),0,t,tu1,td1,tu2,td2,设系统故障停机时间为td1,td2,;正常运行时间为tu1,tu2,其中MTTF=;MTTR=,MTTF(MeanTimeToFailure):软件按规格说明成功运行的平均时间,取决于残留错误数目。MTTR(MeanTimeToR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论