如何编写自动化测试脚本编写本

如何编写测试用例
每天15篇文章
不仅获得谋生技能
更可以追随信仰
如何编写测试用例
测试工作也从简单测试演变为包括:编制测试计划、编写测试用例、准备测试数据、编写测试脚本、实施测试、测试评估等多项内容的正规测试。测试方式则由单纯手工测试发展为手工、自动兼之,并有向第三方专业测试公司发展的趋势。
一、测试用例是软件测试的核心
软件测试的重要性是毋庸置疑的。但如何以最少的人力、资源投入,在最短的时间内完成测试,发现软件系统的缺陷,保证软件的优良品质,则是软件公司探索和追求的目标。每个软件产品或软件开发项目都需要有一套优秀的测试方案和测试方法。
影响软件测试的因素很多,例如软件本身的复杂程度、开发人员(包括分析、设计、编程和测试的人员)的素质、测试方法和技术的运用等等。因为有些因素是客观存在的,无法避免。有些因素则是波动的、不稳定的,例如开发队伍是流动的,有经验的走了,新人不断补充进来;一个具体的人工作也受情绪等影响,等等。如何保障软件测试质量的稳定?有了测试用例,无论是谁来测试,参照测试用例实施,都能保障测试的质量。可以把人为因素的影响减少到最小。即便最初的测试用例考虑不周全,随着测试的进行和软件版本更新,也将日趋完善。
因此测试用例的设计和编制是软件测试活动中最重要的。测试用例是测试工作的指导,是软件测试的必须遵守的准则。更是软件测试质量稳定的根本保障。
二、什么叫测试用例
测试用例(Test Case)目前没有经典的定义。比较通常的说法是:指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。
不同类别的软件,测试用例是不同的。不同于诸如系统、工具、控制、游戏软件,管理软件的用户需求更加不统一,变化更大、更快。笔者主要从事企业管理软件的测试。因此我们的做法是把测试数据和测试脚本从测试用例中划分出来。测试用例更趋于是针对软件产品的功能、业务规则和业务处理所设计的测试方案。对软件的每个特定功能或运行操作路径的测试构成了一个个测试用例。
三、编制测试用例
着重介绍一些编制测试用例的具体做法。
1、测试用例文档
编写测试用例文档应有文档模板,须符合内部的规范要求。测试用例文档将受制于测试用例管理软件的约束。
软件产品或软件开发项目的测试用例一般以该产品的软件模块或子系统为单位,形成一个测试用例文档,但并不是绝对的。
测试用例文档由简介和测试用例两部分组成。简介部分编制了测试目的、测试范围、定义术语、参考文档、概述等。测试用例部分逐一列示各测试用例。每个具体测试用例都将包括下列详细信息:用例编号、用例名称、测试等级、入口准则、验证步骤、期望结果(含判断标准)、出口准则、注释等。以上内容涵盖了测试用例的基本元素:测试索引,测试环境,测试输入,测试操作,预期结果,评价标准。
2、测试用例的设置
我们早期的测试用例是按功能设置用例。后来引进了路径分析法,按路径设置用例。目前演变为按功能、路径混合模式设置用例。
按功能测试是最简捷的,按用例规约遍历测试每一功能。
对于复杂操作的程序模块,其各功能的实施是相互影响、紧密相关、环环相扣的,可以演变出数量繁多的变化。没有严密的逻辑分析,产生遗漏是在所难免。路径分析是一个很好的方法,其最大的优点是在于可以避免漏测试。
但路径分析法也有局限性。在一个非常简单字典维护模块就存在十余条路径。一个复杂的模块会有几十到上百条路径是不足为奇的。笔者以为这是路径分析比较合适的使用规模。若一个子系统有十余个或更多的模块,这些模块相互有关联。再采用路径分析法,其路径数量成几何级增长,达5位数或更多,就无法使用了。那么子系统模块间的测试路径或测试用例还是要靠传统方法来解决。这是按功能、路径混合模式设置用例的由来。
3、设计测试用例
测试用例可以分为基本事件、备选事件和异常事件。设计基本事件的用例,应该参照用例规约(或设计规格说明书),根据关联的功能、操作按路径分析法设计测试用例。而对孤立的功能则直接按功能设计测试用例。基本事件的测试用例应包含所有需要实现的需求功能,覆盖率达100%。
设计备选事件和异常事件的用例,则要复杂和困难得多。例如,字典的代码是唯一的,不允许重复。测试需要验证:字典新增程序中已存在有关字典代码的约束,若出现代码重复必须报错,并且报错文字正确。往往在设计编码阶段形成的文档对备选事件和异常事件分析描述不够详尽。而测试本身则要求验证全部非基本事件,并同时尽量发现其中的软件缺陷。
可以采用软件测试常用的基本方法:等价类划分法、边界值分析法、错误推测法、因果图法、逻辑覆盖法等设计测试用例。视软件的不同性质采用不同的方法。如何灵活运用各种基本方法来设计完整的测试用例,并最终实现暴露隐藏的缺陷,全凭测试设计人员的丰富经验和精心设计
四、测试用例在软件测试中的作用
1、指导测试的实施
测试用例主要适用于集成测试、系统测试和回归测试。在实施测试时测试用例作为测试的标准,测试人员一定要按照测试用例严格按用例项目和测试步骤逐一实施测试。并对测试情况记录在测试用例管理软件中,以便自动生成测试结果文档。
根据测试用例的测试等级,集成测试应测试那些用例,系统测试和回归测试又该测试那些用例,在设计测试用例时都已作明确规定,实施测试时测试人员不能随意作变动。
2、规划测试数据的准备
在我们的实践中测试数据是与测试用例分离的。按照测试用例配套准备一组或若干组测试原始数据,以及标准测试结果。尤其象测试报表之类数据集的正确性,按照测试用例规划准备测试数据是十分必须的。
除正常数据之外,还必须根据测试用例设计大量边缘数据和错误数据。
3、编写测试脚本的&设计规格说明书&
为提高测试效率,软件测试已大力发展自动测试。自动测试的中心任务是编写测试脚本。如果说软件工程中软件编程必须有设计规格说明书,那么测试脚本的设计规格说明书就是测试用例。
4、评估测试结果的度量基准
完成测试实施后需要对测试结果进行评估,并且编制测试报告。判断软件测试是否完成、衡量测试质量需要一些量化的结果。例:测试覆盖率是多少、测试合格率是多少、重要测试合格率是多少,等等。以前统计基准是软件模块或功能点,显得过于粗糙。采用测试用例作度量基准更加准确、有效。
5、分析缺陷的标准
通过收集缺陷,对比测试用例和缺陷数据库,分析确证是漏测还是缺陷复现。漏测反映了测试用例的不完善,应立即补充相应测试用例,最终达到逐步完善软件质量。而已有相应测试用例,则反映实施测试或变更处理存在问题
五、相关问题
1、测试用例的评审
测试用例是软件测试的准则,但它并不是一经编制完成就成为准则。测试用例在设计编制过程中要组织同级互查。完成编制后应组织专家评审,需获得通过才可以使用。评审委员会可由项目负责人、测试、编程、分析设计等有关人员组成,也可邀请客户代表参加。
2、测试用例的修改更新
测试用例在形成文档后也还需要不断完善。主要来自三方面的缘故:第一、在测试过程中发现设计测试用例时考虑不周,需要完善;第二、在软件交付使用后反馈的软件缺陷,而缺陷又是因测试用例存在漏洞造成;第三、软件自身的新增功能以及软件版本的更新,测试用例也必须配套修改更新。
一般小的修改完善可在原测试用例文档上修改,但文档要有更改记录。软件的版本升级更新,测试用例一般也应随之编制升级更新版本。
3、测试用例的管理软件
运用测试用例还需配备测试用例管理软件。它的主要功能有三个:第一、能将测试用例文档的关键内容,如编号、名称等等自动导入管理数据库,形成与测试用例文档完全对应的记录;第二、可供测试实施时及时输入测试情况;第三、最终实现自动生成测试结果文档,包含各测试度量值,测试覆盖表和测试通过或不通过的测试用例清单列表。
有了管理软件,测试人员无论是编写每日的测试工作日志、还是出软件测试报告,都会变得轻而易举
测试用例编写规范
一、测试用例编写准备
从配置管理员处申请软件配置:《需求规格说明书》和《设计说明书》;根据需求规格说明书和设计说明书,详细理解用户的真正需求,并且对软件所实现的功能已经准确理解,然后着手制订测试用例
二、测试用例制定的原则
测试用例要包括欲测试的功能、应输入的数据和预期的输出结果。测试数据应该选用少量、高效的测试数据进行尽可能完备的测试;基本目标是:设计一组发现某个错误或某类错误的测试数据,测试用例应覆盖方面:
1、 正确性测试:输入用户实际数据以验证系统是满足需求规格说明书的要求;测试用
例中的测试点应首先保证要至少覆盖需求规格说明书中的各项功能,并且正常。
2、 容错性(健壮性)测试:程序能够接收正确数据输入并且产生正确(预期)的输出,
输入非法数据(非法类型、不符合要求的数据、溢出数据等),程序应能给出提示 并进行相应处理。把自己想象成一名对产品操作一点也不懂的客户,在进行任意操作。
3、 完整(安全)性测试:对未经授权的人使用软件系统或数据的企图,系统能够控制的程度,程序的数据处理能够保持外部信息(数据库或文件)的完整。
4、 接口间测试:测试各个模块相互间的协调和通信情况,数据输入输出的一致性和正确性。
5、 数据库测试:依据数据库设计规范对软件系统的数据库结构、数据表及其之间的数据调用关系进行测试。
6、 边界值分析法:确定边界情况(刚好等于、稍小于和稍大于和刚刚大于等价类边界值),针对我们的系统在测试过程中主要输入一些合法数据/非法数据,主要在边界值附近选取。
7、 压力测试:输入10条记录运行各个功能,输入30条记录运行,输入50条记录运行。。。进行测试。
8、等价划分:将所有可能的输入数据(有效的和无效的)划分成若干个等价类。
9、错误推测:主要是根据测试经验和直觉,参照以往的软件系统出现错误之处。
10、效率:完成预定的功能,系统的运行时间(主要是针对数据库而言)。
11、可理解(操作)性:理解和使用该系统的难易程度(界面友好性)。
12、可移植性:在不同操作系统及硬件配置情况下的运行性。
13、回归测试:按照测试用例将所有的测试点测试完毕,测试中发现的问题开发人员
已经解决,进行下一轮的测试。
14、比较测试:将已经发版的类似产品或原有的老产品与测试的产品同时运行比较,或与已往的测试结果比较
说明:针对不同的测试类型和测试阶段,测试用例编写的侧重点有所不同。
1、 其中第1、2、6、8、9、13项为模块(组件、控件)测试、组合(集成)测试、系统测试都涉及并重点测试的方面。
2、 单元(模块)测试(组件、控件)测试:重点测试第5项。
3、 组合(集成)测试:重点进行接口间数据输入及逻辑的测试,即第4项。
4、 系统测试:重点测试第3、7、10、11、12、14项。
5、 其中压力测试和可移植性测试如果是公司的系列产品,可以选用其中有代表性的产品进行一次代表性测试即可。
6、 GMPS基础测试用例设计完成后,其他的测试项目只编写设计与之不同部分的测试用例。
7、 对于每个测试项目测试的测试用例不是一成不变的,随着测试经验的积累或在测试其他项目发现有测试不充分的测试点时,可以不断的补充完善测试项目的测试用例。
三、测试用例的填写
一个软件系统或项目共用一套完整的测试用例,整个系统测试过程测试完毕,将实际测试结果填写到测试用例中,操作步骤应尽可能的详细,测试结论是指最终的测试结果(结论为:通过或不通过)。
更多课程...&&&
更多咨询...&&&
希望我们的资料可以帮助你学习,也欢迎投稿&提建议给我
频道编辑:winner
邮&&&&&&&件:winner@
&&京ICP备号&&京公海网安备号IBM BluemixDevelop in the cloud at the click of a button!
developerWorks 社区
本文介绍一种新的方法,将 RFT 录制的 Java 脚本转换成可读性好的测试用例,并能够将测试用例导出成 HTML 文件。该方法首先通过调用 RFT 的 CMD
命令行接口实现测试脚本的录制,生成 Java 脚本;然后,解析 Java 脚本中的关键字、对象、操作等信息,将 Java 脚本转化成可视化的表格;最后,将可视化的表格经过处理转化成 HTML 文件保存。相信通过该方法可以有地提高测试人员的测试效率,减少测试人员的工作量,在实践中这种自动化方法也有着较好的应用效果。
, 软件工程师, IBM
宋强,软件工程师。2010 年加入 IBM 中国开发中心,现于 Globalization 部门从事软件测试自动化测试研发工作。有一年的自动化测试经验,使用过 IBM Rational Functional Tester、 Selenium、Watij 等软件测试工具,以及基于模型的自动化测试环境。您可以通过 developerWorks 社区与 进行交流。
马俊是 IBM China Development Lab 的一名软件自动化工具开发实习工程师, 精通 Java 开发以及 Web 应用开发。
概述随着现代信息技术的飞速发展,软件业竞争日趋激烈,软件系统日益复杂,对于软件功能、性能的要求不断提高,同时软件推出新版本的时间不断缩短。在这种情况下如何保证软件质量成为目前企业关注的重点。仅仅依靠以密集劳动为特征的传统手工测试,己经不能满足快节奏软件开发和测试的需求。自动化为测试为此提供了成功解决方案。自动化测试是测试体系中新发展起来的一个分支,实施正确合理的自动化测试能够分担手工测试特别是回归测试的工作量,降低性能测试的难度,从而在保证软件质量的前提下,缩短测试周期,降低软件成本。作为软件测试的一个重要分支,软件自动化测试正以其自动化程度高、实用性强、测试效率高等不可取代的优点,引起了测试技术人员的广泛关注,成为软件测试的方向。RFT(Rational Functional Tester)是一款自动化测试工具,能够录制测试脚本,实现测试用例的录制以及回放。但是,RFT 软件较为庞大,测试人员每次进行测试都需要打开 RFT 进行录制;更重要的是,RFT 录制所生成的脚本为 Java 文件,其可读性较差。针对以上使用 RFT 的不足,基于此本文提出了一种实现方法,将 RFT 录制的 Java 脚本转换成可读性好的测试用例的方法,并能够将测试用例导出成 HTML 文件。通过本文,读者可以深入了解 RFT 以及其如何使用它在录制脚本的过程中自动生成测试用例,提高测试效率。读者可以借鉴以解决实际项目中的诸多问题。整体框架及相关讨论RFT 的简介RFT 全称是 Rational Functional Tester,是 IBM 公司出品的一个产品。RFT 提供了自动化测试 Java 程序、Web 应用、Eclipse 以及终端应用的解决方案。它支持 Windows 以及 Linux 平台。同时,IBM Rational Functional Tester (RFT) 是一款先进的,具有自动化测试的功能的回归测试工具,它适合测试人员和 GUI 开发人员。RFT 的基础是针对 Java、.Net 的对象技术和基于 Web 应用程序的录制、回放功能。工具为测试者的活动提供了自动化的帮助。它既包括了简单的适合一般测试人员的 Record 和 Replay 模式,又包括了适合自动化开发人员的脚本语言模式,实现了各种高级定制功能。同时,它为 Java 和 Web 测试人员提供了和开发人员同样的操作平台(Eclipse),并通过提供与 IBM Rational 整个测试生命周期软件的完美集成,真正实现了一个平台统一整个软件开发团队的能力,同时也方便了与其他测试工具集成,使之能够完成更加强大的测试功能。录制回放脚本的弊端由于本文提出了一种可将录制的脚本自动生成测试用例的方法,故本文仅仅针对录制回放脚本可读性的弊端做出阐述。自动化测试录制的脚本对测试内容和测试目的没有明确的说明。测试人员不得不在录制完脚本后增加一些注释或录制完后编辑这些脚本。如果没有去添加这些注释信息,后期的任何维护任务都会变得十分困难。造成录制的脚本可读性很差。此外,录制回放只是自动化测试工具的一个功能,能够记录下用户与应用程序之间的交互,通过录制回放直接创建的脚本尤其自身的局限性。故我们将提出一种方法来解决如何将不易读的录制脚本转换为真实的测试用例。整体结构该方法较为便捷地实现了测试脚本的录制、解析和导出,将复杂的测试用例用较为简明的方式展现出来,方便了用户记录和对测试用例进行分析,判断。该方法的整体框架图 1 所示:图 1.
整体框架图用户通过 RFT 提供的控制台命令接口调用 RFT 的脚本录制功能,待脚本录制完成后,RFT 将录制完成的脚本以 Java 文件的形式输出。程序通过解析 Java 脚本文件中的对象、操作等信息生成表格。该表格以较为清晰、友好的形式向用户展示测试用例的具体信息。用户可通过导出功能将该测试用例导出为 HTML 格式保存。RFT 相关配置该方法主要依赖于 RFT 提供的功能,该方法的实现需要安装和配置 RFT。安装过程可参考 RFT 的相关文档,这里就不再赘述。本文提到的工具,适用于 RFT7.0 以上的版本,由于 RFT 中自带 Java IDE,故该工具无需安装任何附加的工具及插件。以下本文将描述具体的配置过程,以方便读者的使用与开发。在 RFT 安装完成后,打开 RFT,点击工具栏中的窗口按钮,如图 2 所示。图 2.
工具栏窗口按钮选择首选项,将出现图 3 所示界面。图 3. 首选项点击 Functional Test 展开该项信息,然后点击“简化的脚本编制”,并将“启用简化的脚本编制”前的选项去掉,点击确定。具体如图 4 内容所示。此处的目的是不是其在录制结束后生成简化的脚本编制。图 4.
简化的脚本编制此外,也可通过程序修改配置文件的方法实现 RFT 该功能选项的配置,该配置文件所在位置为:用户当前目录/AppData/Roaming/IBM/RFT/options.rftdval。打开该文件后,找到图 5 中的配置信息,将 Z 的值修改为 false 即可,也可达到相同的目的,不启用简化的脚本编制。图 5.
配置文件信息修改后:&Name&rt.visual_script_enable&/Name&&Default Z=”false”/&整体流程介绍图 6.
整体流程图 6 为测试用例从生成、解析、呈现到保存的总体流程图。首先,通过 RFT 提供的 CMD 的命令行调用 RFT 脚本的录制功能,并对命令参数、录制文件名等信息进行合法性验证。若验证未通过,则提示错误信息并返回上一步,否则进入下一步进行脚本录制。脚本录制完成后可生成 Java 文件,通过对 Java 文件的解析生成易读性较好的表格,呈现给用户进行阅读,修改,查阅等工作。最后,用户可通过导出功能将测试用例导出为 HTML 表格。具体的应用及实例录制脚本由于 RFT 提供的录制脚本功能只能在控制台进行调用,为了方便处理,我们编写了一个批处理文件 Record.bat,用于在控制台中调用相关的 API,实现录制脚本的功能,其核心代码如清单 1 所示。清单 1. Record.bat 核心代码echo off
SET GVTAPATH=%~dp0%
SET GVTCP="%IBM_RATIONAL_RFT_INSTALL_DIR%\rational_ft.jar"
SET GVTCP=%GVTCP%;"%GVTAPATH%class\*"
//记录新脚本
"%IBM_RATIONAL_RFT_INSTALL_DIR%\..\..\jdk\jre\bin\Java.exe" \
-classpath %GVTCP% com.rational.test.ft.rational_ft
\ -datastore "%GVTAPATH%." -record %1
-rt.bring_up_logviewer false
Pause而后,在控制台中运行该批处理文件即可,其中需要传入一个参数 filename,表示要新录制生成的脚本文件名字,如清单 2 所示。清单 2. 在控制台运行 Record.bat//路径包括批处理文件名和要传入的参数(脚本文件名)
String batPath = "Record.bat "+
//执行指定路径的批处理文件
Process process = Runtime.getRuntime().exec(batPath);
//等待命令执行结束
process.waitFor();最后,我们便可以开始录制一个完整的脚本了,例如,打开 IE 浏览器,在地址栏输入, 然后在百度主页的搜索框中输入“IBM”,点击回车,在出现的搜索结果中点击 IBM 的官方主页,再关闭 IE 浏览器,至此,录制过程完成。解析脚本在控制台调用 RFT 的录制功能 API,录制完一套脚本,会新生成一个 Java 的脚本文件,如下所示。public class Test extends TestHelper{
public void testMain(Object[] args) {
startApp("iexplore");
// HTML Browser
browser_htmlBrowser(document_百度一下你就知道(),DEFAULT_FLAGS).click(atPoint(245,46));
browser_htmlBrowser(document_百度一下你就知道(),DEFAULT_FLAGS).inputKeys("{ENTER}");
// Document: 百度一下,你就知道: /
text_wd().click(atPoint(15,14));
browser_htmlBrowser(document_百度一下你就知道(),DEFAULT_FLAGS).inputChars("ibm");
button_百度一下 submit().click();
// Document: ibm_百度搜索:
///s?wd=ibm&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&\
//tn=baiduhome_pg&rsv_sug3=3&rsv_sug=0&rsv_sug1=3&rsv_sug4=364&inputT=29343
link_ibM 中国官方网站().click();
browser_htmlBrowser(document_ibM 中国(),DEFAULT_FLAGS).click(atPoint(772,9));
}从上面的代码可以看到,由于生成的 Java 脚本内容较为复杂,可读性较差,不利于测试人员查看,因此我们需要对脚本内容进行解析,生成测试用例并以表格的形式简介明了地显示出来,方便测试人员进行阅读、跟踪和反馈。这里,本文的方法是对脚本的有效内容一行一行地进行解析,提取出其中的关键字,包括 Step(步骤)、Object(对象)、Operation(操作)、Value(值)、Comment(说明),组成一个测试用例。例如:browser_HTMLBrowser(document_百度一下你就知(),DEFAULT_FLAGS).inputChars("ibm");
//这一行经过解析后,会生成一个测试用例,该测试用例的内容如下:
Object: browser_HTMLBrowser(document_百度一下你就知道(),DEFAULT_FLAGS);
Operation: inputChars;
Value: ibm;
Comment: ;本部分的核心代码如清单 3 所示。清单 3. 解析 Java 脚本内容生成测试用例//读取指定路径的 java 脚本内容到文件流中
FileReader fr = new FileReader(filepath);
BufferedReader br = new BufferedReader(fr);
//用于保存测试用例各元素的字符串,包括步骤(step)、对象(object)、操作(operation)、
//值(value)、说明(comment)
String aLine, StepString,ObjectString, OperationString,ValueString,CommentString;
//找到脚本有效内容的入口 testMain
while (!(aLine = br.readLine()).contains("testMain")){
br.readLine();
//一行一行的读取脚本内容,直到脚本结束
while ((aLine = br.readLine()) != null) {
//解析每一行有效的脚本语句,有效的脚本语句行均以;结尾
if(aLine.trim().contains(";") ){
aLine = aLine.trim();
//初始化测试用例字串
StepString = Integer.toString(i);
ObjectString = "";
OperationString = "";
ValueString = "";
CommentString = "";
//对第一行特殊处理,一般来说第一行的内容不包括符号“。”
if(!aLine.contains(".")){
//提取出操作字段
OperationString = aLine.substring(0,aLine.indexOf("("));
//提取出对象字段
ObjectString = aLine.substring(aLine.indexOf("(")+2,aLine.lastIndexOf(")")-1);
//对其他行的处理
//提取出对象字段
ObjectString = aLine.substring(0,aLine.indexOf("."));
if(ObjectString.indexOf("(") ==
ObjectString.lastIndexOf(")")-1){
ObjectString = ObjectString.substring(0, ObjectString.indexOf("("));
//提取出操作字段
OperationString = aLine.substring(aLine.indexOf(".")+1,aLine.lastIndexOf(";"));
//对输入操作(input)的那一行内容进行特殊处理
if(OperationString.contains("input")){
//提取出值字段
ValueString = OperationString.substring(OperationString.indexOf("(")+2, \
OperationString.lastIndexOf(")")-1);
//修改操作字段
OperationString = OperationString.substring(0, OperationString.indexOf("("));
//对非输入操作的行的处理
//提取出说明字段
CommentString = OperationString.substring(OperationString.indexOf("(")+1, \
OperationString.lastIndexOf(")"));
//提取出操作字段
OperationString = OperationString.substring(0, OperationString.indexOf("("));
//根据提取出的各个字段生成一个测试用例,即脚本元素 ScriptElement
ScriptElement element = new ScriptElement(StepString,OperationString\
,ObjectString,ValueString,CommentString);
//将新生成的测试用例加入脚本元素集合 scriptelements 中
scriptelements.add(element);
//过滤掉脚本中的注释行
if(aLine.trim().contains("//")){
//关闭文件流
br.close();
fr.close();上文的我们录制的 Java 脚本经过本文提出的方法解析后,将生成的测试用例以表格的形式显示出来,如图 7 所示内容。图 7.
解析后生成的表格形式的测试用例导出测试用例为了便于今后测试人员查看、跟踪和反馈相关问题,我们还可以将解析生成的测试用例导出来,进行相应的保存。保存的格式为 HTML 文件,这样测试人员便可以便捷地直接在网页端查看测试用例。这一部分的核心代码如清单 4 所示。清单 4. 将测试用例导出为 HTML//该方法将脚本元素集合 scriptelements 中的脚本元素(即测试用例)导出为 html 格式的文件
private String convertListTOHTML(List&ScriptElement& scriptelements){
//html 头标签
String head= "&HTML&&head&&/head&&body&&table width='100%' border='1'&"+
"&colgroup span='3' align='left'&&/colgroup&"+
"&colgroup align='right'&&/colgroup&&tr&&th&step&/th&"+
"&th&operation&/th&&th&object&/th&&th&value&/th&&\
th&comment&/th&";
//html 尾标签
String tail="&/table&&/body&&/HTML&";
//该字符串对象用于拼接各个测试用例
StringBuilder result=new StringBuilder();
result.append(head);
//generate HTML content
StringBuilder sb=new StringBuilder();
//将脚本元素集合中的各个测试用例的内容提取出来并拼接到字符串中
//各个测试用例的内容包括步骤、操作、对象、值、说明等字段,可以通过脚本元素的 get 方法获取
for(ScriptElement se:scriptelements){
sb.append("&tr&&td&"+se.getStep()+"&/td&"
+"&td&"+se.getOperation()+"&/td&"
+"&td&"+se.getObject()+"&/td&"
+"&td&"+se.getValue()+"&/td&"
+"&td&"+se.getComment()+"&/td&"
+"&/tr&");
//返回最终拼接的字串结果
return result.append(sb.toString()).append(tail).toString();
}回放脚本与 RFT 的录制功能对应的是回放功能,同样的,我们也可以在控制台调用 RFT 的 API 来实现对先前录制的脚本的过程回放,这样使得测试人员能够重现测试过程,查找问题。与录制过程类似,本文编写了一个批处理文件 Replay.bat,用来调用 RFT 的回放功能 API,其核心代码如清单 5 所示。清单 5. Replay.bat 核心代码echo off
SET GVTAPATH=%~dp0%
SET GVTCP="%IBM_RATIONAL_RFT_INSTALL_DIR%\rational_ft.jar"
SET GVTCP=%GVTCP%;"%GVTAPATH%class\*"
//编译 java 脚本生成 class 文件,其中接受一个参数,表示脚本名字
"%IBM_RATIONAL_RFT_INSTALL_DIR%\..\..\jdk\jre\bin\Java.exe" -classpath %GVTCP%
com.rational.test.ft.rational_ft\
-datastore "%GVTAPATH%." -compile %1
//回放脚本
"%IBM_RATIONAL_RFT_INSTALL_DIR%\..\..\jdk\jre\bin\Java.exe" -classpath %GVTCP%
com.rational.test.ft.rational_ft \ -playback "%GVTAPATH%." -rt.bring_up_logviewer false
Pause而后,在控制台中运行该批处理文件即可,其中需要传入一个参数 filename,表示需要回放的脚本文件的名字,如清单 6 所示。清单 6. 在控制台运行 Replay.bat//路径包括批处理文件名和要传入的参数(脚本文件名)
String batPath = "Replay.bat "+
//执行指定路径的批处理文件
Process process = Runtime.getRuntime().exec(batPath);
//等待命令执行结束这样,我们便可以观看到该脚本先前的整个录制过程的回放了。应用实例下面本文将通过一个完整的实例,来展示如何基于 RFT 的功能来进行脚本录制、将脚本转换为真实测试用例的。为了清晰地展示本文的方法,我们选取的录制过程大致如下:先打开 IE
浏览器,在浏览器地址栏输入 ,在出现的百度主页的搜索框中输入“ibm”,点击回车,在出现的搜索结果中点击 IBM 的官方主页链接,然后关闭 IE 浏览器。首先,我们打开已集成有相应功能的应用软件,点击“Start Record”,在弹出的输入框中输入要新录制的脚本名字,我们以“Test”为例,然后点击“确定”,如图 8 所示。图 8.
输入脚本名字当出现录制界面后,我们便可以开始录制脚本了,录制界面如图 9 所示。图 9. 录制界面点击录制界面的第三个图标,启动一个应用程序,这里我们选择启动 IE 浏览器(如果应用程序列表中没有 IE,可以先点击“编辑应用程序列表”,将 IE 浏览器的路径添加到应用程序列表中)。添加 IE 浏览器的过程如图 10 所示。图 10.
启动应用程序-IE 浏览器IE 浏览器启动后,我们在浏览器地址栏输入 ,在出现的百度主页的搜索框中输入“ibm”,点击回车。如图 11 所示内容。图 11.
录制过程-百度搜索 IBM在出现的搜索结果中点击 IBM 官方网站的链接,如图 12 所示。然后关闭 IE 浏览器。图 12.
录制过程-点击 IBM 官方网站最后,点击录制界面的第一个图标来停止录制,如图 13 所示。至此,整个录制过程结束。图 13.
录制界面-结束录制随后,在应用软件的根目录下生成了一个 Java 脚本文件 Test.Java,该文件记录了刚刚的整个录制过程,具体 Java 文件的内容如图 14 所示。图 14.
Test.Java 内容为了便于测试人员查看,我们需要将脚本转化为测试用例的形式,因此,我们点击应用软件的“Open Script”,选取刚刚生成的脚本 Test.Java 文件。如图 15 所示。图 15.
打开脚本随后,该脚本内容将被自动转化为测试用例,并以表格形式显示出来,如图 16 所示。图 16.
转化后的表格形式的测试用例如果我们需要回放该测试脚本的录制过程,只需点击测试用例界面的“Replay”,便可以重现该测试脚本的整个录制过程了,这将为测试人员进行过程审查带来极大的方便。为了便于今后测试人员检查以及在网页端查看,我们可能会需要将这些测试用例导出为 HTML 文件。点击测试用例界面的“Save”,输入“Test.HTML”,点击“保存”,便可以生成对应的 HTML 文件了。如图 17 所示。图 17.
将测试用例导出为 HTML永和可在网页端查看生成的 HTML 文件,结果如图 18 所示。图 18.
查看 HTML 格式的测试用例从以上的实例可以看出,通过调用 RFT 的录制及回放功能,极大地方便了测试人员记录和回放脚本,同时将脚本转化为可读性较强、较为友好的测试用例,也能让测试人员更加简单直观地查看测试脚本、审查测试过程以及及时向开发人员反馈问题。总结本文介绍一种新的方法,将 RFT 录制的 Java 脚本转换成可读性好的测试用例的方法,并能够将测试用例导出成 HTML 文件。该方法首先通过调用 RFT 的 CMD 命令行调用接口实现测试脚本的录制,生成 Java 脚本;然后,解析 Java 脚本中的关键字、对象、操作等信息,将 Java 脚本转化成可视化的表格;最后,将可视化的表格经过处理转化成 HTML 文件保存。此方法为自动化开发人员和测试人员的工具箱中又一个有用且重要的工具。相信通过该方法可以有地提高测试人员的测试效率,减少测试人员的工作量,在实践中这种自动化方法也有着较好的应用效果。
参考资料 : 本文提供了一种可以立即应用的批处理文件,软件测试人员可以使用它通过命令行来运行 Rational Functional Tester 的 Java 或者.NET 测试脚本。同时还提供了一些使用命令行创建和录制脚本的技巧提示。: 学习怎样从 Rational TestManager 7.0.2 运行自动化 Rational Functional Tester 8.2.0.1 脚本,并在 TestManager 日志之中查看结果,以及如何实现这两款工具的集成。访问 ,获得关于 IBM Rational 软件交付平台(Rational Software Delivery Platform)产品的技术资源和最佳实践。下载更多免费的 ,了解 IBM Rational 软件的最新特性。获取更多 ,并熟练掌握来自 DB2®、Lotus®、Tivoli®,以及 WebSphere® 的开发工具和中间件产品,用这些试用版软件开发您的下一个项目。这些试用版软件可以免费直接从 developerWorks 下载。加入 ,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
IBM PureSystems(TM) 系列解决方案是一个专家集成系统
通过学习路线图系统掌握软件开发技能
软件下载、试用版及云计算
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=RationalArticleID=962696ArticleTitle=基于 RFT 的录制功能将生成的脚本转换为测试用例的方法publish-date=

我要回帖

更多关于 如何编写游戏脚本 的文章

 

随机推荐