| 操作系统 办公 实用知识 设计 开发 WEB开发 移动开发 数据库 软件工程 网管 安全 管理 信息化 答疑 渠道 |
自动化测试软件的体验与比较<!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportLists]--> 1. <!--[endif]--> 研究主要内容 <!--[if !supportLists]--> (1) <!--[endif]--> 自动化测试 <!--[if !supportLists]--> (2) <!--[endif]--> TestComplete 介绍 <!--[if !supportLists]--> (3) <!--[endif]--> Winrunner 介绍 <!--[if !supportLists]--> (4) <!--[endif]--> 两款软件的对比 <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportLists]--> 2. <!--[endif]--> 自动化测试 由于很多的软件测试工作包括大量的近似重复的工作,会给测试工程师带来很大的工作量,这样我们就需要用自动化测试的软件来实现测试的自动化,来减少测试人员的工作量,从而提高效率。 因为软件测试的工作量很大( 40% 到60% 的总开发时间),而又有很大部分适于自动化,因此,测试的改进会对整个开发工作的质量、成本和周期带来非常显著的效果。 自动化测试的有点有很多: 快速 (Fast) 、可靠 (Reliable) 、可重复 (Repeatable) 、可程序化 (Programmable) 、 可重用的 (Reusable); 广泛的 (Comprehensive) ;它的这些有点使得自动化测试在软件测试中的地位不断提高,而且也是发展的趋势。 自动化测试的步骤大概是: <!--[if !supportLists]--> 1. <!--[endif]--> 测试个案( test case ,或称为测试用例)的生成; <!--[if !supportLists]--> 2. <!--[endif]--> 测试的执行写控制; <!--[if !supportLists]--> 3. <!--[endif]--> 测试结果与标准输出的对比; <!--[if !supportLists]--> 4. <!--[endif]--> 不吻合的测试结果的分析、分类、记录和通报; <!--[if !supportLists]--> 5. <!--[endif]--> 总测试状况的统计,报表的产生 <!--[if !supportLists]--> 6. <!--[endif]--> 自动测试与开发中产品每日构建( build )的配合。 <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportLists]--> 3. <!--[endif]--> TestComplete 介绍 本文现在介绍的 TestComplete 是近年来异军突起的新兴的软件;它曾 在 2003 年 Delphi Informant 杂志读者选择奖 中获得最佳测试与 QA 工具优势明显。其产品 TestComplete 获得 60% 的选票;在第 14 届 Jolt 大奖评选中获得测试工具的 Jolt 大奖。我在实习中也是比较多的接触到这款软件 <!--[if !supportEmptyParas]--> <!--[endif]--> 与它的名字相同, TestComplete 是一个完整的测试应用系统,它集成了如下的功能 : <!--[if !supportLists]--> l <!--[endif]--> 功能测试 <!--[if !supportLists]--> l <!--[endif]--> 单元测试 <!--[if !supportLists]--> l <!--[endif]--> 分布式测试 <!--[if !supportLists]--> l <!--[endif]--> HTTP performance testing <!--[if !supportEmptyParas]--> <!--[endif]--> l 回归测试:就是指重复一个已经成功执行的测试用例,并把新执行得到的结果与原来的 正确的结果相比较。回归测试很容易理解但是如果没有自动化的测试工具来保证大多数的细节,那么实现起来将是十分困难的。因为工作量很大,而且人工操作很容易忽略细节。而 TestComplete 就为我们提供了自动化回归测试的能力。 <!--[if !supportEmptyParas]--> <!--[endif]--> 接下来我想介绍一下这款软件的特点: <!--[if !supportLists]--> 1. <!--[endif]--> 获取和保存被测对象的属性: <!--[if !supportLists]--> l <!--[endif]--> TestComplete可以获取被测软件的对象属性并可以将其属性值记录下来和下一次运行时的相应属性值作比较。 <!--[if !supportLists]--> l <!--[endif]--> 需要注意的问题是:我们的 Java程序必须要编译成Open Application否则TestComplete无法自动认出其中的大部分对象。 <!--[if !supportLists]--> l <!--[endif]--> 脚本代码如下: <!--[if !supportLists]--> l <!--[endif]--> // Compares property values if (! Objects.Compare(w, CollectionName)) Log.Message("Properties have been changed.") <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportLists]--> 2. <!--[endif]--> 抓取软件运行时的图片 可以用 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") <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportLists]--> 3. <!--[endif]--> 比较文件 在测试时,我们有可能会用到比较两个文件的功能来保证被测试的软件的输出与预期值相同。这个功能将会对两个文件逐字节的比较 比较文件的代码如下 : if (! Files.Compare("C:\\Work\\OrdersList.txt","C:\\Work\\OrdersList_old.txt") Log.Warning("List of orders was changed"); <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportLists]--> 4. <!--[endif]--> 支持多种语言和开发环境 <!--[if !supportEmptyParas]--> <!--[endif]--> TestComplete支持所用 Visual Basic, Visual C++, Delphi, C++Builder, Java, Visual Studio .NET, and Visual FoxPro 开发的应用程序和模块。这所有的自动测试软件中时绝无仅有的。 <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> 5. 支持多种脚本语言 <!--[if !supportEmptyParas]--> <!--[endif]--> 我们不必为了使用 TestComplete 而去学习其他的脚本语言,而是用我们熟悉的脚本语言即可。因为 TestComplete 支持以下的所有脚本语言: VBScript , DelphiScript , JScript , C++Script or C#Script 。 <!--[if !supportEmptyParas]--> <!--[endif]--> 6.事件处理( Event handling ) TestComplete 可以在脚本运行的时候跟踪系统所发生的事件,并根据测试人员预先编好的事件处理程序对相应的事件进行处理。例如,对系统中的一些意外的窗体的弹出,我们可以编写相应的程序对其进行处理,以避免测试的意外中断。 <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportLists]--> 4. <!--[endif]--> Winrunner 介绍 Winrunner 7.6 的特点主要有如下几个方面: <!--[if !supportLists]--> l <!--[endif]--> 用 WinRuuner创建一个测试,只需点击鼠标和键盘,完成一个标准的业务操作流程,WinRunner自动记录你的操作并生成所需的脚本代码。这样,即使计算机技术知识有限的业务用户轻松创建完整的测试。你还可以直接修改测试脚本以满足各种复杂测试的需求。 <!--[if !supportLists]--> l <!--[endif]--> 但是 WinRuuner对Java的支持不是很好,无法识别出绝大部分的对象 <!--[if !supportLists]--> l <!--[endif]--> 已经在网上看到 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会自动创建一个GUI Map文件以保存应用对象。这些对象分层次组织,既可以总览所有的对象,也可以查询某个对象的详细信息。一般而言,对应用程序的任何改动都会影响到成百上千个测试。通过修改一个GUI Map文件而非无数个测试,WinRunner可以方便地实现测试重用。 帮助你的应用程序为无线应用作准备 随着无线设备种类和数量的增加,你的应用程序测试计划需要同时满足传统的基于浏览器的用户和无线浏览设备,如移动电话、传呼机和个人数字助理(PDA)。无线应用协议是一种公开的、全球性的网络协议,用来支持标准数据格式化和无线设备信号的传输。使用WinRunner,测试人员可以利用微型浏览模拟器来记录业务流程操作,然后回放和检查这些业务流程功能的正确性。 <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportLists]--> 5. <!--[endif]--> 两款软件的对比 特性 WinRunner TestComplete <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]-->
今日推荐
|
重点推荐
领军企业技术文库
+更多领军技术文库
最新专题
电子杂志订阅
| ||||||||