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