版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、IBM Rational Functional Te这是应用IBM Rational Functional Tester实现测试自动化框架的三部系列的第二篇文章,重点在于创建一个数据驱动的框架。本系列的其他文章涵盖了模块化和关键字驱动的框架。编者注:本文是基于使用IBM®;Rational®;Functional Tester for Java™;and Web 6.1和Windows XP Professional SP2编写的。代码实例将使用Java编写的,但所有概念同样也适用于Rational Functional Tester的.NET版本。这是应用IBM Rat
2、ional Functional Tester实现测试自动化框架的三部系列的第二篇文章。一个测试自动化框架是为软件自动化测试提供支持的一组假设、概念和实践。在本系列中所涵盖的三种框架类型包括模块化、数据驱动和关键字驱动。本文将特别侧重在创建一个数据驱动框架的方面。数据驱动测试是一项单个测试脚本使用不同的输入和响应数据被重复地执行的技术,这些数据来源于一个预定义的数据集。在Rational Functional Tester中,数据驱动测试可以通过不同的数据池来实现,数据池是相关数据记录的集合,用以在测试脚本回放时为测试脚本提供变量的值。当您使用数据池时,Rational Functional
3、Tester能在您每次回放脚本时将一组不同的测试数据或相同的测试数据提交到测试脚本。您使用数据池来提供真实的数据,并用不同的数据和实际的数据量来产生对应用程序压力。当您运行一个数据驱动脚本时,Rational Functional Tester将从数据池的当前行中输入每一个值(数据池中的一行看起来就象电子数据表中的一行)到应用程序的适当字段中。在每次执行脚本时,假定数据池光标在前面(数据池光标是对当前行的指针),下一个数据行将被输入。在这个系列的三种框架中,数据驱动是最容易在Rational Functional Tester中实现的。下一部分我们将着眼于Rational Functional
4、 Tester中的数据池,帮您了解一下这个工具的内置特性。之后,文章将对这种方法进行利弊讨论。在Rational Functional Tester中使用数据池进行工作在Rational Functional Tester中,一个数据池是相关数据记录的一个集合,用以在测试脚本回放时为测试脚本提供变量的值。当您在Rational Functional Tester里创建一个数据驱动测试时,您可以用不同的输入和响应数据来重复地使用单个测试脚本。下面介绍的是一些在Rational Functional Tester里有关数据池的术语,以及如何创建和使用一个数据池。Rational Functiona
5、l Tester通过引用数据驱动一个测试脚本来使用数据池。当您在文档中看到这个术语时,它提到了构建您的测试脚本中的对象和您数据池中的数据之间的连通性的过程。要数据驱动一个脚本,您需要在被测试应用程序中选择一个对象,然后Rational Functional Tester将应用程序里的数据填充到一个数据池。在Rational Functional Tester中使用数据池进行工作让我们使用Rational的测试应用程序ClassicsCD来记录一个简单的数据池。在Rational Functional Tester里开始记录一个新的测试脚本。在如图1所示的Select Script Assets
6、对话框中,您将在开始记录之前能够看到两个数据池选项:Test Datapool和Datapools Record Selection Order。图1.Select Script Assets对话框Test Datapool的默认值是Private Test Datapool。您创建的每一个测试脚本都有一个私有的测试数据池与其相关联-这是自动生成的。初始的私有测试数据池是一个占位符,并且直到您给它增加新数据前都是空的。您可以通过创建一个新数据池,或者通过将几个测试脚本关联到一个数据池来创建一个被称为共享数据池的数据池。Datapool Record Selection Order框的值是Seq
7、uential和Random。Sequential指在回放时,测试脚本访问数据池中的记录是按照它们出现在数据池中的顺序来进行。Random是指在回放时,测试脚本每次随机地访问数据池中的每条记录。这此例中,接受缺省设置并点击Finish。这样就应该打开了Recording Monitor窗口。启动ClassicsCD(ClassicsJavaA.java)样例应用程序,并导航到如图2所示的Member Login窗口。图2.ClassicsCD Member Login窗口在Recording工具栏上,点击Insert Data Driven Commands。测试脚本记录暂停下来,并且打开了如
8、图3所示的Insert Data Driven Actions对话框。在Insert Data Driven Actions对话框里有两个组合框:Populate then Select Test Objects和Data Driven Commands。图3.Insert Data Driven Actions对话框在Populate then Select Test Objects下,有两种方法:Press and drag hand to select test objects和Use selection wizard to select test objects。Press and d
9、rag hand to select test objects方法选择一个对象以及所选对象的所有下级对象。这是选择一个对象的最普通和直接的方法。Use selection wizard to select test objects方法被用来激活Drag Hand Selection方法及其选项,或Test Object Browser方法。使用鼠标将Object Finder工具拖拽到Member Login窗口中的Full Name字段。Rational Functional Tester用一个红色边框画出对象的轮廓。释放鼠标按钮。您现在应当在如图4所示的Insert Data Driven
10、 Actions对话框的Data Driven Commands区域中,看到所列出的测试对象。图4.带有测试对象的Insert Data Driven Actions对话框点击OK关闭Insert Data Driven Actions对话框。点击Member Login窗口上的Cancel。退出ClassicsCD应用程序。停止记录。用数据池进行工作如果您在刚刚记录的脚本里查看代码,您应当看到类似于列表1中的一行代码。列表1.在Rational Functional Tester中记录的数据池调用/Data Driven Code inserted on Sep 14,2005nameCom
11、bo().select(dpString(nameCombo);在这段代码中,您选择与命名为nameCombo的数据池列中的值相匹配的组合框值。如果您在Script Explorer中打开Private Test Datapool,您应当看到在第一行中所列出的您所记录的数据,如图5所示。图5.在Private Test Datapool中记录的数据在Rational Functional Tester中的一个数据池中,数据池列被称为变量,行被称为记录(不要问我为什么)。您只要在数据池表格(如图5所示)中右键点击,将显示一列数据池编辑命令,如图6所示。图6.在Rational Functiona
12、l Tester里编辑一个数据池所有这些命令正确地执行了您所期望它们做的;不要惊讶。唯一不值得的事情是,当您声明一个新的变量(或者列)时,需要为变量指定Type。当声明类型时,您将要输入类的完全路径。例如,使用java.lang.String,而不是简单地键入String。数据池文字替换Rational Functional Tester提供了一种能力,可以用一个数据池引用(一个数据池引用是对有一个关联数据池的另一种说法)来查找或替换一个测试脚本中的文字值。在工具栏或者脚本菜单中,您可以访问Datapool Literal Substitution对话框,如图7所示。图7.Datapool L
13、iteral Substitution对话框您可以在Datapool Literal Substitution对话框中设置选项,用一个数据池引用来查找和替换一个脚本中的所有的、数字、字符串或布尔型文字。您也可以从一个脚本中增加一个文字到一个数据池中。如果您不使用一个已有的数据池变量,Functional Test就在您每次运行脚本时,使用相同的文字值(Functional Test在您记录测试脚本时捕获的值)。数据池作为验证点您可以使用一个数据池引用来替代您正在验证点中测试的值的一个文字值。在记录时,如果您使用Verification Point and Action向导插入一个证实点,您可以
14、通过点击向导的工具栏中的Convert Value to Datapool Reference按钮,将验证点值转换为一个数据池引用。这个按钮用红色圆圈标记,如图8所示。图8.将验证点转换成数据池引用在您完成记录测试脚本之后,您也可以向数据池中添加数据。导入和导出数据如果您在IBM®;Rational®;TestManager中已经有数据池了,那就没问题了。您可以将它们导入到Rational Functional Tester中,同样您也可以使用电子数据表格应用程序创建的任何简单格式的已有.csv文件。反过来也一样。只要您将所有数据放入Rational Functional Test
15、er中,您就可以将数据池导入到一个.csv文件中,用一个电子数据表格应用程序来编辑它。在Rational Functional Tester的帮助文件中有如何进行这样做的指导。回页首一个用Rational Functional Tester进行数据驱动测试的简单例子好了,已经向您介绍了使用数据池的基础知识,现在您将看一个有关数据驱动测试更加详细的例子。这个例子将使用作为测试。Google Web搜索有一些您将要测试的内置特性。这些特性包括:计算器、货币兑换、电影、号码搜索,以及旅游信息(以命名包含在强大的小文本字段中的许多特性)。记录的脚本如列表2所示,启动浏览器访问G,然后
16、执行一系列搜索和验证点,以验证上述特性。列表2.记录和回放Google Web搜索脚本package tests;import resources.tests.google_search_recordHelper;import com.rational.test.ft.*;import erfaces.*;import com.rational.test.ft.script.*;import com.rational.test.ft.value.*;import com.rational.test.ft.vp.*;public cl
17、ass google_search_record extends google_search_recordHelperpublic void testMain(Object args)startApp();/Calculator text_q2().click(atPoint(191,10);browser_htmlBrowser(document_google2(),DEFAULT_FLAGS).inputKeys(5+5);button_googleSearchsubmit2().click();calculator_gridVP().performTest(2.0,20.0);image
18、_goToGoogleHome2().click();/Currency Conversion text_q2().click(atPoint(192,13);browser_htmlBrowser(document_google2(),DEFAULT_FLAGS).inputKeys(3.5 USD in GBP);button_googleSearchsubmit2().click();currency_conversion_gridVP().performTest(2.0,20.0);image_goToGoogleHome3().click();/Movies text_q2().cl
19、ick(atPoint(98,14);browser_htmlBrowser(document_google2(),DEFAULT_FLAGS).inputChars(charlie and the chocolate factory);button_googleSearchsubmit2().click();movies_gridVP().performTest(2.0,20.0);image_goToGoogleHome6().click();/Search by Number text_q2().click(atPoint(177,13);browser_htmlBrowser(docu
20、ment_google2(),DEFAULT_FLAGS).inputChars(patent 5123123);button_googleSearchsubmit2().click();search_by_number_gridVP().performTest(2.0,20.0);image_goToGoogleHome8().click();/Travel Information text_q2().click(atPoint(163,10);browser_htmlBrowser(document_google2(),DEFAULT_FLAGS).inputChars(United 13
21、4);button_googleSearchsubmit2().click();travel_info_gridVP().performTest(2.0,20.0);image_goToGoogleHome10().click();/Close the browser browser_htmlBrowser(document_google2(),MAY_EXIT).close();在图2所示的脚本中,测试的每个特性都记录了在搜寻文本字段中进行一下点击、输入搜索标准、点击搜索按钮、验证结果,并在结果页的左上角点击Google图象以为下个特性测试重新设置浏览器。在这里有许多重复的代码。列表3显示了
22、相同的测试脚本,只是脚本现在是数据驱动的。列表3.数据驱动的Google Web搜索脚本package tests;import resources.tests.google_datadrivenHelper;import com.rational.test.ft.*;import erfaces.*;import com.rational.test.ft.script.*;import com.rational.test.ft.value.*;import com.rational.test.ft.vp.*;public clas
23、s google_datadriven extends google_datadrivenHelperpublic void testMain(Object args)startApp();/Run test for each value in datapool for(int i=0;i 5;i+)/Search text_q().click(atPoint(71,11);browser_htmlBrowser(document_google(),DEFAULT_FLAGS).inputChars(dpString(searchCriteria);button_googleSearchsub
24、mit().click();/Results searchResults_textVP().performTest(2.0,20.0);image_goToGoogleHome().click();/Increment the datapool dpNext();/Exit browser_htmlBrowser(document_google2(),MAY_EXIT).close();通过使用一个for循环(您也可以使用一些其它类型的循环),并且通过增量的移动数据池里的光标,您可以避免多次重复相同的代码。您所做的全部就是在inputChars中为搜索字段增加一个数据池调用,并向您的验证点上增
25、加一个数据池引用。在您想要增加另一个测试时,只要向您的数据池中增加另一行,并在循环中增加计数器的值。在图9中显示的数据池显示了每个测试的搜索标准和搜索结果。图9.数据驱动脚本的数据池值当您比较Google记录的测试与Google数据驱动的测试时,您将看到的最大区别是事实上什么已经被测试了的可见性。在记录和回放脚本中,您必须滚动代码以发现搜索标准。在数据驱动的测试中,您需要做的所有事情就是查看数据池中的searchCriteria变量(列)。此外,在记录和回放脚本中,您需要分别查找和打开每个验证点以查找搜索结果。在数据驱动的测试中,所有您需要做的就是查看数据池中的searchResults变量。
26、忘记有更少的代码吧,了解数据驱动测试在测试什么将更容易。回页首选择使用的数据数据选择是沿着数据驱动测试之路的第一步。您需要选择驱动您的应用程序运行的数据,或者表示将输入到您的应用程序中的数据,或者两个都选。本节将迅速查看一下选择数据进行测试的5种不同方式:基于风险、基于需求、基于可用性、使用生产数据,或者随机使用产生的数据。选择基于风险的数据。选择测试数据的头号标准应当是风险。当您识别风险时,您要考虑到什么会导致出错。您正在寻找可能会发生的事件,这些事件将减少您能够交付带有正确特性、所要求的质量级别和在预算之内的项目的可能性。有三种划分风险种类的方法:按照风险的影响-如果风险突然出现,与计划在
27、进度、工作量或成本上的偏离按照风险发生的可能性-风险突然出现的可能性(通常用百分比表示)按照风险的暴露-影响乘以发生的可能性选择基于需求的数据。您也可以选择将使您明确地测试一个需求或一组需求的数据。查找将使您在您的应用程序中运行特性集、性能和安全特性的数据:如果您的应用程序有不同的任务,执行每个任务您将需要什么数据?您想要在您的测试覆盖中包括什么特性,以及您要使用它们要求什么数据?此外,考虑在被测试的元素上不同的目标部署环境将有什么冲突。您所选择的数据列表应当包括针对被测试应用和目标环境的数据。您需要测试什么数据:硬件设备设备驱动程序操作系统网络和通信软件第三方的基本软件组件(例如,e-mai
28、l软件,互联网浏览器)与所有这些元素的可能组合相关联的各种配置和设置国际化选择基于可用性的数据。您可能想要选择那些易于可用的数据,这可以包括:用一种易于访问的格式生产数据(在以后的章节里详细讨论)来自于过去迭代的数据您的项目的手工测试人员所使用的电子数据表格来自于您公司里的其他项目或团队的数据来自于一些数据产生源的数据(在最后的一章里讨论)。这里的想法是,如果数据是容易访问的,也是易用和有意义的,在您的测试中包括这些数据,可以节省时间和金钱。我强调易用性和有意义的,是因为您需要记住一件重要的事情,您不应该只是因为数据已经在那了并且是可以使用的就选择它-因为它可能是坏数据。使用生产数据。收集测试
29、数据的另一个策略是使用生产数据。尽管您不应当单独地依赖这种类型的数据,它可以是自动化测试场景的最丰富的来源,因为数据是应用程序将面临的真实场景的代表,并且因为它很可能将提供大量的不同场景。在一个最近的项目中,我们大约每周从一张表格中读取一次生产数据,并且我们在没有付出多少努力的情况下得到了300到500个场景的奖赏。您可以直接将数据导入测试环境里,将它读入到数据文件中用于后面的处理,或者实时地读取它,并按照您所的需要的他们进行转换。生产数据也是并行测试的一个极好来源。如果您在正在开发的系统中使用生产数据,您就会迅速地知道是否被开发的系统能够象在生产环境一样工作。这项技术特别有助于发现使用浮点值
30、、转换率,以及与数据类型相关长度的问题。但是,使用生产数据有一些需要小心的地方。生产数据很可能不包含您想要测试的许多特殊情况,并且这不是理想测试场景的一个替换。还有一些潜在的法律问题围绕着生产数据的使用。特别是如果您把一些您的测试外包给另一个公司,您将想要确保检查您的公司在生产数据使用上的公司政策;如果没有已有的正式政策,您需要询问您公司法律部门的某些人。即使如果您不能直接使用生产数据,您也可能有更改某些值(名字,社会安全号,等等)和使用其余数据的可能性。使用随机数据生成。很多工具包括测试数据生成程序。随机数据生成程序在产生大量用户数据的过程中特别有帮助(这取决于您正在测试什么和您想在产生过程
31、中花费多长时间)。例如,如果您需要对金融信息进行关于舍入错误的测试,您可以:随机生成大量数据通过您的应用程序运行数据通过运行Windows计算器(假定Windows的计算器没有舍入错误)来模拟相同的计算比较结果以确保他们匹配如果您需要,例如,要生成一组500个不同的客户名称及地址,您可以有一个生成程序(TestManager,Excel,Google Sets,等等)来创建一个带有名称和地址的表。您应当避免一次选择您所有的测试用例中的数据。相反,采取一种增量和迭代的使用测试数据的方法,将您的工作量集中在您认为最有可能产生的对于既定测试周期有用的评估信息上。这会帮助缓和在一组单个数据或者测试类型
32、上付出太多时间的风险-疏忽其它数据或测试任务-并且最小化在某些今后可能并不受关注的测试想法的数据上花费工作量的风险。回页首数据驱动框架的利与弊在本系列所涵盖的三类框架中(模块化、数据驱动,以及关键字驱动),数据驱动框架对于非技术人员是最容易实现的,因为几乎所有的功能都被构建在Rational Functional Tester中,并且支持执行记录和回放。这对于非技术人员(对于我来说没有充分的理由推荐它)来说,不但是简单的,而且是强大的。它导致了半自动文档化测试用例,减少了创建大量测试用例所要求的代码数量,并且使您可以进行一些测试类型,否则您必须进行耗时或麻烦的手工测试工作。数据驱动框架的主要优势是它减少了为很多类型的应用程序创建测试用例的成本。例如,在金融服务或者保险应用程序中数据驱动框架是非常有价值的。在您查看一千个变量中的一个变量是如何影响一笔复杂计算的最终金额的地方,对于金融服务或保险应用程序,很多次测试用例都只有细微的差别。对于一个数据驱动的工具,您将会很难找到一个更好的市场。另一方面,我曾经参与一个涉及化学制图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年环保型汽车运输汽油专项合同模板3篇
- 下年个人工作计划
- 2024年单位福利房产权转让及后续物业管理合同3篇
- 买卖合同范文集锦6篇
- 2022销售类工作计划
- 工程合同汇编七篇
- 主任工作计划模板
- 中国其他贵金属冶炼行业分析报告
- 年度商务工作计划
- 读三国演义有感600字寒假作文
- 北师大版九年级数学上册教学教学工作总结
- (完整)小学语文考试专用作文方格纸
- 管理供应商 供应商绩效评估
- 1000MW机组锅炉过渡段T23水冷壁管检修导则(征求意见稿)
- 夹层钢结构施工方案钢结构夹层施工方案
- 人教版九年级数学上册期末复习课件全套
- GB/T 28708-2012管道工程用无缝及焊接钢管尺寸选用规定
- GB/T 231.2-2012金属材料布氏硬度试验第2部分:硬度计的检验与校准
- GA/T 975-2019警用装备名词术语
- 《天津市安全生产条例》试习题 -参考答案
- 传统运动养生法课件
评论
0/150
提交评论