1. 研究主要内容
(1) 自动化测试
(2) TestComplete介绍
(3) Winrunner介绍
(4) 两款软件的对比
2.
自动化测试
由于很多的软件测试工作包括大量的近似重复的工作,会给测试工程师带来很大的工作量,这样我们就需要用自动化测试的软件来实现测试的自动化,来减少测试人员的工作量,从而提高效率。
因为软件测试的工作量很大(40% 到60% 的总开发时间),而又有很大部分适于自动化,因此,测试的改进会对整个开发工作的质量、成本和周期带来非常显著的效果。
自动化测试的有点有很多:快速(Fast)、可靠(Reliable)、可重复(Repeatable)、可程序化(Programmable)、可重用的(Reusable);广泛的(Comprehensive);它的这些有点使得自动化测试在软件测试中的地位不断提高,而且也是发展的趋势。
自动化测试的步骤大概是:
1. 测试个案(test case ,或称为测试用例)的生成;
2. 测试的执行写控制;
3. 测试结果与标准输出的对比;
4. 不吻合的测试结果的分析、分类、记录和通报;
5. 总测试状况的统计,报表的产生
6. 自动测试与开发中产品每日构建(build )的配合。
3.
TestComplete介绍
现在的大多数比较著名的自动化测试软件的原理都是大致相同的,它们都是通过对被测软件的操作过程的录制和回放来完成测试的。
本文现在介绍的TestComplete是近年来异军突起的新兴的软件;它曾在2003年Delphi Informant杂志读者选择奖 中获得最佳测试与QA工具优势明显。其产品TestComplete获得60%的选票;在第14届Jolt大奖评选中获得测试工具的Jolt大奖。我在实习中也是比较多的接触到这款软件
与它的名字相同,TestComplete是一个完整的测试应用系统,它集成了如下的功能:
l
功能测试
l
单元测试
l
分布式测试
l
HTTP performance testing
l 回归测试:就是指重复一个已经成功执行的测试用例,并把新执行得到的结果与原来的 正确的结果相比较。回归测试很容易理解但是如果没有自动化的测试工具来保证大多数的细节,那么实现起来将是十分困难的。因为工作量很大,而且人工操作很容易忽略细节。而TestComplete就为我们提供了自动化回归测试的能力。
接下来我想介绍一下这款软件的特点:
1.
获取和保存被测对象的属性:
l
TestComplete可以获取被测软件的对象属性并可以将其属性值记录下来和下一次运行时的相应属性值作比较。
l
需要注意的问题是:我们的Java程序必须要编译成Open Application否则TestComplete无法自动认出其中的大部分对象。
l
脚本代码如下:
l
// Compares property values
if (! Objects.Compare(w, CollectionName))
Log.Message("Properties have been changed.")
2. 抓取软件运行时的图片
可以用TestComplete获取被测软件运行是的图片(包括全屏和子窗口)来和已知图片进行比较,并可一图片形式保存下本次运行的结果。
比较图片的代码:
if ( !
Regions.Compare(w, Classju,false,false,true,1700))
//比较当前的运行程序的图片,是否与之前保存为CLassju的图片一致。类聚图
Log.Error("Regions are not identical")
else Log.Message("Regions of Classju is
identical")
保存图片的代码:
w=Sys.Activewindow();
Str = Utilities.DateTimeToStr(Utilities.Now())
s = Utilities.StringReplace(Str,":","'",1)
Regions.SaveToFile(w,
title+""+s+".bmp")
3. 比较文件
在测试时,我们有可能会用到比较两个文件的功能来保证被测试的软件的输出与预期值相同。这个功能将会对两个文件逐字节的比较
比较文件的代码如下:
if (!
Files.Compare("C:\\Work\\OrdersList.txt","C:\\Work\\OrdersList_old.txt")
Log.Warning("List
of orders was changed");
4.
支持多种语言和开发环境
TestComplete支持所用Visual Basic, Visual C++, Delphi, C++Builder, Java, Visual
Studio .NET, and Visual FoxPro开发的应用程序和模块。这所有的自动测试软件中时绝无仅有的。
5. 支持多种脚本语言
我们不必为了使用TestComplete而去学习其他的脚本语言,而是用我们熟悉的脚本语言即可。因为TestComplete支持以下的所有脚本语言:VBScript, DelphiScript,
JScript, C++Script or C#Script 。
6.事件处理(Event handling)
TestComplete
可以在脚本运行的时候跟踪系统所发生的事件,并根据测试人员预先编好的事件处理程序对相应的事件进行处理。例如,对系统中的一些意外的窗体的弹出,我们可以编写相应的程序对其进行处理,以避免测试的意外中断。
4.
Winrunner介绍
Mercury
Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。
Winrunner 7.6的特点主要有如下几个方面:
l
用WinRuuner创建一个测试,只需点击鼠标和键盘,完成一个标准的业务操作流程,WinRunner自动记录你的操作并生成所需的脚本代码。这样,即使计算机技术知识有限的业务用户轻松创建完整的测试。你还可以直接修改测试脚本以满足各种复杂测试的需求。
l
但是 WinRuuner对Java的支持不是很好,无法识别出绝大部分的对象
l
已经在网上看到Java的插件,但是由于License的问题,无法使用。
用WinRuuner创建一个测试,只需点击鼠标和键盘,完成一个标准的业务操作流程,WinRunner自动记录你的操作并生成所需的脚本代码。这样,即使计算机技术知识有限的业务用户轻松创建完整的测试。你还可以直接修改测试脚本以满足各种复杂测试的需求。WinRunner提供这两种测试创建方式,满足测试团队中业务用户和专业技术人员的不同需求。
插入检查点
在记录一个测试的过程中,可以插入检查点,检查在某个时刻/状态下,应用程序是否运行正常。在插入检查点后,WinRunner会收集一套数据指标,在测试运行时对其一一验证。WinRunner提供几种不同类型的检查点,包括文本的、GUI、位图和数据库。例如,用一个位图检查点,你可以检查公司的图标是否出现于指定位置。
检验数据
除了创建并运行测试,WinRunner还能验证数据库的数值,从而确保业务交易的准确性。例如,在创建测试时,可以设定哪些数据库表和记录需要检测;在测试运行时,测试程序就会自动核对数据库内的实际数值和预期的数值。WinRunner自动显示检测结果,在有更新/删除/插入的记录上突出显示以引起注意。
增强测试
为了彻底全面地测试一个应用程序,需要使用不同类型的数据来测试。WinRunner的数据驱动向导( Data Driver Wizard)可以让你简单地点击几下鼠标,就可以把一个业务流程测试转化为数据驱动测试,从而反映多个用户各自独特且真实的行为。
以一个订单输入的流程为例,你可能希望把订单号或客户名称作为可变栏,用多套数据进行测试。使用Data Driver Wizard,你可以选择订单号或客户名称用数据表格文件中的哪个栏目的数据替换。你可以把订单号或客户名称输入数据表格文件,或从其它表格和数据库中导入。数据驱动测试不仅节省了时间和资源,又提高了应用的测试覆盖率。
WinRunner还可以通过Function Generator增加测试的功能。使用Function Generator可以从目录列表中选择一个功能增加到你的测试中以提高测试能力。例如,你可以选择”calendar”,然后从日历功能的下属目录中选择,如Calendar_select_date(),然后你可以直观地输入参数,把这个功能插入到你的测试中。
针对相当数量的企业应用里非标准对象,WinRunner提供了Virtual Object Wizard来识别以前未知的对象。使用Virtual Object
Wizard,你可以选择未知对象的类型,设定标识和命名。在录制使用该对象的测试时,WinRunner会自动对应它的名字,从而提高测试脚本的可读性和测试质量。
运行测试
创建好测试脚本,并插入检查点和必要的添加功能后,你就可以开始运行测试。运行测试时,WinRunner会自动操作应用程序,就象一个真实的用户根据业务流程执行着每一步的操作。测试运行过程中,如有网络消息窗口出现或其它意外事件出现,WinRunner也会根据预先的设定排除这些干扰。
分析结果
测试运行结束后,你需要分析测试结果。WinRunner通过交互式的报告工具来提供详尽的、易读的报告。报告中会列出测试中发现的错误内容、位置、检查点和其它重要事件,帮助你对测试结果进行分析。这些测试结果还可以通过Mercury
Interactive的测试管理工具TestDirector来查阅。
维护测试
随着时间的推移,开发人员会对应用程序做进一步的修改,并需要增加另外的测试。使用WinRunner,你不必对程序的每一次改动都重新创建你的测试。WinRunner可以创建在整个应用程序生命周期内都可以重复使用的测试,从而大大地节省时间和资源,充分利用你的测试投资。
每次记录测试时,WinRunner会自动创建一个GUI Map文件以保存应用对象。这些对象分层次组织,既可以总览所有的对象,也可以查询某个对象的详细信息。一般而言,对应用程序的任何改动都会影响到成百上千个测试。通过修改一个GUI
Map文件而非无数个测试,WinRunner可以方便地实现测试重用。
帮助你的应用程序为无线应用作准备
随着无线设备种类和数量的增加,你的应用程序测试计划需要同时满足传统的基于浏览器的用户和无线浏览设备,如移动电话、传呼机和个人数字助理(PDA)。无线应用协议是一种公开的、全球性的网络协议,用来支持标准数据格式化和无线设备信号的传输。使用WinRunner,测试人员可以利用微型浏览模拟器来记录业务流程操作,然后回放和检查这些业务流程功能的正确性。
5.
两款软件的对比
特性
WinRunner
TestComplete
易于安装
是
是
GUI对象和脚本分离
是
是
toolbar/field定制
可以
可以
支持测试对象
HTML,DHTML,JavaScript,VBScript,XML,JAVA
applets, ActiveX,VB, PowerBuilder,Delphi,Terminal
Emulator,,Oracle,SAP,PeopleSoft, Siebel
Visual Basic, Visual C++, Delphi,
C++Builder, Java, VisualStudio .NET, and Visual FoxPro
脚本语言
TSL
VBScript, DelphiScript, JScript,
C++Script or C#Script
允许通过数据库验证数据
通过ODBC及本地数据库连接
文件比较
应用程序改变后的脚本维护
直接修改GUImap
更改脚本
数据库支持
市场流行的数据库
市场流行的数据库
无人看管下的自动执行测试
通过Testdirector
允许
分布式测试控制/同步/执行
Testdirector支持
支持
自动创建测试结果日志
是
是
非预期错误的恢复
允许
允许
与测试管理工具接口
Testdirector
自带Case管理功能。
价格
昂贵
$399
Add-in收费
部分收费
不收费
总论
在全球的市场占有率较高,功能全面,价格昂贵
在国内的推广还处于起步阶段,相关资料和经验很少。