版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章软件自动化测试概述8.1软件自动化测试的产生8.2软件自动化测试的概念8.3软件自动化测试的意义8.4开展自动化测试的方8.5软件自动化测试的原理和方法8.6软件自动化测试工具
8.1软件自动化测试的产生
随着计算机日益广泛的应用,计算机软件越来越庞大和复杂,软件测试的工作量也越来越大。随着人们对软件测试工作的重视,大量的软件自动化测试工具不断涌现出来,自动化测试能够满足软件公司想在最短的进度内充分测试其软件的需求,一些软件公司在这方面的投入,会对整个开发工作的质量、成本和周期带来非常明显的效果。
8.2软件自动化测试的概念
软件自动化测试是一项让计算机代替测试人员进行软件测试的技术,是指编写软件去测试其他软件。自动化测试的目标是对被测试系统进行自动测试。总的来说,自动化测试的目标是通过较少的开销,得到更彻底的测试,并提高产品的质量。
软件自动化测试有如下特点:
(1)可以对程序的新版本自动执行回归测试;
(2)可以执行一些手工测试困难或不可能进行的测试;
(3)可以更好地利用资源;
(4)测试具有一致性和可重复性;
(5)可以更快地将软件推向市场;
(6)可以增加软件信任度。
8.3软件自动化测试的意义
软件自动化测试就是一项让计算机代替测试人员进行软件测试的技术,相对于手工测试而言,自动化测试主要是通过所开发的软件测试工具、脚本等来实现的,具有良好的可操作性、可重复性和高效率等特点。为了更好地理解自动化测试的意义,需要从三个方面考虑:一是手工测试的局限性;二是软件自动化测试所带来的好处;三是自动化测试的局限性。
1.手工测试的局限性
手工测试是不可替代的,因为人具有很强的判断能力。
(1)通过手工测试无法做到覆盖所有代码路径。
(2)简单的功能性测试用例在每一轮测试中都不能少,而且具有一定的机械性、重复性,工作量往往较大。
(3)许多与时序、死锁、资源冲突、多线程等有关的错误,通过手工测试很难捕捉到。
(4)进行系统负载、性能测试,需要模拟大量数据或大量并发用户等各种应用场合时,很难通过手工测试来进行。
(5)进行系统可靠性测试时,需要模拟系统运行10年、数十年,以验证系统能否稳定运行,这也是手工测试无法模拟的。
(6)如果有大量的测试用例,需要在短时间内(如1天)完成,手工测试几乎不可能做到。
(7)难以做到回归测试。
2.软件自动化测试所带来的好处
自动化测试有很强的优势,即借助计算机的计算能力可以重复、不知疲倦地运行。
使用测试工具的目的就是要提高软件测试的效率和软件测试的质量。通常,自动化测试的好处有:产生可靠的系统;改进测试工作质量;减少测试工作量并加快测试进度。
1)产生可靠的系统
测试工作的主要目标一是找出缺陷,从而减少应用中的错误;二是确保系统的性能满足用户的期望。
通过使用自动化测试可获得的效果归纳如下:
(1)需求定义的改进;
(2)性能测试的改进;
(3)负载/压力测试的改进;
(4)高质量测量与测试最佳化;
(5)改进与开发组人员之间的关系;
(6)改进系统开发生命周期。
2)改进测试工作质量
通过使用自动化测试工具,可增加测试的深度与广度,改进测试工作质量。其具体好处可归纳如下:
(1)改进多平台兼容性测试;
(2)改进软件兼容性测试;
(3)改进普通测试执行;
(4)使测试集中于高级测试问题;
(5)可执行手工测试无法完成的测试;
(6)可重现软件缺陷;
(7)测试无需用户干预。
3)减少测试工作量并加快测试进度
善于使用测试工具来进行测试,其节省时间并加快测试工作进度是毋庸置疑的,这也是自动化测试的主要优点。
3.自动化测试的局限性
1)自动化测试不能取代手工测试
自动化测试绝不能代替手工测试,下列情况不适合于自动化测试:
(1)周期短并且一次性的项目。
(2)进度非常紧张的项目。
(3)使用了很多第三方或自定义控件的项目。(4)软件不稳定,如软件升级版本时,用户界面和功能频繁变化,此时自动化测试相应部分修改的开销较大。
(5)结果很容易通过人验证的测试。
(6)涉及物理交互的测试,如在读卡机上划卡,断开设备的物理连接、开关电源等。
2)手工测试比自动测试发现的故障要多
自动化测试主要是进行重复测试。一般情况下,自动化测试进行的工作是以前进行过的,因此被测试软件在自动化测试中暴露的故障要少得多。
自动化测试主要用于回归测试,进行正确性验证测试,而不是故障发现测试。据经验数据统计,自动化测试只能发现约15%的故障,而手工测试可以发现约85%的故障。
3)自动化测试不能提高测试的有效性
自动化测试仅用于提高测试的效率,即减少测试的开销和时间。
4)自动化测试不具有想象力
(1)自动化测试是通过测试软件进行的,测试过程只是按照运行机制执行。手工测试时可以直接判断测试结果的正确性,而自动化测试在许多情况下的测试结果还需要人工干预判断。
(2)手工测试可以处理意外事件,如网络连接中断,此时必须重新建立连接。手工测试时可以及时处理该意外,而自动化测试时该意外事件一般都会导致测试的中止。
8.4开展自动化测试的方法
1.选取合适的测试项目来开展自动化测试自动化测试只有在多次运行后,才能体现出自动化的优势,只有不断地运行自动化测试才能有效预防缺陷、减轻测试人员手工的回归测试的工作量。如果一个项目是短期的并且是一次性的项目,则不适合开展自动化测试。
2.自动化测试介入的时机
过早的自动化测试会带来维护成本的增加,因为早期的程序界面一般不够稳定,处于频繁更改的状态,这时候进行自动化测试往往得不偿失,疲于应付“动荡”的界面。
自动化测试不应该在界面尚未稳定的时候开始,但是,并不意味着不需要计划和准备工作。在项目初期,就要考虑工具的选择问题。
3.自动化测试工程师的基本素质和技能要求
自动化测试工程师应该具备一定的自动化测试基础,包括自动化测试工具的基础、自动化测试脚本的开发基础知识等;还需要了解各种测试脚本的编写、设计方法,知道在什么时候选取怎样的测试脚本开发方式和如何维护测试脚本;需要具备一定的编程技巧,熟悉某些测试脚本语言的基本语法和使用方法。
4.自动化测试的成本
成功开展自动化测试必须考虑自动化测试的成本问题。成本包括测试人员、测试设备、测试工具等。
8.5软件自动化测试的原理和方法
1.代码分析代码分析类似于高级编译系统,一般针对不同的高级语言构造分析工具,在工具中定义类、对象、函数、变量等的定义规则、语法规则;在分析时对代码进行语法扫描,找出不符合编码规范的地方;根据某种质量模型评价代码质量,生成系统的调用关系图等。
2.捕获和回放
代码分析是一种白盒测试的自动化方法,捕获和回放则是一种黑盒测试的自动化方法。
捕获是将用户每一步操作都记录下来。这种记录的方式有两种:程序用户界面的像素坐标或程序显示对象(窗口、按钮、滚动条等)的位置,以及相对应的操作、状态变化或是属性变化。所有的记录转换为一种脚本语言所描述的过程,以模拟用户的操作。
3.脚本技术
脚本是一个特定测试的一系列指令,这些指令可以被自动化测试工具执行。脚本可以通过录制测试的操作产生,然后再做修改,这样可以减少脚本编程的工作量。当然,也可以直接用脚本语言编写脚本。
脚本的产生有两种方式:一种是通过录制测试的操作产生;另一种是直接用脚本语言编写。
脚本技术可以分为以下几类:
(1)线性脚本:是录制手工执行的测试用例得到的脚本。
(2)结构化脚本:类似于结构化程序设计,具有各种逻辑结构(顺序、分支、循环),而且具有函数调用功能。
(3)共享脚本:是指某个脚本可被多个测试用例使用,即脚本语言允许一个脚本调用另一个脚本。
(4)数据驱动脚本:是指将测试输入存储在独立的数据文件中。
(5)关键字驱动脚本:是数据驱动脚本的逻辑扩展。
4.虚拟用户技术
虚拟用户技术通过模拟真实用户的行为来对被测程序(ApplicationUnderTest,AUT)施加负载,以测量AUT的性能指标值,如事务的响应时间、服务器的吞吐量等。
虚拟用户技术以真实用户的“商务处理”(用户为完成一个商业业务而执行的一系列操作)作为负载的基本组成单位,用“虚拟用户”(模拟用户行为的测试脚本)来模拟真实用户。
8.6软件自动化测试工具
8.6.1测试工具分类1.按照测试方法分类1)白盒测试工具白盒测试工具一般是针对代码进行测试,常用的白盒测试工具集有Parasoft和Compuware,见表8-1和表8-2。测试中发现的缺陷可以定位到代码级,根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。
(1)静态测试工具:直接对代码进行分析,不需要运行代码,也不需要对代码编译链接,生成可执行文件。
(2)动态测试工具:动态测试工具与静态测试工具不同,它一般采用“插桩”的方式,向代码的可执行文件中插入一些监测代码,用来统计程序运行时的数据。
2)黑盒测试工具
黑盒测试工具包括功能测试工具和性能测试工具。黑盒测试工具的一般原理是利用脚本的录制(Record)/回放(Playback),模拟用户的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。
黑盒测试工具的代表有Rational公司的TeamTest、Compuware公司的QACenter。常见的黑盒功能测试工具如表8-3所示。
2.按照测试的对象和目的分类
软件测试工具按照测试的对象和目的大致可分为单元测试工具、功能测试工具、负载测试工具、性能测试工具、Web测试工具、数据库测试工具、回归测试工具、嵌入式测试工具、页面链接测试工具、测试设计与开发工具、测试执行和评估工具、测试管理工具等。
3.按测试工具的用途分类
(1)测试管理工具用于管理测试的整个工作过程以及过程中产生的各种相关文档、数据、记录和报告等。常用的测试管理工具有TestDirector和TestManager等。其中TestDirector的使用率最高。
(2)功能测试工具是指用于自动化执行功能测试脚本的工具,一般采用基于录制回放的机制。
(3)性能测试工具通常指那些用来支持压力、负载测试,能够用来录制和生成脚本、设置和部署场景、产生并发用户和向系统施加持续压力的工具。
(4)单元测试工具一般指用于单元测试的测试框架,这些测试工具提供单元测试的一些接口,管理单元测试的执行。常见的单元测试工具有XUnit系列、MSTest等。
(5)测试用例设计工具指用于辅助测试用例的设计或测试数据生成的工具,一般常用的有TD。
4.按测试工具的收费方式分类
1)商业测试工具
商业测试工具的特点是需要花钱购买,但是会相对成熟和稳定,并且有一定的售后服务和技术支持。
商业测试工具主要集中在GUI功能测试和性能测试方面,目前流行的基于GUI的功能自动化测试工具有Robot、QTP、TestComplete等。
2)开源测试工具
开源软件是指软件的源代码是公开发布的,通常是由自愿者开发和维护的软件。开源测试工具是测试工具的一个重要分支。
3)自主开发测试工具
目前,很多软件测试组织其实已经具备了自己动手开发测试工具的条件。
市场对于测试工具的接受程度在不断提高,人们对测试工具的认识不断加强和深入,对测试工具原理的理解不断提高。
8.6.2目前市场上主流的测试工具
1.MI公司的产品
1) LoadRunner
LoadRunner是一种预测系统行为和性能的负载测试工具。
LoadRunner主要功能如下:
(1)轻松创建虚拟用户。
(2)使用VirtualUserGenerator,能简便地创立起系统负载。
(3)创建真实的负载。
(4)定位性能问题。
(5)分析结果以精确定位问题所在。
2) WinRunner
2006年以前,MercuryInteractive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。
WinRunner的特点在于:与传统的手工测试相比,它能快速、批量地完成功能点测试;能针对相同测试脚本,执行相同的动作,从而消除人工测试所带来的理解上的误差;此外,它还能重复执行相同动作,因此测试工作中最枯燥的部分可交由机器完成;它支持程序风格的测试脚本,一个高素质的测试工程师能借助它完成流程极为复杂的测试,通过使用通配符、宏、条件语句、循环语句等,还能重用测试脚本;它针对于大多数编程语言和Windows技术,提供了较好的集成、支持环境,对基于Windows平台的应用程序实施功能测试带来了极大的便利。
其主要功能包括:
(1)轻松创建测试;
(2)插入检查点;
(3)检验数据;
(4)增强测试;
(5)运行测试;
(6)分析结果;
(7)维护测试。
3) TestDirector
TestDirector是全球最大的软件测试工具提供商MercuryInteractive公司生产的企业级测试管理工具,也是业界第一个基于Web的测试管理系统,它可以在公司内部或外部
进行全球范围内测试的管理。通过在一个整体的应用系统中集成测试管理的各个部分,包括需求管理、测试计划、测试执行以及错误跟踪等功能,TestDirector极大地加速了测试
过程。
TestDirector将测试过程流水化,从测试需求管理到测试计划、测试日程安排、测试执行,到出错后的错误跟踪,仅在一个基于浏览器的应用中便可完成,而不需要每个客户端都安装一套客户端程序。
(1)需求管理。
(2)测试计划的制订。
(3)人工与自动测试的结合。
(4)安排和执行测试。
(5)缺陷管理。
(6)图形化和报表输出。
4) QTP
QTP(QuickTestProfessional)是一种自动测试工具。使用QTP的目的是用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此在测试前要考虑好如何对应用程序进行测试,例如要测试哪些功能、操作步骤、输入数据和期望的输出数据等。
2.IBMRational公司的产品
1) RationalTestmanager
RationalTestManager是一个开放的可扩展的架构,它统一了所有的工具、制造(Artifacts)和数据,而数据是由测试工作产生并与测试工作(Effort)关联的。在这个唯一的保护伞(Umbrella)下,测试工作中的所有负责人(Stakeholder)和参与者能够定义和提炼他们将要达到的质量目标。
2) RationalClearQuest
ClearQuest是IBMRational公司提供的缺陷及变更管理工具。
3) RationalRobot
RationalRobot提供了软件测试的功能,正如其名robot(机器人),它提供了许多类似机器人的重复过程,供测试用。
RationalRobot是一个面向对象的软件测试工具,主要针对Web、ERP和C/S进行功能自动化测试;可以降低在功能测试上的人力和物力的投入成本和风险,测试包括可见的和不可见的对象。
RationalRobot具有以下功能和作用:
(1)执行完整的功能测试。记录和回放遍历应用程序的脚本以及测试在查证点处的对象状态。
(2)执行完整的性能测试。通过RationalRobot与RationalTestManager的协作可以记录和回放脚本,这些脚本帮助断定多客户系统在不同负载情况下是否能够按照用户定义的标准运行。
(3)在SQABasic、VB、VU多种环境下创建并编辑脚本。RationalRobot编辑器提供有色代码命令,并在集成脚本开发阶段提供键盘帮助。
(4)测试微软IDE环境下VB、HTML、Java、OracleForms、PowerBuilder、Delphi、开发的应用程序以及用户界面上看不见的那些对象。
(5)脚本回放阶段收集应用程序诊断信息。RationalRobot与RationalPurifyQuantifyPureCoverage集成,可以通过诊断工具回放脚本,并在日志中查看结果。
(6)同Rational其他组件或产品集成使用Robot。
4) RationalPurify
自动化测试工具RationalPurify是RationalPurifyPlus工具中的一种。Purify是一个面向VC、VB或者Java开发的测试VisualC/C++和Java代码中与内存有关的错误,确保整个应用程序的质量和可靠性。
3.Telelogic公司产品
最有名的logiscope白盒测试工具是法国Telelogic公司推出的专用于软件质量保证和软件测试的产品。其主要功能是对软件做质量分析和测试以保证软件的质量,并可做认证、反向工程和维护,特别是针对要求高可靠性和高安全性的软件项目和工程。
4.Parasoft公司产品
1) JTest白盒测试工具
JTest是Parasoft公司推出的一款针对Java语言的自动化代码优化和测试工具,它通过自动化实现对Java应用程序的单元测试和编码规范校验,从而提高代码的可靠性以及Java软件开发团队的开发效率。
2) C++Test白盒测试工具
C++Test是Parasoft针对C/C++开发的一款自动化测试工具,专门针对C/C++的源程序代码进行自动化单元测试的工具,可以自动测试任何
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GB-T 40831-2021资产管理 财务与非财务职能在资产管理活动中的一致性指南》专题研究报告
- 《GBT 15307-2008可转位钻头用削平直柄》专题研究报告
- 《GBT 15543-2008电能质量 三相电压不平衡》专题研究报告
- 道路安全交通法培训小结课件
- 2025年病理科工作总结及下一年工作计划
- 道路交通培训课件教学
- 道岔知识大全课件
- 逼单技巧和方法培训课件
- 达运安全培训课件
- 边境网络通信安全培训课件
- 2026年初二物理寒假作业(1.31-3.1)
- 2025秋人教版七年级上册音乐期末测试卷(三套含答案)
- 2025福建德化闽投抽水蓄能有限公司招聘4人(公共基础知识)综合能力测试题附答案
- “十五五规划纲要”解读:和美乡村宜居宜业
- 广东省广州市2026届高三年级上学期12月调研测试数学(广州零模)(含答案)
- 2025-2030中国工业硅行业市场现状供需分析及投资评估规划分析研究报告
- GJB3243A-2021电子元器件表面安装要求
- 中桥施工组织设计方案
- 一类,二类,三类医疗器械分类目录
- 国开大学2022年01月2136《管理会计》期末考试参考答案
- 健康相关生存质量及其测量和评价课件
评论
0/150
提交评论