面向对象测试技术PPT演示课件_第1页
面向对象测试技术PPT演示课件_第2页
面向对象测试技术PPT演示课件_第3页
面向对象测试技术PPT演示课件_第4页
面向对象测试技术PPT演示课件_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

2020/5/19,I,1,Object-OrientedTesting,面向对象测试技术,2020/5/19,I,2,摘要,软件测试面向对象软件测试测试驱动的开发,2020/5/19,I,3,摘要,软件测试面向对象软件测试测试驱动的开发,2020/5/19,I,4,软件测试,可靠性:观测系统行为是否同规格说明行为一致的一种成功标准软件可靠性:软件系统在特定条件和特定时间下,不会导致系统失败的可能性。-IEEE测试的最大目标:最大限度地发现错误,以便开发者改正它们,以增加系统的可靠性。,2020/5/19,I,5,软件测试,软件测试:使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。-IEEE,1993“程序测试是为了发现错误而执行程序的过程”。-G.J.Myers,TheArtofSoftwareTesting,2020/5/19,I,6,广义的软件测试,确认:评估将要开发的软件产品是正确无误、可行和有价值的验证:检验软件开发的每个阶段、每个步骤的结构是否正确无误,是否与软件开发各阶段的要求或期望的结果相一致。测试:狭义的测试,计划、需求分析、测试,设计、编码,编码、测试,2020/5/19,I,7,软件测试术语,测试:检查软件的某个方面是否正确验证(verification):根据需求文档(系统用例)检查软件是否正确有效性验证(validation):检查软件是否是顾客需要的,例如它是否以顾客和最终用户能接受的方式执行顾客需要的函数,2020/5/19,I,8,软件测试的原则,“尽早和不断地测试”设计测试用例时应该考虑合法的和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,如网络异常中断,电源断电一定要注意测试中的错误集中发生现象对测试错误结果一定要有一个确认过程回归测试的关联性要引起充分注意妥善保存一切测试过程文档,以便测试的重现,2020/5/19,I,9,软件测试过程,代码会审:对程序进行静态分析的过程单元测试:检查软件设计的最小单位模块,采用结构测试(白盒法)+功能测试(黑盒法)集成测试:将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题验收测试:向未来的用户表明系统能够像预定要求那样工作。,2020/5/19,I,10,软件测试的模型,V模型:软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现,2020/5/19,I,11,软件测试的模型,W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。局限性:在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。,2020/5/19,I,12,软件测试的模型,H模型:测试活动完全独立出来,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。只要测试准备完成,就可以执行测试,2020/5/19,I,13,软件测试的模型,X模型:弥补V模型的一些缺陷,例如:交接、经常性的集成等问题。X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序。右上方:这些可执行程序还需要进行测试。已通过集成测试的成品可以进行封版并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。右下方:探索性测试。这是不进行事先计划的特殊类型的测试,2020/5/19,I,14,摘要,软件测试面向对象软件测试测试驱动的开发,2020/5/19,I,15,OO技术,新特点:封装、继承、多态产生新的错误可能性不再是传统的功能模块结构,原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已成为不可能OO开发模式不同于传统开发模式,不可能用功能细化的观点来检测OOA和OOD的结果。,需要一种新的测试模型!,2020/5/19,I,16,面向对象软件测试模型,面向对象开发模型:OOA,OOD,OOP相应的OOATestOODTestOOPTestOOUnitTestOOIntegrateTestOOSystemTest,2020/5/19,I,17,面向对象软件测试模型,对分析结果的测试,对设计结果的测试,对编程风格和程序代码的测试,单一功能模块的测试,对服务交互进行测试,最后阶段的测试,需借鉴OOA和OOD测试的结果,2020/5/19,I,18,OOATest,OOA:把E-R图和语义网络模型,即信息造型中的概念,与OOP中的重要概念结合在一起而形成的设计方法。问题空间的图表的形式描述OOA直接映射问题空间,全面的将问题空间中实现功能的现实抽象化。将问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂实例和复杂关系,用属性和操作表示实例的特性和行为。,行为是相对稳定的,结构是相对不稳定的!,2020/5/19,I,19,OOATest,测试的划分对认定的对象的测试对认定的结构的测试对认定的主题的测试对定义的属性和实例关联的测试对定义的服务和消息关联的测试,OOA测试重点在其完整性和冗余性,2020/5/19,I,20,OODTest,OOD:“造型的观点”,以OOA为基础归纳类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象,是OOA的进一步细化和更高层的抽象。测试的三个方面对认定的类的测试对构造的类层次结构的测试对类库的支持的测试,2020/5/19,I,21,OODTest,对认定的类的测试:认定的类原则上应该尽量是基础类是否涵盖了OOA中所有认定的对象是否能体现OOA中定义的属性是否能实现OOA中定义的服务是否对应着一个含义明确的数据抽象是否尽可能少的依赖其它类类中的方法是否单用途,2020/5/19,I,22,OODTest,对构造的类层次结构的测试:继承类层次结构是否涵盖了所有定义的类是否能体现OOA中所定义的实例关联是否能实现OOA中所定义的消息关联子类是否具有父类没有的新特性子类间的共同特性是否完全在父类中得以体现,2020/5/19,I,23,OODTest,对类库支持的测试:强调的重点是再次软件开发的重用一组子类中关于某种含义相同或基本相同的操作,是否有相同的接口(包括名字和参数表)类中方法的功能是否较单纯,相应的代码行是否较少类的层次结构是否是深度大,宽度小,2020/5/19,I,24,OOPTest,双刃剑!继承使代码重用率提高,同时错误传播的概率也提高多态使OO程序对外呈现出强大的处理能力,但同时使得程序内“同一”函数的行为复杂化,测试时不得不考虑不同类型具体执行的代码和产生的行为测试的两个方面数据成员是否满足数据封装的要求类是否实现了要求的功能,2020/5/19,I,25,OOUnitTest,传统的单元测试对象:模块。多采用白盒测试技术。OO的单元测试:封装的类或对象。不再孤立地测试单个操作,而是将操作作为类的一部分。两个考虑继承的成员函数是否都不需要测试?继承的成员函数在子类中做了改动成员函数调用了改动过的成员函数的部分对父类的测试是否能照搬子类?,2020/5/19,I,26,OOIntegrateTest,传统的集成测试自顶向下集成自底向上集成OO集成:由于“构成类的成分的直接和间接的交互”,传统的增量集成方式经常是不可能的OO集成测试静态测试:针对程序的结构,“逆向工程”动态测试:测试需要达到一定的覆盖标准(达到类所有的服务要求或服务提供的一定覆盖率;依据类间传递的消息,达到对所有执行线程的一定覆盖率;达到类的所有状态的一定覆盖率),2020/5/19,I,27,OOSystemTest,Tips:应该尽量搭建与用户实际使用环境相同的测试平台,应该保证被测系统的完整性;应该参考OOA分析的结果,对应描述的对象、属性和各种服务,检测软件是否能够再现“问题”空间系统测试需要对被测的软件结合需求分析做仔细的测试分析,建立测试用例,2020/5/19,I,28,OOSystemTest,具体测试内容功能测试:最常用和必须的测试强度测试:测试系统的能力最高实际限度性能测试:测试软件的运行性能安全测试:测试是否确实能对系统进行保护,是否有安全保密漏洞恢复测试:采用人工的干扰使软件出错,中断使用,检测系统的恢复能力,特别是通信系统可用性测试:测试用户是否能够满意使用,2020/5/19,I,29,摘要,软件测试面向对象软件测试测试驱动的开发,2020/5/19,I,30,eXtremeProgramming,TestDrivenDevelopment(TDD)是极限编程的重要特点思想:以不断的测试推动代码的开发,既简化了代码,又保证了代码的质量。TDD并不仅是单纯的测试工作。,2020/5/19,I,31,TDD,优势通过编写测试用例,先考虑代码的使用需求(包括功能、过程、接口等),而且这个描述是无二义的,可执行验证的。通过编写测试用例,对其功能的分解、使用过程、接口都进行了设计。产生的测试用例代码就是对代码的最好的解释。保障代码的正确性,能够迅速发现、定位bug。,2020/5/19,I,32,TDD基本过程,明确当前要完成的功能。可以记录成一个TODO列表快速完成针对此功能的测试用例编写测试代码编译不通过编写对应的功能代码测试通过对代码进行重构,并保证测试通过循环完成所有功能的开发,2020/5/19,I,33,测试框架,JUnitbyErichGamma,KentBeckCPPUnitXUnit,2020/5/19,I,34,TestingProblem,programmers,Shouldwrite,few,Do,Why?,Iamsobusy,Itisdifficult,2020/5/19,I,35,TestingProblem,Programmersneedsuchkindoftool:“Writingafewlinesofcode,thenatestthatshouldrun,orevenbetter,towriteatestthatwontrun,thenwritethecodethatwillmakeitrun.”,JUnitisthatkindoftool!,2020/5/19,I,36,JUnit,JUnitisanopensourceJavatestingframeworkusedtowriteandrunrepeatabletestsJUnit测试是白盒测试JUnit本质上是一套框架JUnit相对独立于所编写的代码,测试代码的编写可以先于实现代码的编写,既XP中的TestFirstDesign,2020/5/19,I,37,TheFrameworkofJUnit,2020/5/19,I,38,ACaseStudy,SampleCode(forJUnit3.8)Attention:JUnit4.xisdifferent!-annotation,2020/5/19,I,39,HowtoWriteATestCase,Createstheobjectswewillinteractwithduringthetest.Thistestingcontextiscommonlyreferredtoasatestsfixture(测试基础).AllweneedforthetestSimpleAddtestaresomeMoneyobjects.Exercisestheobjectsinthefixture.Verifiestheresult,2020/5/19,I,40,Assert,assertEquals(expected,actual)assertEquals(message,expected,actual)assertEquals(expected,actual,delta)assertEquals(message,expected,actual,delta)assertFalse(condition)assertFalse(message,condition)Assert(Not)Null(object)Assert(Not)Null(message,object)Assert(Not)Same(expected,actual)Assert(Not)Same(message,expected,actual)assertTrue(condition)assertTrue(message,condition),2020/5/19,I,41,Structure,setUp()StoringthefixturesobjectsininstancevariablesofyourTestCasesubclassandinitializethembyoverridingthesetUpmethodtearDown()Releasingthefixturesrun()Defininghowtorunanindividualtestcase.Defininghowtorunatestsuite.testCase(),2020/5/19,I,42,Report,Failure:期望发生的代码有bug单元测试代码有逻辑错误(注意是逻辑错误)。Error:不期望发生的检查测试所需的环境,如:数据库连接检查单元测试代码检查你的系统代码,2020/5/19,I,43,StructureofWritingATest,publicclassMoneyTestextendsTestCaseprivateMoneyf12CHF;privateMoneyf14CHF;protectedvoidsetUp()f12CHF=newMoney(12,CHF);f14CHF=newMoney(14,CHF);publicvoidtestSimpleAdd()Moneyexpected=newMoney(26,CHF);Moneyresult=f12CHF.add(f14CHF);Assert.assertTrue(expected.equals(result);TestCasetest=newMoneyTest(simpleadd)publicvoidrunTest()testSimpleAdd();,2020/5/19,I,44,DesignTestCases,TherealworldscenariosThenumberboundaries,Smallerthan0suchas1,-2,-100,0Biggerthan0suchas1,2,100,2020/5/19,I,45,TheFeedbacktoCode,publicclassMoneyprivateintfAmount;/余额privateStringfCurrency;/货币类型publicMoney(intamount,Stringcurrency)fAmount=amount;fCu

温馨提示

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

评论

0/150

提交评论