当前位置:文档之家› 软件自动化测试工具研究

软件自动化测试工具研究

软件自动化测试工具研究摘要:为了提高软件的测试质量和测试效率,在软件测试过程中越来越多地开始使用测试工具实现软件自动化测试。

简述了软件自动化测试的优点,介绍了目前常用的几种自动化测试工具及其功能,并分析了选择自动化测试工具的方法。

结合软件自动化测试的实施程序,探讨了测试工具在软件自动化测试的应用。

关键词:软件自动化测试;测试工具;应用软件实现自动化测试,其目的在于缩短测试周期,增强对软件性能方面的测试能力,从而达到保证软件质量并使软件能够提前上线。

相对于手工测试来说,自测试工具具有如下优点:(1)提高了测试效率。

在软件测试中对于回归测试中的动作和用例是已经完全设计好的,同时可以完全预知测试期望和结果,从而可以极大提高测试效率,缩短回归测试时间。

(2)可以运行更多更繁琐的测试。

许多不可能同时让足够多的测试人员同时进行测试的大量用户测试,实行自动化测试可模拟出同一时间的许多用户,更好的利用资源,同时达到测试的目的。

(3)具有一致性和可重复性。

由于测试是自动执行的,每次测试的结果和执行的内容的一致性是可以得到保障的,从而达到测试的可重复效果。

自动化测试还存在着复用性的优点,自动测试通常采用脚本技术,只需要对脚本做少量的甚至不做修改,实现在不同的测试过程中使用相同的用例。

2软件自动化测试工具的分类及功能目前用于测试的工具较多,从测试应用的角度看,一般可分为白盒测试工具(动态测试、静态测试)、黑盒测试工具(功能测试、性能测试)、测试管理工具(测试流程管理、缺陷跟踪管理、测试用例管理)等几大类。

具体分析如下:2.1白盒测试工具白盒测试主要是从程序的内部结构出发设计测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态,来测试产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。

其对应的测试工具也主要是直接对代码进行分析,针对程序代码、程序结构、对象、类层次等进行测试,测试中发现的缺陷可以定位到代码行、具体的某个变量。

软件自动化测试中对白盒测试工具的选择主要应依据该工具对开发语言的支持力度、对嵌入式操作系统的支持力度、代码的覆盖深度及测试的可视化。

白盒测试工具可进一步细分为静态测试工具和动态测试工具。

静态测试工具是不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。

具有代表性的静态测试工具有Gimpel公司的PC-lint和Compuare的DevPartner Studio中的CodeReview。

动态测试工具需要实际运行被测系统,并设置断点,向代码生成的可执行文件插入一些监测代码,监测断点这一时刻程序运行的数据。

具有代表性的动态测试工具有IBM-Rational公司的Purify,Pure Coverage,Quanlify和Compuare公司的Error Detect,Coverage Analysis,PerformanceAnalysis。

2.2黑盒测试工具黑盒测试是在已知产品所应具有的功能的情况下,通过测试来检测每个功能能否正常使用的测试工具。

其基本工作原理是利用脚本的录制和回放,模拟用户的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。

测试时完全不考虑程序内部结构和内部特性,它只检查程序功能是否按照需求规格说明书的规定正常使用,主要用于软件确认测试。

黑盒测试工具的代表有IBM Rational的TeamTest、Robot,Compuware公司的QACenter,MI公司的WinRunner 等工具。

2.3测试数据生成工具测试数据生成工具主要应用在测试的前端,为测试过程准备大量的可用数据。

并且通过转化、析取、变换或捕捉现有数据作为依据,自动为测试程序生成可靠的测试数据。

同时,可以通过配置工具配置数据生成的规则,并且有一个自动配置引擎,可以根据已经存在的数据库自动生成配置文件。

目前典型的测试数据生成工具有:Bender& Associates公司提供的功能测试数据生成工具SoftTest; InternationalSoftwareAutomation公司提供的PanoramaC/C++测试数据生成工具。

2.4测试管理工具测试管理工具是指用工具对软件的整个测试输入、执行过程和测试结果进行管理的过程。

测试管理工具通过一个中央数据仓库,实现测试人员、开发人员或其他IT人员在异地进行信息交流。

从测试需求管理到测试计划、测试日程安排、测试执行到出错后的错误跟踪,实现了全过程的自动化管理,提高回归测试的效率、大幅提升测试时间、测试质量、用例复用、需求覆盖等。

测试管理工具的代表有Mercury Interactive公司的TestDirector、IBM-Rational公司的ClearQuest。

3选择软件自动化测试工具的方法在考虑选用工具的时候,面对用于软件测试的众多工具,可以从以下几个方面来权衡和选择。

3.1功能选择一个测试工具首先就是看它提供的功能。

除了基本的功能之外,测试工具还应具备以下功能:①录制/回放功能:在自动化测试工作中,该功能是绝大多数专业测试人员开始自动化测试尝试的第一步;②集成功能:测试工具的引入是伴随着测试过程改进而进行的一个持续的过程。

因此,集成功能也是测试工具必须考虑的因素;③图像测试功能:进行软件测试中有时必须要测试一个位图或类似的图片,在多数的Windows应用程序中会带有一些绘图控件,而在GIS(地理信息系统)应用软件的测试中,这一功能作用尤为重要。

3.2易用性不同的测试工具面向不同的测试目的、具有各自的特点和适用范围,所以不是任何一个优秀的测试工具都能适应不同公司的需求。

因此,在选择测试工具时应考虑工具的易用性。

3.3连续性和一致性在选择测试工具时,必须考虑测试工具引入的连续性和一致性,即对测试工具的选择必须有一个全盘的考虑,分阶段、逐步的引入测试工具。

3.4适合于软件生命周期软件所处的生命周期不同,测试目的不同,因此,在软件不同的生命周期阶段,应根据其测试特点选择不同的测试工具。

4测试工具在软件自动化测试中的应用4.1软件自动化测试的实施程序自动化测试与软件开发过程从本质上来讲是一样的,其实施程序是利用自动化测试工具,经过对测试需求的分析,设计出自动化测试用例,从而搭建自动化测试的框架,设计与编写自动化脚本,测试脚本的正确性,从而完成该套测试脚本。

具体步骤如下:4.1.1分析测试需求开发管理者、测试管理者和测试人员实现自动化测试的目标常常是有差别的。

如功能测试、性能测试、安全性测试等等。

同时,不同的测试工具其测试功能不同,因此,在实施测试方案之前也需要收集需求,选择测试工具。

4.1.2设计测试用例测试用例是按一定顺序执行的与测试目标相关的一系列测试。

测试用例设计将产生测试所包括的输入值、期望结果以及其他任何运行测试的相关信息。

4.1.3编写测试脚本测试脚本的编写过程便是具体的测试用例的脚本转化。

根据测试设计生成需要进行的测试脚本。

一些高度自动化的测试工具能够根据软件以前运行的情况自动地录制测试用例。

4.1.4实施测试测试过程的自动化的实现主要依靠测试支持系统对测试过程进行了自动化调度和控制。

4.1.5生成软件测试报告对结果进行分析,发现产品中问题的本质,对产品质量进行准确地评估。

4.2测试工具在软件自动化测试中的应用4.2.1识别待测试程序集中的类、方法和属性待测试程序集的命名空间和类型类是很好地测试一个程序集的必要信息,是在开始测试给定程序集之前必须了解的。

因此,在实际的测试过程中,在测试一个给定的程序集之前,一般都需要用测试工具识别出所有的命名空间和类型类。

4.2.2代码分析代码分析技术类似于高级语言编译系统,是为查找和描述软件源代码中的薄弱环节而开发的,这些薄弱环节可能是软件安全漏洞、逻辑错误、编程错误、开发异常、边界条件错误或其他会引发问题的错误代码。

在软件测试中一般针对不同的高级语言去构造测试工具,在工具中定义类、对象、函数、变量等规则、语法规则;在分析时对代码进行语法扫描,找出不符合编码规范的地方;根据某种质量模型评价代码质量,生成系统的调用关系图等。

因此,在该技术中,测试工具通过分析源代码,自动生成测试驱动和桩模板。

开发人员在该测试脚本的基础上指定测试输入数据、期望输出数据以及桩函数逻辑。

测试执行后自动生成测试报告和各种运行时候报告,从而完成整个过程的软件测试。

在此过程中,测试对代码的分析在逻辑上一般应将整个测试工具分成各自独立的两部分:静态分析模块和动态分析模块。

其中,静态分析模块是整个自动化工具的基础。

静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接,生成可执行文件。

首先,分析工程文件,根据工程文件依次读入所有的源程序。

然后,对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。

最后,对源程序作语法分析,从中提取各种必要的数据,并在静态数据库中将得到的数据全部保存,提供给后续的动态分析和测试报告使用。

动态测试工具一般采用“插桩”的方式,向代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据,分析软件的覆盖率、检查内存使用有否渗漏和违例、跟踪程序的异常终止等等。

根据动态测试在软件开发过程中所处的阶段和作用,动态测试工具应完成以下3个步骤:①单元测试:其目的是检验软件基本组成单位的正确性;②集成测试:其主要目的是检查软件单位之间的接口是否正确;③系统测试:其目的是对应经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其指定的要求。

4.2.3捕获—回放捕获—回放技术是在窗口系统的基于消息管理机制的基础上实现的。

测试人员先借助捕获回放工具手动进行对软件系统的操作来完成测试脚本的录制,工具会首先学习被测软件系统组件层次结构和组件自身的信息,随后会采用某种方式截获测试人员在被测软件系统组件上触发产生的事件,随后解析该事件,得到事件的各个参数,保存到测试脚本中,与预先给定的标准结果比较,测试软件缺陷。

捕获——回放工具能够捕获在测试过程中传递给软件的输入,生成执行的脚本,并且能够在以后的时间中,重复这个执行的过程。

如果工具不能识别应用程序对象而无法进行对手工测试的录制和回放,日后测试自动化的实现将会遇到巨大困难而导致失败。

对于用户输入的捕获,捕获——回放工具将以3种级别捕获,即硬件级别、操作级别和进程级别。

硬件级别捕获,是对用户输入的录制和回放主要是采用硬件来完成。

如某个字符的键盘输入、鼠标的点击等。

硬件设备可以捕获键盘敲击的键值,或加密键盘扫描码,从而监控该计算机的使用,以防止底层恶意代码对计算机的监听。

相关主题