资源预览内容
第1页 / 共48页
第2页 / 共48页
第3页 / 共48页
第4页 / 共48页
第5页 / 共48页
第6页 / 共48页
第7页 / 共48页
第8页 / 共48页
第9页 / 共48页
第10页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Unit7 自动化测试及其工具,7.1 自动化测试概述,测试用例会越来越多,工作量越来越大,而且许多测试用例会被不断地重复执行。如果由手工来完成,不仅占用很多人力资源,而且工作重复单调,会影响测试人员的积极性,降低测试工作人员的热情 怎么办?,自动化测试,自动化测试的定义 自动化测试就是使用软件工具来代替手工进行的一系列动作。它具有良好的可操作性、可重复性和高效率等特点。 自动化测试的目的是减轻手工测试的工作量,以达到节约资源(包括人力、物力等),保证软件质量,缩短测试周期的效果。 自动化测试大都属于回归测试的范畴。,自动化测试的意义 要理解为什么要进行自动化测试,可以从两个方面考虑:一是手工测试的局限性;二是软件自动化测试所带来的好处。,1.手工测试的局限性 通过手工测试无法做到覆盖所有代码路径。 简单的功能性测试用例在每一轮测试中都不能少,而且具有一定的机械性、重复性,工作量往往较大。 进行系统负载、性能测试时,需要模拟大量数据或大量并发用户等各种应用场合时,很难通过手工测试来进行。,难以实施系统可靠性测试,因为需要模拟系统运行十年、甚至几十年。 难以在短时间内完成大量(如几千个)的(回归)测试用例 面对测试条件组合爆炸,无能为力或效率非常低。,2.自动化测试带来的好处 缩短软件开发测试周期,可以让产品更快投放市场。 测试效率高,充分利用硬件资源。 节省人力资源,降低测试成本。 增强测试的稳定性和可靠性。 提高软件测试的准确度和精确度,增加软件信任度。,自动化测试的局限性 不能完全取代手工测试和手工测试工程师 软件自动化测试可能降低测试的效率 测试人员期望自动测试发现大量的新错误 如果缺乏测试经验,测试的组织差、文档少或不一致,则自动测试的效果比较差 软件自动化测试工具本身的问题,不适于自动化测试场景 项目周期很短的项目 测试脚本,不能重复的利用 美观、声音、易用性测试 测试很少运行:一个月只运行一次 软件不稳定,适于自动化测试场景 每个项目改进少量的功能,并需要反复测试 频繁的发布新版本,把人解脱出来测试新功能 验证修改老缺陷时,是否引入了新的缺陷 多次重复、机械性动作;需要频繁运行测试,自动化测试的应用场合,以下场合优先考虑使用自动化测试: (1)回归测试。 (2)涉及大量数据的功能测试。 (3)手工测试难以完成的性能测试、负荷测试和强度测试等。 (4)产品型项目。 (5)增量式开发、持续集成项目。 (6)自动编译、自动发布的系统。 (7)多次重复、机械性动作。 (8)频繁运行测试。,自动化测试和手工测试比较,7.2 自动化测试的原理,软件测试自动化实现的基础是可以通过设计的特殊程序模拟测试人员对计算机的操作过程、操作行为,或者类似于编译系统那样对计算机程序进行检查。,软件测试自动化实现的原理和方法主要有 直接对代码进行静态和动态分析 测试过程的捕获和回放 测试脚本技术 虚拟用户技术和测试管理技术,(1)代码分析代码分析类似于高级编译系统,一般针对不同的高级语言去构造分析工具,在工具中定义类、对象、函数、变量等定义规则、语法规则;在分析时对代码进行语法扫描,找出不符合编码规范的地方;根据某种质量模型评价代码质量,生成系统的调用关系图等。,(2)捕获和回放代码分析是一种白盒测试的自动化方法,捕获和回放则是一种黑盒测试的自动化方法。捕获是将用户每一步操作都记录下来。这种记录的方式有两种:程序用户界面的像素坐标或程序显示对象(窗口、按钮、滚动条等)的位置,以及相对应的操作、状态变化或是属性变化。所有的记录转换为一种脚本语言所描述的过程,以模拟用户的操作。回放时,将脚本语言所描述的过程转换为屏幕上的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。这可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。,关于自动化测试中的“录制回放”技术目前的自动化负载测试解决方案几乎都是采用 “录制-回放”的技术。所谓的“录制-回放”技术,就是先由手工完成一遍需要测试的流程,同时由计算机记录下这个流程期间客户端和服务器端之间的通信信息,这些信息通常是一些协议和数据,并形成特定的脚本程序 (Script) 。然后在系统的统一管理下同时生成多个虚拟用户,并运行该脚本,监控硬件和软件平台的性能,提供分析报告或相关资料。这样,通过几台机器就可以模拟出成百上千的用户对应用系统进行负载能力的测试。,(3)脚本技术脚本是一组测试工具执行的指令集合,也是计算机程序的一种形式。脚本可以通过录制测试的操作产生,然后再做修改,这样可以减少脚本编程的工作量。当然,也可以直接用脚本语言编写脚本。脚本技术可以分为以下几类: 线性脚本是录制手工执行的测试用例得到的脚本。 结构化脚本类似于结构化程序设计,具有各种逻辑结构(顺序、分支、循环),而且具有函数调用功能。 共享脚本是指某个脚本可被多个测试用例使用,即脚本语言允许一个脚本调用另一个脚本。 数据驱动脚本将测试输入存储在独立的数据文件中。 关键字驱动脚本是数据驱动脚本的逻辑扩展。,(4) 虚拟用户技术虚拟用户技术通过模拟真实用户的行为对被测试程序(AUT)施加负载,测量AUT的性能指标值,如事务的响应时间和服务器的吞吐量等。,7.3 自动化测试工具,测试工具可以从两个不同的方面去分类。 根据测试方法不同,自动化测试工具可以分为:白盒测试工具、黑盒测试工具 根据测试的对象和目的,自动化测试工具可以分为:单元测试工具、功能测试工具、负载测试工具、性能测试工具、Web测试工具、数据库测试工具、回归测试工具、嵌入式测试工具、页面链接测试工具、测试设计与开发工具、测试执行和评估工具、测试管理工具等。,白盒测试工具一般是针对被测源程序进行的测试,测试所发现的故障可以定位到代码级。根据测试工具工作原理的不同,白盒测试的自动化工具可分为静态测试工具和动态测试工具。 静态测试工具是在不执行程序的情况下,分析软件的特性。静态分析主要集中在需求文档、设计文档以及程序结构方面。,动态测试工具是直接执行被测程序以提供测试活动。它需要实际运行被测系统,并设置断点,向代码生成的可执行文件中插入一些监测代码,掌握断点这一时刻程序运行数据(对象属性、变量的值等),具有功能确认、接口测试、覆盖率分析、性能分析等性能。动态测试工具可以分为以下几种类型:(1)功能确认与接口测试 (2)覆盖测试 (3)性能测试 (4)内存分析,黑盒测试工具是在明确软件产品应具有的功能的条件下,完全不考虑被测程序的内部结构和内部特性,通过测试来检验软件功能是否按照软件需求规格的说明正常工作。 按照完成的职能不同,黑盒测试工具可以分为: 功能测试工具用于检测程序能否达到预期的功能要求并正常运行。 性能测试工具用于确定软件和系统的性能。,测试管理工具用于对测试过程进行管理,帮助完成制定测试计划,跟踪测试运行结果。通常,测试管理工具对测试计划、测试用例、测试实施进行管理,还包括缺陷跟踪管理等。 常用的测试管理工具有:IBM公司的Rational Test Manager 测试管理工具包括以下内容: 测试用例管理 缺陷跟踪管理(问题跟踪管理) 配置管理,测试工具的特征,支持脚本语言和函数库 对程序界面中的对象的识别能力 抽象层 分布式测试的网络支持 图表功能 测试工具的集成能力,7.4 JUnit,1.JUnit概述JUnit是一个对Java程序进行单元测试的测试框架,是xUnit在java语言上的实现。xUnit是专门进行单元测试的程序框架。JUnit是SourceForge上一个开源软件,它的官方网站是:www.junit.org,JUnit是采用测试驱动开发的方式,也就是说在开发前先写好测试代码,主要用来说明被测试的代码会被如何使用,错误处理等;然后开始写代码,并在测试代码中逐步测试这些代码,直到最后在测试代码中完全通过。,JUnit有以下特点: JUnit使用简单。使用JUnit可以快速地编写测试并检测程序代码。 JUnit能够检验测试结果并立即提供回馈。JUnit测试可以自动执行并且检查结果。当执行测试时,将获得简单且立即的回馈, 比如测试是通过或失败,而不再需要人工检查测试结果的报告。,开发测试成本低。测试是检验要测试的程序代码并定义期望的结果。JUnit测试框架提供自动执行测试的背景,并使这个背景成为其它测试集合的一部份。花费少量的测试投资便能够持续地获得回报。 JUnit测试提升软件的稳定性。对程序所作的测试越少,程序代码就越不稳定。 JUnit测试是用Java开发的。使用Java测试Java软件形成一个介于测试及程序代码间的无缝边界。在测试的控制下测试变成整个软件的扩充,同时程序代码可以被重整。,2.JUnit的安装,1).首先要从网上下载最新的软件压缩包,本书中所有例子使用的是3.8.1版本。 2).解压JUnit压缩包。将JUnit.zip拷贝到工作目录(C:work)下,直接解压缩即得到C:work Junit3.8.1。 3).修改CLASSPATH(以Windows 2000 Server操作系统为例)。做法:右键单击“我的电脑”图标,依次选择“属性”“高级”“环境变量”,在“系统变量”的“变量”列表框中选择CLASSPATH,然后选择“编辑”,在变量名输入框中加入JUnit.jar所在路径,如在本例中加入C:work Junit3.8.1 JUnit.jar,单击“确定”按钮即可(注意:使用“;”号和其他变量值分开)。,4).运行验证程序。进入到安装目录(C:work junit3.8.1)。 运行字符界面的JUnit工具:输入java junit.textui.TestRunner junit.samples.AllTests,结果如图所示。,图中一个点表示测试成功一个单元测试(否则是E),Time表示测试总共花费的时间,Ok说明没有发现任何错误,119表明一共进行了119个单元测试。运行图形界面的JUnit工具:输入Junit.samples.AllTests,结果如图所示。绿色进度条就是著名的“Green Bar”,当Green Bar出现的时候,说明设计的单元测试全部获得了成功,可以进行下一步了。,Eclipse环境下JUnit的设置,JUnit 架构 JUnit 本身是围绕着两个设计模式来设计的 命令模式( TestCase 类) 集成模式( TestSuite 类),JUnit的各种断言,JUnit提供了一些辅助函数,用于帮助确定某个被测试函数是否工作正常。通常把所有这些函数统称为断言。 每一个断言(assert)方法都会记录是否失败了(断言为假)或有错误了(遇到一个意料外的异常)的情况,并通过JUnit的一些类来报告这些结果 当一个失败或者错误出现的时候,当前测试方法的执行流程将会被中止,但是(位于同一个测试类中的)其它测试将会继续运行。,assertEquals assertEquals( Sting message, expected, actual ) 相等性测试 expected是期望值(通常都是硬编码的),actual是被测试代码实际产生的值,message是一个可选的消息,如果提供的话,将会在发生错误时报告这个消息。,assertNull assertNull(Sting message,java.lang.Object object) assertNotNull(Sting message,java.lang.Object object) 验证一个给定的对象是否为null(或者为非null),如果答案为否,则将会失败。Message参数是可选的。,assertSame assertSame(Sting message,expected,actual) 验证expected参数和actual参数所引用的是否为同一个对象,如果不是将会失败。Message参数是可选的 assertNotSame(Sting message,expected,actual) 验证expected参数和actual参数所引用的是否为不同的对象,如相同将会失败。Message参数是可选的,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号