《软件自动化测试环境.docx》由会员分享,可在线阅读,更多相关《软件自动化测试环境.docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件自动化测试环境作为保证软件质量和可靠性的关键技术手段,软件测试正日益受到广泛的重视。但如何 进行测试,如何提高测试的质量和效率,从而确保软件产品的质量和可靠性,仍是令人深感 困扰的问题。在这一部分实验中,我们简要介绍软件测试的基本过程,以及一些常用的技术手段、测 试策略和准则等,并介绍一些富有特色和具有代表性的软件测试支持工具,以期读者能在认 识软件测试重要性的同时: 进一步了解如何正确选择和有效地运用各种测试方法、技术和工 具,提高软件工程的应用水平和提高软件产品的质量与可靠性。1.测试方法概述软件测试方法可以分为:1)白盒测试:通过详细设计文档、代码构造测试用例进行测试。2)黑盒测试:
2、通过需求分析文档和软件外部特性构造测试用例进行测试。3)静态测试:通过代码审查、正规检视的方式来测试。4)动态测试:通过执行程序(系统运转)的方式来验证、测试功能和特性。5)自动化测试:借助于测试工具、测试规范,局部或全部地代替人工进行测试及提高 测试效率。测试工具是软件开发工具的重要组成部分,在产品开发中及过程管理中起着广泛 作用。2.基于GUI的自动化测试基于图形用户界面(GUI)的自动化测试工具在软件测试自动化领域中发挥着巨大的作 用。它的基本原理是:在测试者运行应用程序的同时,把他的所有动作,包括键盘操作、鼠 标点击等捕获下来,生成一个脚本文件,这个脚本以后可以被“回放(playbac
3、k),也就是按 照上一次的所有动作重复执行一遍,实现自动运行和测试。在实际测试过程中,通常脚本按 同一动作连续执行的意义并不大,而是要根据测试需求进行一些必要的修改,如选择不同的 测试数据、脚本中插入检查点(check point)进行跟踪调试等。所以,为使自动测试能够被 高效执行,还要依赖于前期所做的充分、周密的准备和定制工作。基于GUI的自动化测试在实际应用中会存在很多问题,其中最直接的一个问题是:测 试主要针对程序界面进行,一旦界面有任何改动,就需要手工修改已经录制好的测试脚本, 或者重新进行新的录制。这些改动有可能引起大量测试工作的返工,造成测试脚本的日常维 护工作量急剧增大。为解决这
4、个问题,可以在被测应用程序和录制生成的测试脚本之间增加一个抽象层,它 将程序界面上的所有元素映射成相对应的一个逻辑对象,测试就针对这些逻辑对象进行,而 不依赖于界面元素的变化。另外,可以把一些公共函数进行封装,做成可重用的函数库;还 可以把测试执行过程中所需的测试数据做成文件形式,测试脚本在运行时能够随时从此文件 读取预先定制好的数据,使脚本和数据可以独立地进行维护。3 .自动化测试工具的特征自动化测试工具的关键特征包括:(1)支持脚本化语言(scripting language)脚本语言具有与常用编程语言类似的语法结构,可以对已录制好的脚本进行编辑修改。 一般应该具备以下功能:1)支持多种常
5、用的变量和数据类型。2)支持数组、列表、结构,以及其他混合数据类型。3)支持各种条件逻辑(IF、CASE等)。4)支持循环(FOR、WHILE等)。5)支持函数的创建和调用。当然,脚本语言的功能越强大,就越能够为测试开发人员提供更灵活的使用空间,而且 有可能写出比被测软件还要复杂得多的测试系统。所以,首先必须确信脚本语言的功能是否 可以满足测试的需求。如果能够通过命令行方式运行测试脚本,则可以为测试的执行带来更大的灵活性。(2)对程序界面中对象的识别能力测试工具必须能够区分并标识程序界面中的所有对象,使录制的测试脚本具有较好的可 读性、灵活性和更大的修改空间。如果只支持通过位置坐标来区分对象,
6、其灵活性就要差多 To对于一些用比较通用的开发工具编写的程序,例如PB、Delphi. MFC等,大多数测试 工具都能区分和标识出程序界面里的所有元素。因此,在测试工具选择方面,对开发语言的 支持也是很重要的一项。当然程序难免会存在一些比较难于标识的对象,如位图对象 (bitmap)等,而这些对象在程序中可能还要完成一些功能或者执行相应的操作,那么在软件 设计阶段就应该仔细考虑,是一定要这样来实现软件功能,还是为保证软件的可测试性而采 取一些折中的处理方法。(3)支持函数的可重用如果支持函数调用,就可以建立一套比较通用的函数库,一旦程序做了修改,只需把原 脚本中的相应函数进行更改,而不用把所有
7、可能的脚本都改动,可以节省很大工作量。为此,首先要确保脚本能够比较容易地实现对函数的调用;还要支持脚本与被调函数之 间的参数传递。比如:对于用户登录函数,每次调用时可能都需要使用不同的用户名和口令, 此时就必须通过参数的传递将相关信息送到函数内部执行。(4)支持外部函数库除了针对被测系统建立库函数外,一些外部函数同样能够为测试提供强大的功能,如 Windows程序中对DLL文件的访问,C/S结构程序中对数据库编程接口的调用等。例如, 对完成向数据库插入一条记录的操作,程序可以提示已插入成功,但数据是否正确写入数据 库中,通常需要手工去数据库里进行检查,以确认功能的正确实现;如果能够在测试脚本中
8、 插入检查点,通过调用数据库提供的编程接口检查刚才的操作是否执行正常,这样就无需人 工检查,测试程序可以自动完成一些校验的功能。(5)抽象层抽象层用于将程序界面中存在的所有对象实体逐一映射成逻辑对象,帮助减少测试维护 工作量。有些工具称这一层叫Test Map、GUI Map或Test Frame等。(6)支持分布式测试一个软件测试项目,通常需要多名测试人员协同工作。而在自动测试中,当两项测试任 务要同时打开一个文件时,会出现资源竞争问题,因此,如果测试工具不支持分布式测试 (distributed test),将很难保障这种协同测试工作的开展。分布式测试最大的好处是可以事 先定制任务执行的时
9、间表,例如在指定时间、指定设备上执行指定测试任务。(7)支持数据驱动测试即支持对操作系统文件的读写操作。在数据驱动测试(data-driven test)中,测试脚本通 过从事先准备好的数据文件中读取或写入数据,来保证测试流程的正常执行,这样,只需编 制少量的脚本,准备大量的测试数据,测试工具可以自动重复完成大量的测试工作。(8)错误处理测试工具应有一套较好的错误处理系统,以帮助当测试中出现问题时,跳过该错误或对 系统进行复位,然后继续执行后面的任务。(9)调试器调试器(debugger)可以帮助更有效地对测试脚本的执行进行跟踪核对,迅速定位问题。 通常调试器与测试脚本的开发环境集成在一起,支
10、持脚本单步运行、设置断点、核对变量返 回结果等。(10)源代码管理类似于版本管理,源代码的管理对于任何一个软件开发系统来说都是很重要的。源代码 可以帮助我们进行测试脚本库的倒入、倒出,回退到以前版本、比较不同版本间的差别,以 及同时对几个项目进行跟踪等,这些在团队开发中尤其必要。可以对测试数据文件、测试脚 本、对象抽象层进行统一管理。4 .自动化测试工具的分类按测试功能分,测试工具包括:1)单元测试。有针对不同语言的单元测试工具,比如JUnit。2)功能测试。主要有 Mercury Interactive (MI)的 WinRunner Compuware 的 QARun Rational 的
11、 SQA Robot 等。3)负载(压力)测试。例如 MI 的 Astra LoadTest和 LoadRunner、Compuware 的 QA Load、 Rational 的 SQA Load 和 Visual Quantify 等。5 ) Web 测试工具。例如 MI 的 Astra 系列、RSW 的 E-Test Suite 以及 WorkBench、Web Application Stress Tool (WAS)等。5)数据库测试工具。如TestBytes。6)回归测试工具。如 Rational TeamTest、MI WinRunnero7)性能测试工具。如 Rational
12、Performance。8)页面链接测试工具。如Link Sleuth。9)测试流程管理工具。如Test Plan Control。10)测试管理工具。例如 MI 的 TestDirector Rational 的 Test Manager、Compuware 的 QADirector 和 Silicon Valley Networks 的 TestExpert 等。11)缺陷跟踪工具。TrackRecordo12)嵌入式测试工具。例如 ATTOLTestware 的 ATTOLTestware Applied, Microsystems 的 CodeTest TeleLogic 的 Logi
13、Scope 等。13)其他测试工具包。以测试方法分,测试工具可以分为白盒测试和黑盒测试。1)白盒测试工具。主要有: 内存资源泄漏检查:例如 Numega BounceChecker、Rational Purify 等。 代码覆盖率检查:例如 Numega TrueCoverage Rational PureCoverage TeleLogic LogiScope Macabe 等。 代码性能检查:如 Numega Truetime、Rational Quantifyo 代码静态度量分析质量检查工具:如LogiScope、Macabeo2)黑盒测试工具。主要有 WinRunner、QACente
14、r SQATeamTest Rational Visual Test等。5 .a、B测试事实上,软件开发人员不可能完全预见到用户实际使用程序的情况。例如,用户可能错 误地理解命令,或提供一些奇怪的数据组合,亦可能对设计者自认明了的输出信息迷惑不解, 等等。因此,软件是否真正满足最终用户的要求,应由用户进行一系列“验收测试”。验收 测试既可以是非正式的测试,也可以是有计划、有系统的测试。有时,验收测试长达数周甚 至数月,不断暴露错误,导致开发延期。一个软件产品,可能拥有众多用户,不可能由每个用户验收,此时多采用称为a、0测 试的过程,以期发现那些似乎只有最终用户才能发现的问题。因此,软件也通常有
15、a测试版、 0测试版及正式版三个版本。a测试指内部测试版本。软件开发公司组织内部人员模拟各类用户行对即将面市软件产 品(a版本)进行测试,试图发现错误并修正。a测试的关键在于尽可能逼真地模拟实际运 行环境和用户对软件产品的操作,并尽最大努力涵盖所有可能的用户操作方式。经过a测试 调整的软件产品称为0版本。B测试指公众测试版本。软件开发公司组织各方面的典型用户在日常工作中实际使用p 版本,并要求用户报告异常情况、提出批评意见。然后软件开发公司再对0版本进行改错和 完善。6 . MI公司的自动化测试方案Mercury Interactive (MI)公司的自动化测试应用实施方案主要采用了该公司BT
16、O技术 (商业优化科技)中的3个重要产品,即测试管理软件TestDirector功能测试工具WinRunner 和负载(性能)测试工具LoadRunner。1) TestDirector是一套基于Web的测试管理系统,它提供了一个协同合作的环境和一个 中央数据仓库,能让测试人员、开发人员或其他的IT人员通过这个中央数据仓库,在不同 位置就能互通测试信息,并且将测试全过程从测试需求管理、测试计划、测试日程安排,到 测试执行,以至到出错后的跟踪都仅在一个基于浏览器的应用中完成。2) WinRunner (WR)是一个基于Windows的企业级功能测试工具,它在业务应用正式 部署之前,通过自动捕获、
17、检测和重放用户对应用系统的交互操作,来发现系统缺陷,确保 那些跨越多个应用程序和数据库的业务流程在初次发布就能避免故障的出现,保证系统对所 有关键业务处理功能、处理流程的正确,保障应用的质量和准备工作的最优化。3) LoadRunner是预测系统行为和性能的负载测试工具。它强调的是整个企业系统,它 通过模拟成千上万名实际用户和员工的行为,对企业应用系统进行测试,发现并隔离整个企 业架构中存在的问题。因此,在应用生命周期的每个环节中,LoadRunner都可以通过测试 企业应用质量、可靠性和可扩展性,来帮助企业维持稳定的业务和收益在不添置额外硬件 设备的条件下最大限度地提升IT性能,并确保最终用
18、户的性能体验,缩短测试周期,优化 系统性能,并加速应用系统的布署时间。面对一个庞大的软件系统,通过测试而使整个系统完全没有问题是不可能的,测试的关 键目的在于保证系统的质量,把风险控制在可以接受的范围之内。因此,可以确定自动化测 试的思路,设计以TestDirector系统为统一管理工具,分别进行功能测试、压力测试、性能 测试的方案,以及自动化脚本的开发方案。在功能测试阶段,从系统最终操作者的角度入手,对软件系统的功能进行黑盒测试。采 用WinRunner来开发模拟使用软件系统的自动化测试脚本。其中测试用例按照业务处理的 流程来设计,并且,通过设计测试数据来驱动每一个测试用例的执行。压力测试和
19、性能测试主要用来解决3个方面的问题:系统是否能够承受大规模的业务量; 对于不同规模的业务量,多大的系统才可以满足用户需要;对于不同规模的业务量,什么样 的网络带宽和质量可以满足用户的需要。在测试过程当中,可以利用LoadRunner工具,分别对客户端访问中间层,以及中间层 访问数据库的参数进行记录,并对记录下来的脚本进行第二次开发,最终完成压力测试,得 到不同业务规模下的系统配置、网络配置,为系统的资源规划提供了科学、可靠、准确的依 据。实验目的1)学习自动化测试的原理和方法,了解何种情况下适合进行自动化测试。2)结合软件生命周期,了解自动测试工具的类型以及测试步骤和自动测试用例设计基 础,了解测试自动化的优点和限制。