MyException - 我的异常网
当前位置:我的异常网» 综合 » 业务组件学习文件

业务组件学习文件

www.MyException.Cn  网友分享于:2013-08-18  浏览:1次
业务组件学习资料

业务组件学习资料
2011年03月09日
  11.6 QC和QTP构建自动化测试框架
  做功能自动化测试都会不约而同地遇到一个比较棘手的问题--测试框架的搭建。这也是直接影响功能自动化测试成功与否的关键。框架做得好可以使测试事半功倍,反之轻则很难看到工作的成果,重则会导致整个测试失败。目前有很多关于测试框架的讨论话题,其中也有成型的测试框架,也有很多好的思想在里边,很值得借鉴。但是今天要讨论的不是那些已有的,而是HP已经为我们设计好的一个测试体系--业务组件测试。它是利用QTP与QC的完美结合组成的一个体系架构,它可以轻易实现目前比较流行的3层测试架构:脚本层、业务层、数据层相分离,为开展功能自动化测试提供一个高效、稳定、容易实现的测试。
  11.6.1 BPT介绍
  HP Mercury测试工具系列中测试管理工具Quality Center 从8.2版本开始提供了BPT(Business Process Testing,业务流程测试)的测试思想和实现流程。BPT并不是HP创建的一种新型测试方式,它只是一种新的测试思想,它将整个测试参与角色分为两类:一类是测试工程师;另一类是业务工程师。业务工程师不用熟悉脚本,不用去理解Component的构建(当然可以参与构建),他们主要的职责是使用已经建模完成的所有Component,也就是被测对象的操作步骤零件进行实际业务流程处理的案例组合,设计完成充分、有效的测试用例集。
  以HP Loadrunner附带的flight订票系统举例来说,其登录步骤需要如下4个步骤。
  ① 打开程序,出现login窗口。
  ② 输入用户名。
  ③ 输入密码。
  ④ 点击确认。
  在BPT中,我们可以把整个登录打包成一个Component,它只需要测试用例设计人员拼接用例时拖曳到用例步骤,然后在实际运行时输入两个参数就可以执行了。登陆该Component可以被BPT中所有测试用例调用,而不用重新录制或者编写脚本。
  BPT的执行一般正确流程是由QC远程调用QTP来运行,在QC段单击Component上的输入参数列表就可以实时输入了。
  而对于一个业务复杂的系统来说,可以根据测试用例设计的粒度不同,组成不同的Component,达到测试用例复用的目的。
  11.6.3 BPT使用经验
  1.根据划分的组件来实现组件脚本
  使用业务组件时,首先需要将QTP连接QC(例如http://168.34.5. 123:8080/qcbin)。如果希望在每一次新建Action时都增加一些头部说明,比如作者、创建日期、说明等,则可以用Action Template来实现。方法是用记事本等文本编辑器,输入下面类似的内容:
  'Company: xxxx 
  'Author: xxx 
  'Product: xxx 
  'Date: xx 
  然后将文件保存为"ActionTemplate.mst",并存放到QTP安装目录下的dat目录,重启QTP,新建的Action就会包含以上信息。
  创建应用模版--Application Area,此时应用模版会自动调用前面创建的ActionTemplate.mst。
  2.创建应用程序区域
  在开发脚本之前首先需要创建一个应用程序区域。应用程序区域提供创建业务组件所需的所有资源和设置,每个业务组件都居于一个应用程序区域中,并从这些应用程序区域集成这些资源和设置。
  创建过程为:依次选择"File"→"New"→"Application Area"命令,保存后自动上传至QC默认目录。在此也可以加载自己的函数库、对象库等,这样以后创建的组件都可以共享该应用程序区域的资源;同时也方便维护,这也是一个优点。例如,一旦函数库改变,在此重新加载新的函数库即可,不用在脚本中修改。总之这个应用程序区域很重要,以后所有的脚本均是基于这个区域的。
  比如,如果要加载函数(这里笔者根据自己在实际工作中写的代码举个例子),则可以写下面的代码:
  If jour_no(c) =jour_no_e(c) Then 
  Reporter.ReportEvent micPass,"当日交易委托查询","
  委托单号"&jour_no_e(c)&"查询成功" 
  init() 
  report_log cPass,"当日交易委托查询","委托单号"
  &jour_no_e(c)&"查询成功" 
  else 
  Reporter.ReportEvent micFail,"当日交易委托查
  询","委托单号"&jour_no_e(c)&"查询失败" 
  init() 
  report_log cFail,"当日交易委托查询","委托单
  号"&jour_no_e(c)&"查询失败" 
  End If 
  上面代码中的粗体字体部分就是笔者需要调用的函数,作用是将测试结果以文本的形式同时保存到用户本地的磁盘上。而这些被调用的函数就需要事先通过Function Libraries将其以.vbs或.txt的格式添加到Resources中,然后通过应用模版--Application Area中的Function Libraries将这些函数文件一一添加即可达到被调用的目的。
  3.创建脚本
  创建脚本时应在创建脚本之前在QC中组织好目录树,方便保存及调用。
  新建业务组件选择Scripted Component,选择之前创建的应用模版,此时每次打开新的Scripted Component时,都会包含头部说明。
  在我们使用QC业务组件(QC9.0版本)的过程中发现了这样一个问题,即通常脚本开发人员都会使用QTP自带的DataTable来添加测试用例,然后参数化。但后来考虑到自动化最终的使用对象其实是用户,如果用户想自己添加、修改或删除测试用例,那么这种DataTable的模式是万万不可采用的,因为用户可能根本就不会使用该工具,所以最好采用从外部文件(比如Excel、Word、TXT文件等)直接获取的办法,让用户在外部文件中写入测试用例,即前面讲到的第三层架构数据层。
  同样举个例子,我们可以简单的利用以下代码实现:
  datatable.ImportSheet "D:\个人网银测试用例.xls","历史递延交割成交查询","历史递延交割成交查询"
  上面这段代码的作用是将外部文件D:\个人网银测试用例.xls中名为"历史递延交割成交查询"的表单内容导入到DataTable中名为"历史递延交割成交查询"的表单中,这样就可以达到灵活添加测试用例的目的。所以在用业务组件做自动化时,最好使用外部文件创建测试用例,以方便用户的使用,从而给他们留下一个良好的印象。
  4.正则表达式
  要学会使用正则表达式,在笔者做自动化的过程中,经常遇到某个对象(例如Webelement的innertext属性)不能被动态识别的问题。这时我们只要通过正则表达式就可以很好地解决这个问题,比如一个账户账号(16位的纯数字),我们就可以用正则表达式将该对象的innertext属性写成\d{1,16},这样每次不同的账户账号QTP就都能够识别了。
  当然,不只是在对象中能够使用正则表达式,它同样可以被使用在检查点中,这就要看使用者到时候如何去灵活地使用它了。其实,正则表达式在自动化中的用途相当广泛,不过在用正则表达式之前,大家还得先去了解一下正则表达式的使用规则。
  要学会利用QTP的Debug Viewer调试脚本,可以说这给我们在使用QTP的过程中带来了极大的帮助。
  最后,也是最重要的一点,即在做自动化的时候,一定不要忘了在代码中添加结果信息检查点,还是拿前面的那段代码来举例,如下所示:
  If jour_no(c) =jour_no_e(c) Then 
  Reporter.ReportEvent micPass,"当日交易委托查询","
  委托单号"&jour_no_e(c)&"查询成功" 
  init() 
  report_log cPass,"当日交易委托查询","委托单号
  "&jour_no_e(c)&"查询成功" 
  else 
  Reporter.ReportEvent micFail,"当日交易委托
  查询","委托单号"&jour_no_e(c)&"查询失败" 
  init() 
  report_log cFail,"当日交易委托查询","委托
  单号"&jour_no_e(c)&"查询失败" 
  End If 
  其中,粗体字为记录到QTP的结果信息,斜体字为记录到本地的结果信息。总之,结果信息必须要有,而且要尽可能的详细清楚。
  BPT为Bussiness Process Testing的缩写,译为业务组件测试。
  1)业务组件的简介
  业务组件是组成流程测试的基本单元,组合不同的业务组件可以实现不同的业务流程测试。如将黄金交易系统的登录作为一个组件,将交割申报作为一个组件等,然后可以将这些组件按照一定的业务流程组合在一起,以满足不同业务流的测试。这里业务组件可以重复使用,从而在一定程度上提高自动化开发的效率。
  2)业务组件测试的优点
  业务组件测试有以下几个优点:
  相关业务人员可以在没有脚本的环境下组合业务组件,实现业务流程。
  对业务人员的编程能力没有要求,业务人员只需了解系统的业务流程,不用关心具体的脚本实现。这一点也实现了业务层和脚本层的分离。
  一旦某个组件开发完毕,即可在不同的流程中使用该组件,实现高可复用性,从而加快业务流程测试的速度。
  明确角色分工,业务人员负责流程的开发、组织;QTP工程师负责脚本的开发、维护,以及相应函数库的开发、维护。
  因为实现了脚本的复用,提高了自动化开发的效率,在无形中降低了测试过程中维护的时间和成本。
  3)业务组件测试的简易流程
  业务组件测试的简易流程如图11-19所示。
  
  图11-19 业务组件测试的简易流程
  从图11-19可以看出整个过程分为两条线:第一条是由业务人员划分组件并组合不同的组件实现的不同流程测试;第二条是QTP专家负责组件的脚本的具体实现并负责调试成功,上传到QC供业务人员测试时调用。
  注意:
  此过程需要QC有Bussiness Process Testing组件许可的支持,也就是需要单独向HP购买。
  3.整个流程的开发过程
  下面我们还是以黄金外包项目为例,简单地演示一下整个流程的开发过程。
  1)划分组件
  个人网银交割申报业务划分为以下几部分:
  登录。
  递延交割申报。
  递延交割当日委托查询。
  递延交割当日成交查询。
  递延交割历史委托查询。
  历史递延交割成交查询。
  注销。
  2)组织业务测试流程
  组织业务测试流程为:登录-递延交割申报-递延交割当日委托查询-递延交割当日成交查询-递延交割历史委托查询-历史递延交割成交查询-注销。

文章评论

当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员必看的十大电影
程序员必看的十大电影
程序员应该关注的一些事儿
程序员应该关注的一些事儿
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
鲜为人知的编程真相
鲜为人知的编程真相
我是如何打败拖延症的
我是如何打败拖延症的
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
每天工作4小时的程序员
每天工作4小时的程序员
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
漫画:程序员的工作
漫画:程序员的工作
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
那些争议最大的编程观点
那些争议最大的编程观点
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
一个程序员的时间管理
一个程序员的时间管理
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
旅行,写作,编程
旅行,写作,编程
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
Java程序员必看电影
Java程序员必看电影
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员和编码员之间的区别
程序员和编码员之间的区别
编程语言是女人
编程语言是女人
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
如何成为一名黑客
如何成为一名黑客
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
10个调试和排错的小建议
10个调试和排错的小建议
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
老程序员的下场
老程序员的下场
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
代码女神横空出世
代码女神横空出世
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
我的丈夫是个程序员
我的丈夫是个程序员
中美印日四国程序员比较
中美印日四国程序员比较
程序员的鄙视链
程序员的鄙视链
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
 程序员的样子
程序员的样子
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有