软件测试方法和技术-Ch.11软件测试自动化主讲教师:郭晓燕第十一章软件测试自动化11.1测试自动化的内涵11.2测试工具的分类和选择11.3测试工具的主流产品介绍11.4IBM-Rational产品的整体解决方案11.5MercuryInteractive产品的整体解决方案11.6Compuware产品的整体解决方案11.1测试自动化的内涵11.1.1为什么要软件测试自动化11.1.2自动化测试的引入和应用11.1.3测试自动化的基本结构11.1.4测试自动化的原理和方法11.1.5测试自动化普遍存在的问题手工测试的局限性通过手工测试无法做到覆盖所有代码路径;许多与时序、死锁、资源冲突、多线程等有关的错误通过手工测试很难捕捉到在系统负载、性能测试时,需要模拟大量数据、或大量并发用户等各种应用场合时,也很难通过手工测试来进行在进行系统可靠性时,需要模拟系统运行十年、几十年,以验证系统能否稳定运行,也是手工测试无法模拟的。如果有大量(几千)的测试用例,需要在短时间内完成,手工测试又怎么办呢?测试可以发现错误,并不能表明程序的正确性。自动化测试带来的好处1.缩短周期Testingcycle-RegressionTesting2.AttributesofTA,•Speed速度•Efficiency效率•AccuracyandPrecise准确、精确•Relentlessness无情3.容易实施、结果可靠4.做手工不能做手工测试•耗费时间•低可靠性•人力资源•不一致性•仅对于一次性的测试有益速度可重复覆盖率可靠可以再度使用重复测试节省时间自动测试手工测试vs.自动测试正确认识测试自动化不现实的期望注定测试自动化的失败测试自动化能:显著降低重复手工测试的时间建立可靠、重复的测试,减少认为错误增强测试质量和覆盖率测试自动化不能:完全替代手工测试和手工测试工程师保证100%的测试覆盖率弥补测试实践的不足测试自动化成本/收益分析结构成本收益净收益NoAutomation000RecordingandPlayback8.3112.7Data-drivenstructureusingdatapools8.4189.6Frameworkstructure9.8155.2Framework/data-driven(hybrid)structurefocusingonviewsoftheapplicationandusingdatapools11.6197.4自动化测试的引入和应用找准测试自动化的切入点把测试开发纳入整个软件开发体系测试自动化依赖测试流程和测试用例软件测试自动化的投入较大进行资源的合理调度自动化测试工作流程收集测试信息•测试需求是什么?•那里能得到用到的数据?建立基本测试•纪录用户的操作•核实成功回放提高基本测试•插入测试点•驱动测试数据整体测试•关联数据•建立综合的测试场景计划1创建2核实和提高3整合4计划自动化测试纪录用户操作形成基本测试对回放和测试提高自动化测试运行多种测试检查数据流测试自动化的基本结构机房办公室文件服务器SQLServerWeb服务器控制程序拷贝测试文件拷贝测试结果分派工作分派工作查询结果Build系统编译寻找工作项目更新显示DevBuild,TestBuild测试自动化的原理和方法代码分析:类似于高级编译系统,在工具中定义类/对象/函数/变量等定义规则、语法规则等,在分析时对代码进行语法扫描,找出不符合编码规范的地方。捕获和回放:代码分析是一种白盒测试的自动化方法,捕获和回放则是一种黑盒测试的自动化方法。对象识别脚步技术自动化比较对象识别编辑框下拉框按钮QuickTest在支持应用中识别、确定每一个对象是什么类型复选框选择框对象识别-2逻辑名称是对象属性之一的值数值用于识别对象名称Nativeclass:EditAttachedText:AgentName:Enabled:TrueFocused:TrueHeight:20Text:HaroldWidth:119对象识别-3对象库是本地在测试结构范围内存储对像信息.对象库例如对象(属性)包含登陆窗口在记录过程中捕获的:-AgentNamefield-Passwordfield-OKbutton-Cancelbutton-Helpbutton脚本技术线性脚本,是录制手工执行的测试用例得到的脚本,这种脚本包含所有的击键、移动、输入数据等,所有录制的测试用例都可以得到完整的回放。结构化脚本,类似于结构化程序设计,具有各种逻辑结构、函数调用功能。共享脚本,是指某个脚本可以被多个测试用例使用。数据驱动脚本,将测试输入存储在独立的(数据)文件中,而不是存储在脚本中。关键字驱动脚本,是数据驱动脚本的逻辑扩张ScriptexampleSamplescript'====SectionTwo-headerfile,publicvariablesandconstantsdeclarationarea================'$includertpCMCSanity0225_BB_X.sbh'$IncludertpCMC5_BB.sbh'$includertpReportLog.sbh'====SectionThree-UnittestscriptingareaforthissubroutineorfunctionSubMainCallScriptrtpCMCSanity0225_initDimResultAsIntegerDimmeetingTopicAsString'Iftherealreadyameetingmeeting,didn'tstartagainSQASuspendLogOutputResult=WindowVP(Exists,Caption={*+MEETING_CLIENT_CAPTION+*},VP=WindowExistence;Wait=1,3)SQAResumeLogOutputIfResult=0ThenResult=func_MiscScheduleStartMeetingSimple(PAGE_CAPTION,meetingTopic,MEETING_PASSWD)Else…EndIf•CheckBoxCheckBoxClick,Name=Overdraft•ComboBox,ComboListBox•EditBox•HTMLDocument,HTMLImage,HTMLLink•InputKeysInputKeysThisisRobot.{Enter}UserActioncommands测试自动化普遍存在的问题不正确的观念或不现实的期望缺乏具有良好素质、经验的测试人才测试工具本身的问题影响测试的质量没有进行有效的、充分的培训没有考虑到公司的实际情况,盲目引入测试工具没有形成一个良好的使用测试工具的环境其它技术问题和组织问题11.2测试工具的分类和选择11.2.1测试工具的分类11.2.2测试工具的选择测试工具是测试自动化的表现测试工具的例子测试工具的分类•CodeanalysisTools-Staticanalysis-Dynamicanalysis•TestExecutionTool-CaptureandReplay(Record&Playback)-MonitorTool-StubsandDrivers-AutomatedTestingEnvironment•Testcasegenerators测试工具的选择测试工具介绍功能测试工具:QTP、Selenium性能测试工具:JMeter安全性测试工具:AcunetixwebVulnerablityscanner缺陷跟踪系统:Mantis、Bugzilla管理工具:Testlink、TestDirector11.3测试工具的主流产品介绍11.3.1面向开发的单元测试工具11.3.2负载和性能测试工具11.3.3GUI功能测试工具11.3.4基于Web应用的测试工具11.3.5软件测试管理和其他工具面向开发的单元测试工具根据不同的语言进行分类:C/C++单元级测试工具PanoramaC++,C++Test,NumegaJUnit是一个开发源代码的Java测试框架根据工具的功能特点进行分类:内存资源泄漏检查工具:Numega中的BounceChecker,Rational的Purify等代码覆盖率检查工具:Numega的TrueCoverage,Rational的PureCoverage,TeleLogic公司的Logiscope代码性能检查工具:Logiscope和Macabe等。软件纠错工具RationalPurl等。负载和性能测试工具属性LoadRunner/MIQALoad/CompuwareWebLoad/Radview价格昂贵较贵一般安装配置简单简单一般操作性较复杂简单简单支持测试对象各种中间件/数据库/应用服务器的性能监控/企业架构(j2ee和.net)的测试客户/服务器系统、企业资源配置(ERP)和电子商务应用WebApplication支持平台windows,unix或linuxHP-UX,IBMAIX,SunSolaris,Linux,NT/2kUnixWindows支持数据库DB2,SQLserver,Orcale,SybaseADO,DB2,Oracle,Sybase,SQLserver,OdbcADO,DB2,Oracle,Sybase,SQLserver,Odbc支持协议web,http(s),soap,streaming,wap,winsock,xmlhttp,ssl,oap,xml,streaming,mediaxml,java,ejb,activex,wap,http,snmp,real/m$streaming脚本语言类似C++C/C++和VC++Javascript自动数据生成YYY脚本调试YYY报表定制功能YYYGUI功能测试工具将操作应用程序的各种动作和输入记录下来,包括键盘操作、鼠标点击等捕捉(Record)下来,生成一个脚本文件,这个脚本以后可以被“回放(playback)”。在实际测试过程中,要根据测试需求对录制的脚本进行一些必要的修改或加入一些参数,如选择不同的测试数据、脚本中插入检查点(CheckPoint)进行跟踪调试等。基于GUI功能测试工具主要适合回归测试阶段。当一个应用开发基本完成后,程序界面基本定型,虽然业务的需求会很频繁变化,但测试脚本结构基本不需要改动,只需要做些小调整,就可以自动运行,则可大大提高了测试的效率和测试的准确性。目前主要产品有MI公司的WinRunner,Compuware的QARun,Rational的SQARobot,MSVisualTestSuite等GUI自动化测试设计测试用例,并手工进行测试。如果测试未通过,则先改正缺陷,再次执行测试。如果测试通过,利用测试工具运行该测试过程,捕获运行过程需要检测的屏幕对象,并保存。在进行回归测试测试,自动利用测试工具运行测试,并比较运行过程的屏幕对象与保存的屏幕对象比较,从而判断测试用例是否通过。基于Web应用的测试工具基于Web应用的测试工具主要进行链接检查、HTML检查、Web功能和Web站点安全性等各个方面的测试。主要Web测试工具有MI公司的Astra系列(如AstraQuickTest)、RSW公司的E-TestSuite等;Web系统测试工具:WorkBench、WebApplicationStressTool(WAS)、页面链接测试LinkSleuth等。Website性能测试测什么?各种操作的响应速度最大并发用户数最大数据容量ACT(ApplicationCenterTest)ACT测试的步骤创建测试脚本手工编写VBScript录音并修改运行测试脚本设定并发用户数设定用户身份运行、观察、获取主观体验理解结果报