您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > IBM自动化测试框架(PDF41页)
IBMSoftwareGroup®IBM自动化测试框架IBM自动化测试框架李剑波IBMRational技术顾问lijianbo@cn.ibm.comIBMSoftwareGroup|Rationalsoftware2议程什么是IBM自动化测试框架IBM测试框架的架构和优点利用ibm包改进自动化测试如何应用IBM自动化测试框架IBMSoftwareGroup|Rationalsoftware3RFTRational自动化测试平台集成的功能测试和回归测试Objectmap保留测试对象采用Eclipse的插件机制测试Java,VS.NETWinForms,Web,Siebel和终端应用灵活的测试向导支持Java或者.netEclipse或VS.NET-based编辑、调试Java,VS.NET,Web和中端应用Java在EclipseVB.NET在VS.NET自动的脚本验证数据驱动的测试支持版本控制IBMRationalFunctionalTesterIBMSoftwareGroup|Rationalsoftware4用RFT进行自动化测试的通常途径等待一个可用的构建……耐心等待……得到第一个构建,录制脚本,插入验证点(VPs)回放脚本如果新的版本有明显的改动,重新改进相关的脚本,也许要重新录制相关的脚本IBMSoftwareGroup|Rationalsoftware5这种简单的录制-回放模式的优点很容易使用…不需要额外的编程经验简单…需要设计的工作很少直观的一步一步的执行方式IBMSoftwareGroup|Rationalsoftware6这种简单方式将会遇到的挑战界面对象、执行步骤和验证点掺杂在一个脚本中Æ代码不能很好重用!代码不能很好重用!脚本很长并且按顺序录制Æ很难调试很难调试!!要录制脚本必须等到有可以执行的构建Æ延迟产品可以发布的时间!延迟产品可以发布的时间!测试脚本和被测系统紧密关联Æ代码不容易维护代码不容易维护!!IBMSoftwareGroup|Rationalsoftware7如何应对这种复杂的情况IBM自动化测试框架(由QSE维护)!IBMSoftwareGroup|Rationalsoftware8首先,我们看看IBM自动化测试框架可以提供…然后,我们看一下这个测试框架怎么帮助我们…IBMSoftwareGroup|Rationalsoftware9IBM自动化测试框架是?IBM自动化测试框架是IBM自动化测试框架,以前叫ITCL(IBMTestCommunityLeadershipIBMTestCommunityLeadership)框架,是由QSE(QualitySoftwareEngineeringQualitySoftwareEngineering)小组协同IBM内部资深的自动化测试专家开发并维护的它是用RFT进行GUI自动化测试的理论指导和昀佳实践IBM自动化测试框架提供由appobjects,tasks和testcases组成的3层架构的实现IBM类包IBM昀佳实践一个集成的IDEIBMSoftwareGroup|Rationalsoftware103层架构由appobjects,tasks和testcases组成的3层架构的实现appobjectsappobjectstaskstaskstestcasestestcases存储被测系统中有关GUI元素的信息存储在被测系统中通用的一些遍历路径以便重用在此编写你的测试用例,用来在被测系统中进行导航,验证系统状态,记录结果分层的架构可以分离分层的架构可以分离““做什么做什么””和和““怎么做怎么做””IBMSoftwareGroup|Rationalsoftware113层架构的好处?代码重用…调试…测试脚本的维护…团队之间的协作…IBMSoftwareGroup|Rationalsoftware12如何使这个方法更可用?如何基于这个3层架构来鉴别和组织工件Appobjects层中怎么组织GUI元素找出并编写tasks基于tasks编写系统特定的测试用例IBMSoftwareGroup|Rationalsoftware13如何组织类包TestcasesTestcases层可以看作是你要测试层可以看作是你要测试““做什做什么么””的一个高层的视图的一个高层的视图TasksTasks和和appobjectsappobjects层为层为testcasestestcases层提层提供必要的实现细节-测试供必要的实现细节-测试““怎么做怎么做””IBMSoftwareGroup|Rationalsoftware14在appobjects中组织GUI对象大部分的GUI对象信息都存储在ObjectMap中Objectmaps的主要目的是在被调用时返回控件对象,它被存储在脚本中(testscript)。每一个脚本都包含一个特定的ObjectMapAppobjects包存储所有的脚本,这些脚本返回被测系统中的GUI对象要点要点::脚本关联GUI对象的策略对于简单的GUI界面,一个页面或一个表单关联一个脚本对于复杂的界面,可以分解为几个部分以利于重用在脚本中把对象映射到getter方法使用ibm类包中的方法可以简化对象的使用IBMSoftwareGroup|Rationalsoftware15一个例子IBMSoftwareGroup|Rationalsoftware16tasksTasks的任务是调用appobjects提供的方法来操纵GUI元素以完成一些通用的Task。反过来,tasks的方法会被testcases调用Tasks的力度要把握提高代码重用性以及对testcases屏蔽下层的实现细节IBMSoftwareGroup|Rationalsoftware17tasks(续.)对抽象对象(业务对象)和具体对象(复杂的界面控件)都要遵循面向对象的思想Task的颗粒度的划分是确保代码重用的关键通常,task会返回一个boolean值给testcase以标识task是否执行成功基本上在task中不会有和应用系统相关的验证点。当一个异常出现时,task应该抛出这个异常并且由testcase这一层捕获并处理IBMSoftwareGroup|Rationalsoftware18testcasesTestcases调用tasks(如果需要的话传入需要的数据),验证条件和记录结果Testcase应该仅仅包含简单的逻辑和控制流,其他的都应该在tasks这个包中实现IBMSoftwareGroup|Rationalsoftware19testcases(续.)在testcases目录中,每一个类都应该代表某个功能区域或其他的逻辑的、直观的分组;每一个方法都应该代表一个测试用例(testcase)偶尔,testcase也会绕过tasks层直接调用appobjects中的方法,但是当这种越层调用发生的太过频繁时就会使testcases变得过于复杂而需要额外的维护在建立tasks这一层时多花点时间考虑和设计,将来生成testcases这层就会很快而且很容易IBMSoftwareGroup|Rationalsoftware20testsuitesTestsuite类可以通过从RationalTestScript继承过来的callScript()方法定义。Testsuite类可以放在testcases包中或在testcases中新建一个包来存放。你可以定义好testcase,然后用很多不同的数据作为输入以达到数据驱动测试的方法。IBMSoftwareGroup|Rationalsoftware21IBM类包Ibm类包提供了很多类库能帮助你实现测试的自动化Ibm类包包含了:Ibm.loggers:提供了测试脚本可以直接调用的loggersIbm.recovery:提供记录一个特定的状态并在需要时可以恢复到需要的位置Ibm.tools:包含了ClassGenerator类,可以用来从脚本的objectmap中生成所有的getter方法Ibm.util:包含了一些常用的方法方便使用RFTIbm.widgets:扩展了TestObject功能--Mostvaluable!IBMSoftwareGroup|Rationalsoftware22Ibm.widgets通常,测试对象的操纵如下(例如:在一个输入框中进行输入):Text_name().click(atPoint(35,10));Browser_htmlBrowser(document_C(),DEFAULT_FLAGS).inputKeys({ExtHome}+{ExtEnd}{ExtDelete});Browser_htmlBrowser(document_C(),DEFAULT_FLAGS).inputKeys(test);如果有成千上万的地方需要这么写…你会喜欢吗你会喜欢吗??神啊,救救我吧神啊,救救我吧!!IBMSoftwareGroup|Rationalsoftware23ibm.widgets为什么不把这些公用的步骤封装在一个方法中呢?对!就是这样。但是你不必自己做,ibm.widgets已经将大部分都做好了!Text_name().setText(“Test”);IBMSoftwareGroup|Rationalsoftware24ibm.widget–怎么用?在appoject包中那些类提供的getter方法里构建widget对象publicWTextFieldgetPasswordText(){TestObjectto=passwordText(ANY,NO_STATE);returnnewWTextField(to);}从appobjects包的类中的getter方法得到这些widget对象以便操作:WTextFieldpasswdField=loginForm.getPasswordText();passwdField.setText(“Test”);IBMSoftwareGroup|Rationalsoftware25ibm.widgets(续.)对Java界面元素和Web界面,常用的GUI对象都已经有相应的widgets对Java的swtGUI对象,昀新的ibm包中也已经有子包中包含了响应的支持IBMSoftwareGroup|Rationalsoftware26Ibm.utilUtil这个包提供了对图象,浏览器,文件的一些常用操作。BitmapOps,BrowserOps,FileOps…etc.昀新的ibm包也提供了对基于终端的应用系统的支持IBMSoftwareGroup|Rationalsoftware27Ibm.utilBitmapOps:截屏捕获一个特定的测试对象比较两个图片并找出区别BrowserOps:启动一个浏览器窗口关闭特定的或所有活动的浏览器窗口找到一个特定的浏览器窗口确定一个浏览器窗口是否已经完成在页面中找到一个特定的字符串…IBMSoftwareGroup|Rationalsoftware28Ibm.loggers如果利用ibm包中提供的日志支持,实现如下需求将会非常容易:确定输出目标:你可能想将日志写到HTML文件、文本文件、控制台或同时输出到文件和控制台自定义输出格式:你可能需要清除日志中一些额外的信息或添加一些自己的信息保存截屏:每次当自动化测试记录到一个错误时捕获并保存截屏实现一个被动日志(passivelogger):记录所有的动作和过程以减少调试时间实现测试用例追踪:查看当前多少测试用例通过了;多少失败了IBMSoftwareGroup|Rationalsoftware29Ibm.recovery想象一下这个场景:100个测试用例需要一个一个的执行执行到第三个时,意外发生…这个测
本文标题:IBM自动化测试框架(PDF41页)
链接地址:https://www.777doc.com/doc-9615 .html