资源预览内容
第1页 / 共44页
第2页 / 共44页
第3页 / 共44页
第4页 / 共44页
第5页 / 共44页
第6页 / 共44页
第7页 / 共44页
第8页 / 共44页
第9页 / 共44页
第10页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件自动化测试基础主讲人:张伟软件测试自动化简介u软件测试自动化软件测试自动化是一项是一项让计算机代替人让计算机代替人进行软件测试的技术。进行软件测试的技术。u那么我们为什么要引入自动化测试呢?那么我们为什么要引入自动化测试呢?为什么要引入软件测试自动化呢?u软件测试是一项繁重的任务,全靠手工去完成测试是很难按时保质保量的完成。有些测试在成本一定的情况下,几乎不可能去完成。例如:需要多次回归测试的软件(例如迭代开发或增量开发的软件,某些精确度要求比较高的重要软件)。频繁回归测试使测试人员的工作热情受损,工作质量降低。测试时间比较长甚至需要几个通宵去进行测试的功能并发性测试,可靠性测试,白盒逻辑覆盖测试等手工很难完成的测试。软件测试自动化简介u软件测试自动化是一项让计算机取代人的进行软件测试技术。通过自动化测试技术可以自动运行大批量的测试用例,也可以完成某些手工测试难以完成的测试用例。从而节省了人力、时间和硬件资源。u测试自动化是借助测试工具来实现的。不同类型的测试具有不同的测试工具。u自动化测试工具中的测试用例是以脚本的形式存在的自动化测试带来的优点1.提高软件测试效率。自动化测试执行用例的速度比手工测试快的多。2.方便回归测试。可执行更多、更繁琐测试。3.提高测试人员的积极性,测试人员把时间和精力放在软件中新的项目上。4.提高测试的准确性,从而使软件测试的可信度提高。测试的主观因素和误操作少了。5.测试具有一致性和可重复性。自动化测试带来的优点6.测试的复用性。(这与软件开发里的代码复用性意思相同,测试用例是以脚本一种代码的形式存在)7.可执行一些手工测试困难或不可能进行的测试。例如:并发行测试等软件测试自动化存在的不足u既然软件测试自动化这么多优点,是不是我们的测试活动的目标就是追求100%的自动化测试呢?u软件自动化测试的缺点:需要一定的时间去编写、调试和维护脚本。需要测试人员的水平要高。不能实现某些需要人脑去判断结果的测试用例。(例如,界面是否人性化的测试)工具本身没有想象力完全依赖测试设计,因此,自动化测试对测试设计依赖太大。手工测试发现的错误比自动化测试要多的多。自动化测试和手工测试的关系n由于自动化测试的缺陷,在实践的测试活动中,尤其是黑盒测试中,它只是手工测试的一个有益的补充。n但是,目前测试界和一些测试自动化工具商过分夸大了自动化测试的优点,使很多的软件测试学员对自动化测试产生了误解,下面我们看下对自动化测试存在的5个误区:自动化测试的认识误区1/5n错误期望一:自动化测试应完全取代人工测试。测试过程中80%以上的缺陷是手工测试发现的,仅有不到20%的缺陷是自动测试发现的,而且这20%的发现要求测试人员合理的运用工具。在测试前,分析下软件的需求,确定哪些功能、性能等因素需要用到自动化测试,然后有针对性的在项目中使用自动化。一味的追求测试自动化,会使测试工作的成本增加。(例如:手工测试1分钟可以完成,自动化测试得好几个小时才可以)自动化测试的认识误区2/5n错误期望二:测试用例可完全由测试工具生成白盒测试中,利用某些测试工具可以自动生成部分测试用例,(例如逻辑覆盖测试),但是由于测试工具无法自动了解程序的功能,仍然需要测试人员手工干预测试用例的设计和生成。黑盒测试中,几乎所有测试用例都需要手工去设定。例如:网站并发性测试,需要测试员分析需求,找到被测的业务流程,编写脚本,设定预期结果等等。自动化测试的认识误区3/5n错误期望三:测试工具可以在任何场合使用。n工具都是针对解决某些特定的问题而开发的,所以必然有其局限性。而且测试工具自身同时也是软件,因此也会存在软件兼容性等不可避免的软件通病。例如:某些测试工具只能在windows上运行;某些白盒测试工具只是针对某几种语言;某些网络测试工具只是针对某几种网络等等。自动化测试的认识误区4/5n错误期望四:自动化后测试效率立刻提高(如:测试工作马上减轻,进度缩短)。企业引入自动化测试需要做大量的前期准备工作,包括技术上的,资金上的,人员上的准备等等。如果不做好准备盲目引进自动化测试,可能会后期测试带来一些意想不到的麻烦。由于在测试过程中增加了新的元素,必然增加了测试过程的复杂度。因此在使用工具的初期通常会使工作量、消耗时间等各项成本较手动测试增加25%-50%,而不是象多数人想象的那样可以很快降低成本。自动化测试的认识误区5/5n错误期望五:自动化测试顺利引入后就一劳永逸了。n自动化测试能否达到应有的效果还取决于实施过程中的多方面因素。自动化测试不会创造性地发现测试方案里没有的设计缺陷。因此,需要有经验的测试人员对测试方案进行系统、周密的设计和不断修改。自动化测试代码需要使用配置工具来管理和维护。此外,还应该对自动化测试工作流程的规范性进行考查,从而对自动化测试的实施进行监督和评估。实战中,如何运用自动化测试和手工测试1/2n在软件测试活动中,通常需要把自动化测试和手工测试结合起来,对被测软件进行测试。n在现实中,根据被测软件的需求,判定哪些需要自动化测试,哪些不需要。要充分发挥自动化测试和手工测试的优势,既能尽可能多的发现软件的缺陷,又能节省软件测试的时间和人力。n那么哪些部分需要自动化测试呢?值得我们去用自动化测试呢?这里引入一个名词“投资回报率”。实战中,如何运用自动化测试和手工测试2/2n投资回报率是指节省的时间成本、人员成本以及其它成本与投入测试工具的费用之比。投资回报率越高,引入的自动化技术越成功。例如:1.用户登录功能(只进行2次测试)。2.某功能,10分钟点击150次。n从投资回报率上看,1不必用自动化测试,2建议使用自动化测试。软件测试自动化工具使用的前提软件测试需求变动不频繁。通常是对需求比较稳定的模块使用自动化测试技术。项目周期要足够长,要有足够的时间设计和开发自动化测试。自动化测试脚本可重复利用。n我们一般什么时候使用自动化测试呢?一般来说,投资回报率高的或者手工难以进行的测试优先选择自动化测试工具。我列了几种可以考虑使用自动化工具的情况:白盒测试大型软件的回归测试某些需要频繁测试的功能或性能准确度和精确度比较高的软件某些需要长时间运行的测试手工很难完成的测试自动化测试工具的选取需要考虑如下几个因素:1、与被测软件是否兼容2、经费是否允许3、售后技术支持质量4、自动化工具的资料是否容易获得总之,不必选最贵的,只选最合适的自动化测试的实施流程自动化测试的原理和方法n软件测试自动化实现的基础是可以通过设计的特殊程序模拟测试人员对计算机的操作(黑盒测试),或者类似于编译系统那样对计算机程序进行检查(白盒测试)。n软件测试自动化实现的原理和方法主要有:对代码进行静态和动态分析、测试过程的捕获和回放、测试脚本技术、虚拟用户技术和测试管理技术。自动化测试的原理和方法(1)代码分析(白盒测试的自动化测试)n不管是静态白盒测试还是动态白盒测试,一般都需要借助白盒代码分析工具去完成测试。n代码分析工具类似于高级编译系统,一般针对不同的高级语言去构造不同分析工具,在工具中有类、对象、函数、变量等定义规则、语法规则。在分析时,对代码进行扫描,找出代码的缺陷,评价软件的质量。自动化测试的原理和方法(2)捕获和回放(黑盒测试的自动化测试) 捕获是将用户每一步操作都记录下来(包括被测软件的窗口和控件的位置以及相对应的操作、状态变化或是属性变化)。所有的记录转换为一种脚本语言所描述的过程,以模拟用户的操作。 回放时,将脚本语言所描述的过程转换为屏幕上的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较,最后得出测试结果,有些自动化测试软件可以根据测试结果对被测软件进行评估。这可以大大减轻黑盒测试的工作量,尤其是在回归测试中。自动化测试的原理和方法n关于自动化测试中的“录制回放”技术举例 目前的网站并发性测试几乎都是采用 “录制-回放”的技术。 所谓的“录制-回放”技术,就是先由手工完成一遍需要测试的流程,同时由计算机记录下这个流程期间客户端和服务器端之间的通信信息,并形成特定的脚本程序 (Script) 。然后在系统的统一管理下同时生成多个虚拟用户,并运行该脚本,监控硬件和软件平台的性能,提供分析报告或相关资料。这样,通过几台机器就可以模拟出成百上千的用户对应用系统进行负载能力的测试。自动化测试的原理和方法(3)测试脚本技术n测试脚本是与特定测试对应的一系列指令(及数据),这些指令可以被测试工具自动执行。脚本一种形式的程序。n不同的工具,脚本程序的规则有所不同。将loadrunner脚本用的类C语言,QTP用的VB script语言。n脚本可以通过录制测试的操作产生,然后再做修改,这样可以减少脚本编程的工作量。当然,也可以直接按照脚本语言的规则编写脚本。由于支持录制,所以学习脚本语言相对容易些脚本技术分类脚本技术可以分为以下几类:1.线性脚本是录制手工执行的测试用例得到的脚本。线性脚本很简单,通过录制就可以得到。2.结构化脚本在线性脚本的基础上,加上控制结构(顺序、循环和分支结构)。脚本的逻辑判断能力以及处理问题的灵活性得到增强,基本上实现脚本的模块化。脚本技术分类4.共享脚本是指某个脚本可被多个测试使用,一个脚本可以被另一个脚本调用。减少了脚本的数量,也使脚本容易维护。5.数据驱动脚本将测试输入存储在独立的数据文件中,实现了数据和脚本的分离。(例如使用QTP,登录系统测试中,可以将用户名和密码数据存储在外部的excel文件。)6.关键字驱动脚本是数据驱动脚本的逻辑扩展。通过外部的一系列关键字数据去驱动测试的运行。虚拟用户技术和测试管理技术1.虚拟用户技术,是指在有限的测试主机上,虚拟出成千上万或者更多个用户的技术。例如:网站并发性测试,我们可以用性能测试工具loadrunner虚拟多个用户。2.测试管理技术,通过测试管理工具(例如:TestManager)对整个测试流程进行管理,包括需求分析、计划测试、设计测试用例、缺陷处理、测试报告等内容。软件自动化测试的运用n测试用例的生成n测试的执行与控制n测试结果与标准输出的对比n不吻合测试结果的分析处理n测试状态的统计和报表的生成n采用自动化比较技术(例如:检查点技术)软件自动化测试工具n测试工具主要分为测试管理工具、性能测试工具、功能测试工具和白盒测试工具。这些工具主要是HP Mercury、IBM Rational等公司的产品,以及相当数量的开源测试工具。其中, HP Mercury占有的市场份额是最大。nMercury公司是国际上最大的测试工具开发商,被HP公司收购后,我们就称其为HP Mercury公司。测试管理工具测试管理工具是对测试配置和测试过程进行管理,对缺陷进行跟踪管理。nQuality Center简称QC,其前身是大名鼎鼎的TestDirector,简称TD(HP Mercury公司)主要功能:需求管理;计划测试;安排和执行测试;缺陷管理;图形化和报表输出nTestManager(IBM Rational)TestDirector功能测试工具nWinrunner(HP Mercury公司)自动录制-检测-回放,侧重于测试c/s架构nQuickTest Pro,简称QTP( HP Mercury公司)自动录制-检测-回放,侧重于测试b/s架构n目前Winrunner不再发布新版本,已经完全被QTP给取代,在后续的课程中我们会学习使用QTP。nRobot (IBM Rational公司) 功能和性能测试软件,可以去TestManager完美结合RobotWinRunnerQTP性能测试工具nLoadRunner(HP Mercury公司)当前市场上最强大的性能测试工具,在后续的课程中,我们会学习loadrunner工具的使用。nRobot (IBM Rational公司)Loadrunner工作过程(了解)通过VuGen来设计脚本通过Control设计场景通过负载发生器实现虚拟用户并发执行通过Control监控场景通过分析器分析结果LoadRunner的虚拟用户发生器的虚拟用户发生器白盒测试工具nParasoft公司Jtest Java 代码分析和动态类、组件测试 Jcontract Java 实时性能监控以及分析优化 C+ Test C,C+ 代码分析和动态测试 CodeWizard C,C+ 代码静态分析 .test .net代码分析和动态测试工作nIBM Rational工具集中的puricoverage和purify、quantify nCompuware白盒测试工具集 JtestNuMega BoundsCheckerRational Purify联机帮助是我们最好的朋友之一;从录制生成的脚本中,或者其他可以获得的脚本中学习;相互交流;多尝试。我建议新手这样学习脚本语言:1、录制脚本,然后在其基础上读脚本和修改脚本。2、直接手写脚本。如何学习测试工具脚本语言(了解)测试工具的选用与推广(了解)明确测试需求,才能选择正确的工具;货比三家;多听听最终使用人的建议;只选合适的,不选贵的;相信试用过程中的感觉;问问你身边的测试工具使用高手,往往可以事半功倍。课后重点n熟悉自动化测试的流程n通过网站并发性测试举例,掌握录制回放技术和虚拟用户技术。n熟悉测试脚本的概念以及测试脚本的几种分类。n熟悉常用的黑盒测试工具、测试管理工具以及性能测试工具。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号