1、 Copyright,Suzsoft Co.,Ltd.Confidential and Proprietary Information.All Rights Reserved.,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Copyright,Suzsoft Co.,Ltd.Confidential and Proprietary Information.All Rights Reserved.,#,Copyright,Suzsoft Co.,Ltd.Confidential and Proprietary Information.All Rights R
2、eserved.,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Copyright,Suzsoft Co.,Ltd.Confidential and Proprietary Information.All Rights Reserved.,#,自动化测试基础,自动化测试的意义,自动化测试的定义和引入,自动化测试的原理和方法,自动化测试工具的作用及优势,自动化测试存在的一些问题和限制,建立正确的自动化测试目标,自动化测试的意义,通常,软件测试的工作量很大(据统计,测试会占用到,40%,的开发时间;一些可靠性要求非常高的软件,测试时间甚至占到开发时间的,60%
3、而测试中的许多操作是重复性的、非智力性的和非创造性的,并要求做准确细致的工作,计算机就最适合于代替人工去完成这样的任务。,软件自动化测试是相对手工测试而存在的,主要是通过所开发的软件测试工具、脚本等来实现,具有良好的可操作性、可重复性和高效率等特点。,要理解为什么要进行自动化测试,可以从两个方面考虑:,一是手工测试的局限性;,二是软件自动化测试所带来的好处。,手工测试的局限性,通过手工测试无法做到覆盖所有代码路径。,简单的功能性测试用例在每一轮测试中都不能少,而且具有一定的机械性、重复性,工作量往往较大。,许多与时序、死锁、资源冲突、多线程等有关的错误,通过手工测试很难捕捉到。,进行系统
4、负载、性能测试时,需要模拟大量数据或大量并发用户等各种应用场合时,很难通过于工测试来进行。,进行系统可靠性测试时,需要模拟系统运行,10,年、几十年,以验证系统能否稳定运行,这也是手工测试无法模拟的。,如果有大量(几千)的测试用例,需要在短时间内(,1,天)完成,手工测试几乎不可能做到。,自动化测试带来的好处,缩短软件开发测试周期,可以让产品更快投放市场。,测试效率高,充分利用硬件资源。,节省人力资源,降低测试成本。,增强测试的稳定性和可靠性。,提高软件测试的准确度和精确度,增加软件信任度。,软件测试工具使测试工作相对比较容易,且能产生更高质量的测试结果。,手工不能做的事情,自动化测试能做,如
5、负载、性能测试。,软件测试实行自动化进程,绝不是因为厌烦了重复的测试工作,而是因为测试工作的需要,更准确地说是回归测试和系统测试的需要。,自动化测试的定义和引入,自动化测试的定义:使用一种自动化测试工具来验证各种软件测试的需求,它包括测试活动的管理与实施、测试脚本的开发与执行。,在进行自动化测试前,首先要建立一个对软件测试自动化的认识观。软件测试工具能提高测试效率、覆盖率和可靠性等,自动化测试虽然具有很多优点,但它只是测试工作的一部分,是对手工测试的一种补充。,自动化测试和手工测试的范围,自动化测试绝不能代替手工测试,它们各有各自的特点,其测试对象和测试范围都不一样:,在系统功能逻辑测试、验收
6、测试、适用性测试、涉及物理交互性测试时,多采用黑盒测试的手工测试方法。,自动化测试的定义和引入,单元测试、集成测试、系统负载测试、性能测试、稳定性测试、可靠性测试等比较适合采用自动化测试。,那种不稳定软件的测试、开发周期很短的软件、一次性的软件等不适合自动化测试。,工具本身并没有想象力和灵活性,根据报道,自动化测试只能发现,15,的缺陷,而手工测试可以发现,85,的缺陷。,自动化测试工具在进行功能测试时,其准确的含义是回归测试工具,这时工具不能发现更多的新问题,但可以保证对已经测试过部分的准确性和客观性。,多数情况下,手工测试和自动化测试应该相结合,以最有效的方法来完成测试任务。,自动化测试的
7、定义和引入,通常,当软件开发过程具有下列情况时,就需要考虑引入自动化测试:,1,)测试用例的生成,包括测试输入、测试输出、测试操作指令等;,2,)测试的执行与控制,包括单机运行和网络多机分布式的运行,在节假日的运行,测试个案调用控制,测试对象、测试范围与测试版本的控制等;,3,)测试结果与标准输出进行对比;,4,)不吻合预期的测试结果的分析、记录、分类和报告,5,)总体测试状况的统计及报表的产生。,自动化测试的定义和引入,自动化测试应用,找准自动化测试的切入点,把测试开发纳入整个软件开发系统,自动化测试依赖测试流程和测试用例,软件测试自动化的投入较大,进行资源的合理调度,自动化测试的原理和方法
8、软件测试自动化实现的基础是可以通过设计的特殊程序模拟测试人员对计算机的操作过程、操作行为,或者类似于编译系统那样对计算机程序进行检查。,软件测试自动化实现的原理和方法主要有:直接对代码进行静态和动态分析、测试过程的捕获和回放、测试脚本技术、虚拟用户技术和测试管理技术。,1)代码分析,代码分析类似于高级语言编译系统,一般针对不同的高级语言去构造分析工具,在工具中定义类、对象、函数、变量等定义规则、语法规则;在分析时对代码进行语法扫描,找出不符合编码规范的地方;根据某种质量模型评价代码质量,生成系统的调用关系图等。,自动化测试的原理和方法,2,)捕获和回放,代码分析是一种白盒测试的自动化方法,捕
9、获和回放则是一种黑盒测试的自动化方法。捕获是将用户每一步操作都记录下来。这种记录的方式有两种:程序用户界面的像素坐标或程序显示对象(窗口、按钮、滚动条等)的位置,以及相对应的操作、状态变化或是属性变化。所有的记录转换为一种脚本语言所描述的过程,以模拟用户的操作。,回放时,将脚本语言所描述的过程转换为屏幕上的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。,捕获和回放,可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。,自动化测试的原理和方法,关于自动化测试中的“录制,回放”技术,目前的自动化负载测试解决方案几乎都是采用“录制,-,回放”的技术。,所谓的“录制
10、回放”技术,就是先由手工完成一遍需要测试的流程,同时由计算机记录下这个流程期间客户端和服务器端之间的通信信息,这些信息通常是一些协议和数据,并形成特定的脚本程序,(Script),。然后在系统的统一管理下同时生成多个虚拟用户,并运行该脚本,监控硬件和软件平台的性能,提供分析报告或相关资料。这样,通过几台机器就可以模拟出成百上千的用户对应用系统进行负载能力的测试。,自动化测试的原理和方法,3,),脚本技术,脚本是一组测试工具执行的指令集合,也是计算机程序的一种形式。脚本可以通过录制测试的操作产生,然后再做修改,这样可以减少脚本编程的工作量。当然,也可以直接用脚本语言编写脚本。脚本中包含的是
11、测试数据和指令,一般包括如下信息:,同步(何时进行下一个输入)。,比较信息(比较什么,比较标准)。,埔获何种屏幕数据及存储在何处。,从哪个数据源或从何处读取数据。,控制信息等。,自动化测试的原理和方法,脚本技术可以分为以下几类:,线性脚本,是录制手工执行的测试用例得到的脚本。,结构化脚本,类似于结构化程序设计,具有各种逻辑结构(顺序、分支、循环),而且具有函数调用功能。,共享脚本,是指某个脚本可被多个测试用例使用,即脚本语言允许一个脚本调用另一个脚本。,数据驱动脚本,将测试输入存储在独立的数据文件中。,关键字驱动脚本,是数据驱动脚本的逻辑扩展,自动化测试的原理和方法,4,),自动比较,静态比较
12、和动态比较,简单比较和复杂比较,敏感性测试比较和健壮性测试比较,比较过滤器,自动化测试工具的作用及优势,软件测试自动化通常借助测试工具进行。测试工具可以进行部分的测试设计、实现、执行和比较的工作。部分的测试工具可以实现测试用例的自动生成,但通常的工作方式为人工设计测试用例,使用工具进行用例的执行和比较。如果采用自动比较技术,还可以自动完成测试用例执行结果的判断,从而避免人工比对存在的疏漏问题。,自动化测试工具的作用:,(,1,)确定系统最优的硬件配置。,(,2,)检查系统的可靠性。,(,3,)检查系统硬件和软件的升级情况。,(,4,)评估新产品。,自动化测试工具的作用及优势,自动化测试工具的优
13、势主要体现在以下几个方面:,(,1,)记录业务流程并生成脚本程序的能力。,(,2,)对各种网络设备(客户机或服务器、其它网络设备)的模仿能力。,(,3,)用有限的资源生成高质量虚拟用户的能力。,(,4,)对于整个软件和硬件系统中各个部分的监控能力。,(,5,)对于测试结果的表现和分析能力。,自动化测试存在的一些问题,不正确的观念或不现实的期望,缺乏具有良好素质和有经验的测试人才,测试工具本身的问题影响测试的质量,没有进行有效、充分的培训,不考虑公司的实际情况、盲目引入测试工具,没有形成一个良好的测试工具使用环境,其他技术问题和组织问题,测试自动化限制,测试自动化可以带来非常明显的收益,但也有以
14、下限制:,不能取代手工测试,手工测试比自动测试发现的缺陷更多,对测试质量的依赖性极大,测试自动化不能提高有效性,测试自动化可能会制约软件开发。,工具本身并无想象力,另外,人工测试比测试工具更优越的另一个方面是可以处理意外事件。虽然工具也能处理部分异常事件,但是对真正的突发事件和不能由软件解决的问题就无能为力。,建立正确的自动化测试目标,目前,软件自动化测试还不能解决所有的测试问题,因此,需要建立正确的自动化测试目标。,测试计划产生:主要靠测试工程师与软件生产质量保证 专家的合作,自动化工具只能起到一定的辅助作用。,一种测试工具不完全适用于所有测试,自动测试不一定减轻工作量,测试进度可能不一定缩
15、短,测试工具不一定易于使用,自动化测试的普遍应用存在局限,测试覆盖率不会达到百分之百,软件自动化测试工具简述,自动化测试工具的特征,自动化测试工具的分类,选择自动化测试工具,常用测试工具概要,自动化测试工具的特征,支持脚本化语言,(Scripting Language),对程序界面中对象的识别能力,支持函数的可重用,支持外部函数库,抽象层,将程序界面中的对象实体映射成逻辑对象,分布式测试,(Distributed Test),的支持,支持数据驱动测试,(Data-Driven Test),错误处理,调试器,(Debugger),源代码管理,支持脚本的命令行,(Command Line),方式,
16、自动化测试工具的分类,测试工具可以从两个不同的方面去分类。,根据测试方法不同,自动化测试工具可以分为:,白盒测试工具、黑盒测试工具,根据测试的对象和目的,自动化测试工具可以分为:,单元测试工具、功能测试工具、负载测试工具、性能测试工具、,Web,测试工具、数据库测试工具、回归测试工具、嵌入式测试工具、页面链接测试工具、测试设计与开发工具、测试执行和评估工具、测试管理工具等,白盒测试工具,白盒测试工具一般是针对被测源程序进行的测试,测试所发现的故障可以定位到代码级。根据测试工具工作原理的不同,白盒测试的自动化工具可分为静态测试工具和动态测试工具。,静态测试工具,是在不执行程序的情况下,分析软件的
17、特性。静态分析主要集中在需求文档、设计文档以及程序结构方面。按照完成的职能不同,静态测试工具包括以下几种类型:,(1),代码审查 (,2,)静态结构分析 (,3,)代码质量度量,(2.1),一致性检查,(2.2),错误检查,(2.3),接口分析,(2.4),输入输出规格说明分析检查,(2.5),数据流分析,(2.6),类型分析,(2.7),单元分析,常用的动态工具有:,Telelogic,公司的,Logiscope,软件,PR,公司的,PRQA,软件,白盒测试工具,动态测试工具,是直接执行被测程序以提供测试活动。它需要实际运行被测系统,并设置断点,向代码生成的可执行文件中插入一些监测代码,掌握
18、断点这一时刻程序运行数据(对象属性、变量的值等),具有功能确认、接口测试、覆盖率分析、性能分析等性能。动态测试工具可以分为以下几种类型:,(1),功能确认与接口测试,(2),覆盖测试,(3),性能测试,(4),内存分析,常用的动态工具有:,Compuware,公司的,DevPartner,IBM,公司的,Rational Purify,黑盒测试工具,黑盒测试工具是在明确软件产品应具有的功能的条件下,完全不考虑被测程序的内部结构和内部特性,通过测试来检验软件功能是否按照软件需求规格的说明正常工作。,按照完成的职能不同,黑盒测试工具可以分为:,功能测试工具,用于检测程序能否达到预期的功能要求并正常
19、运行。,性能测试工具,用于确定软件和系统的性能。,常用的黑盒测试工具有:,Compuware,公司的,QACenter,IBM,公司的,Rational TeamTest,测试管理工具,测试管理工具用于对测试过程进行管理,帮助完成制定测试计划,跟踪测试运行结果。通常,测试管理工具对测试计划、测试用例、测试实施进行管理,还包括缺陷跟踪管理等。,常用的测试管理工具有:,IBM,公司的,Rational Test Manager,测试管理工具包括以下内容:,测试用例管理,缺陷跟踪管理(问题跟踪管理),配置管理,选择自动化测试工具,测试人员在选择和使用自动化测试工具时,可以从以下角度来考虑:,按照用途
20、选择匹配的测试工具,在适当的生命周期选择测试工具,按照测试人员的实际技能选择匹配的测试工具,选择一个可提供的测试工具,常用测试工具,目前,软件测试方面的工具很多,主要有,MercuryInteractive,(,MI,)、,Rational,、,Compuware,、,Segue,和,Empirix,等公司的产品,而,MI,公司和,Rational,公司的产品占了主流。,Mercury,公司测试工具,Mercury,(美科利,,)质量中心:提供一个全面的、基于,Web,的集成系统,可在广泛的应用环境下自动执行软件质量管理和测试。其主要产品如下:,Winrunner,:是一种企业级的用于检验应用
21、程序是否如期运行的功能性测试工具。通过自动捕获,检测,和重复用户交互的操作,,WinRunner,能够辨认缺陷并且确保那些跨越多个应用程序和数据库的业务流程在初次发布就能避免出现故障,并且保持长期可靠运行。,Loadrunner,:,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,,LoadRunner,能够对整个企业架构进行测试。通过使用,LoadRunner,,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。,Mercury,公司测试工具,TestDirector,:,是基于,Web,的测试管理解决方案,它可以在
22、公司内部进行全球范围的测试协调。,TestDirector,能够在一独立的应用系统中提供需求管理功能,并且可以把测试需求管理于测试计划、测试日程控制、测试执行和错误跟踪等功能融合为一体,因此极大地加速了测试的进程。,TestDirector,提供完整且无限制的测试管理框架,实现对应用测试全部阶段的管理与控制。,QuickTest Professional,:,:,是一个功能测试自动化工具,主要应用在回归测试中。,QuickTest,针对的是,GUI,应用程序,包括传统的,Windows,应用程序,以及现在越来越流行的,Web,应用。它可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重
23、用的特点。其中包括:创建测试、插入检查点、检验数据、增强测试、运行测试、分析结果和维护测试等方面。,Rational,公司测试工具,Rational,公司测试工具,Rational,(,Functional Tester,:对,Java,、,Web,和基于,VS.NET WinForm,的应用程序进行高级自动化功能测试。,Rational Functional Tester Extension for Terminal-based Applications,:扩展了,Rational Functional Tester,,以支持基于终端的应用程序的测试。,Rational Manual Tes
24、ter,:,使用新测试设计技术来改进人工测试设计和执行工作。,Rational Performance Tester,:检查可变多用户负载下可接受的应用程序响应时间和可伸缩性。,Rational Purify for Linux and UNIX,:为,Linux,和,UNIX,提供了内存泄漏和内存损坏检测。,Rational Purify for Windows,:为,Windows,提供了内存泄漏和内存损坏检测。,Rational,公司测试工具,Rational PurifyPlus,企业版,:为,Windows,、,Linux,和,UNIX,提供了运行时分析。,Rational Puri
25、fyPlus for Linux and UNIX,:为 基于,Linux,和,Unix,的,Java,和,C/C+,开发提供了分析工具集。,Rational PurifyPlus for Windows,:为基于,Windows,的,Java,、,C/C+,、,Visual Basic,和 托管,.NET,开发提供了运行时分析。,Rational Robot,:客户机,/,服务器应用程序的通用测试自动化工具。可以对使用各种集成开发环境,(IDE),和语言建立的软件应用程序,创建、修改并执行自动化的功能测试、分布式功能测试、回归测试和集成测试。,Rational TestManager,:提供
26、开放、可扩展的测试管理。,Rational Test RealTime,:支持嵌入式和实时的跨平台软件的组件测试和运行时分析。,Compuware,公司测试工具,Compuware,(,)公司的,QACenter,家族集成了一些强大的自动工具,这些工具符合大型机应用的测试要求,使开发组获得一致而可靠的应用性能。,QACenter,帮助所有的测试人员创建一个快速,可重用的测试过程。这些测试工具自动帮助管理测试过程,快速分析和调试程序,包括针对回归,强度,单元,并发,集成,移植,容量和负载建立测试用例,自动执行测试和产生文档结果。,QACenter,主要包括以下几个模块:,QARun,:,应用的功
27、能测试工具。,QALoad,:,强负载下应用的性能测试工具。,QADirector,:,测试的组织设计和创建以及管理工具。,TrackRecord,:,集成的缺陷跟踪管理工具。,EcoTools,:,高层次的性能监测工具。,Segue,公司测试工具,segue,公司的,SilkTest,(,):是业界领先的、用于对企业级应用进行功能测试的产品,可用于测试,Web,、,Java,或是传统的,C/S,结构。SilkTest提供了许多功能,使用户能够高效率地进行软件自动化测试。这些功能包括:测试的计划和管理;直接的数据库访问及校验;灵活、强大的4Test脚本语言,内置的恢复系统(Recovery S
28、ystem);以及具有使用同一套脚本进行跨平台、跨浏览器和技术进行测试的能力。,Radview,公司测试工具,Radview,公司的,TestView,系列,Web,性能测试工具和,WebLoad Analyzer,性能分析工具,旨在测试,Web,应用和,Web,服务的功能、性能、程序漏洞、兼容性、稳定性和抗攻击性,并且能够在测试的同时分析问题原因和定位故障点。整套,Web,性能测试和分析工具包含两个相对独立的子系统:,Web,性能测试子系统、,Web,性能分析子系统。其中,Web,性能测试子系统包含,3,个模块:,TestView Manager,、,WebFT,以及,WebLoad,。,W
29、eb,性能分析子系统只有,WebLoad Analyzer,。,其他公司测试工具,AdventNet,公司的,QEngine,(,):是一个应用广泛且独立于平台的自动化软件测试工具,可用于,Web,功能测试、,web,性能测试、,Java,应用功能测试、,Java API,测试、,SOAP,测试、回归测试和,Java,应用性能测试。支持对于使用,HTML,、,JSP,、,ASP,、,.NET,、,PHP,、,JavaScript/VBScript,、,XML,、,SOAP,、,WSDL,、,e-commerce,、传统客户端,/,服务器等开发的应用程序进行测试。此工具以,Java,开发,因此便
30、于移植和提供多平台支持。,其他公司测试工具,美国,IXIA,公司的应用层性能测试软件,IxChariot,是一个独特的测试工具,也是在应用层性能测试领域得到业界认可的测试系统。对于企业网而言,,IxChariot,可应用于设备选型、网络建设及验收、日常维护等,3,个阶段,提供设备网络性能评估、故障定位和,SLA,基准等服务。,IxChariot,由两部分组成:控制端(,Console,)和远端(,Endpoint,),两者都可安装在普通,PC,或者服务器上,控制端安装在,Windows,操作系统上,远端支持各种主流的操作系统。控制端为该产品的核心部分,控制界面(也可采用命令行方式)、测试设计界
31、面、脚本选择及编制、结果显示、报告生成以及,API,接口提供等都由控制端提供。远端根据实际测试的需要,安装在分布的网络中,负责从控制端接收指令、完成测试并将测试数据上报到控制端。,一些开源测试工具,功能测试工具,Linux Test Project,(,Test Project,是一个测试,Linux,内核和内核相关特性的工具集合。该工具的目的是通过把测试自动化引入到,Linux,内核测试,提高,Linux,的内核质量。,使用环境,:Linux,MaxQ,(,maxq.tigris.org/,):,MaxQ,是一个免费的功能测试工具。它包括一个,HTTP,代理工具,可以录制测试脚本,并提供回放
32、测试过程的命令行工具。测试结果的统计图表类似于商用测试工具,比如,Astra QuickTest,和,Empirix e-Test,,这些商用工具都很昂贵。,MaxQ,希望能够提供一些关键的功能,比如,HTTP,测试录制回放功能,并支持脚本。,使用环境,:Java 1.2,以上版本,WebInject,(,www.webinject.org/,):,WebInject,是一个针对,Web,应用程序和服务的免费测试工具。它可以通过,HTTP,接口测试任意一个单独的系统组件。可以作为测试框架管理功能自动化测试和回归自动化测试的测试套。,使用环境,:Windows,OS Independent,Li
33、nux,一些开源测试工具,单元测试工具,JUNIT,(,CppUnit,):,JUnit,是一个开源的,java,测试框架,它是,Xuint,测试体系架构的一种实现。在,JUnit,单元测试框架的设计时,设定了三个总体目标,第一个是简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写;第二个是使测试单元保持持久性;第三个则是可以利用既有的测试来编写相关的测试。,使用环境,:Windows,OS Independent,Linux,一些开源测试工具,性能测试工具,Apache JMeter,(,jakarta.apache.org/jmeter/,):,Apache JMeter,是,
34、100,的,Java,桌面应用程序,它被设计用来加载被测试软件功能特性、度量被测试软件的性能。设计,Jmeter,的初衷是测试,Web,应用,后来又扩充了其它的功能。,Jmeter,可以完成针对静态资源和动态资源(讹误女监,Servlets,Perl,脚本,Java,对象,数据查询,s,FTP,服务等)的性能测试。,Jmeter,可以模拟大量的服务器负载、网络负载、软件对象负载,通过不同的加载类型全面测试软件的性能。,Jmeter,提供图形化的性能分析。,使用环境,:Solaris,Linux,Windows(98,NT,2000).JDK1.4,以上,.,DBMonster,(,dbmons
35、ter.kernelpanic.pl/,):,DBMonster,是一个生成随机数据,用来测试,SQL,数据库的压力测试工具。,使用环境,:OS Independent,一些开源测试工具,OpenSTA,(Open System Testing Architecture),(,portal.opensta.org/index.php,):基于,CORBA,的分布式软件测试构架。使用,OpenSTA,,测试人员可以模拟大量的虚拟用户。,OpenSTA,的结果分析包括虚拟用户响应时间、,web,服务器的资源使用情况、数据库服务器的使用情况,可以精确的度量负载测试的结果。,使用环境,:OS Inde
36、pendent,TPTEST,(,TPTest,的提供测试,Internet,连接速度的简单方法。,使用环境,:MacOS/Carbon,、,Win32,Web Application Load Simulator,(,www.openware.org/loadsim/index.html,):,LoadSim,是一个网络应用程序的负载模拟器。,使用环境,:JDK 1.3,以上,一些开源测试工具,缺陷管理工具,Mantis,(,MySQL,PHP,Bugzilla,(,www.mozilla.org/projects/bugzilla/,):一款软件缺陷管理工具。,使用环境:TBC,一些开源测试工具,测试管理工具,TestLink,(,Apache,MySQL,PHP,Bugzilla Test Runner,(,Test Runner,基于,Bugzilla,缺陷管理系统的测试用例管理系统。,使用环境,:Bugzilla 2.16.3 or above (bugzilla,是一个可以发布,bug,以及跟踪报告,bug,进展情况的开源软件,),软件测试的发展历程,初始阶段,定义阶段,集成阶段,






