如何做好SAP自动化测试

发表于:2010-1-26 13:14

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:卢晨之    来源:51Testing软件测试网原创

  本文主要研究了如何使用脚本语言或主流自动化测试工具QTP在SAP GUI上展开自动化的自动化测试。探讨了它们的弊端与优势,还有如何结合。

  前言:

  SAP GUI 编写的语言是ABAP(Advanced Business Application Programming),一般情况下外部公司会购买SAP的部分模块并在原来SAP GUI的基础上做二次开发,所以大部分的SAP程序都是由原始版本放射出来的子版本,同样它也继承了SAP的大部分基层类、方法。

  当然,如何对一个GUI程序做自动化测试,我们需要了解的还有很多,还包括了它的构成,类对象,方法等等。

  了解SAP GUI的结构

  SAP GUI 主要分成2层,一层是后台控件(Top level administrative objects),另一层是前台控件(Top level user interface objects)。在后台控件中,存在着一个层次鲜明的关系,正如下图所示:

  透过上面图片我们可以看到,后台控件的关系分别:GuiApplicaiton,GuiConnection,GuiSession;前台控件包括了:GuiMainWindow,GuiModalWindow,GuiSession等等。而这些层次关系也是非常重要,因为我们需要靠它来得到我们需要操作的对象,下面是VBS 脚本片段(GetSession.vbs):

  ……………………

  查看全文请点击下载:http://www.51testing.com/html/28/n-205128.html

  QTP SAP solutions add-in

  QTP的SAP solutions add-in对SAP的控件支持,算得上是理想。而这个理想的主要原因是SAP的控件比较单一,不像.Net的第三方控件如此之多。我们使用这个插件基本能满足我们在业务中的大部分操作与自动化的实现。而QTP的另一个优势就是它的对象库,这个能很好的管理我们的对象与维护,同时省去了我们非常多的代码量,区别于纯VBS脚本。

  可是不幸的是,当我们去用这个控件时候,我们会发现,QTP封装这块原来做得非常粗糙,划分得太大,而不是细。就如同我们用QTP能够识别了五大洲但却识别不了里面的国家,而我们要操作国家,只能和这些大洲的洲长去联系,告诉它我们现在要让你们某个国家干什么,给,这是这个国家的ID和它要干的事情。

  调用SAP GUI 对象的方法与属性

  我们能够使用.Object去调用SAP GUI对象的自身方法,而QTP做的就是让我们更快的找到这个对象并帮我们管理好它。所以当我们使用这个组合的时候,有很多的问题我们都能迎刃而解。

  实例1:SAP solutions add-in中并没有MouseMove或者Click(x,y)的方法,而我们通过把SAP转化为Window对象的方法来实现。

l=Sapguisession("Session").SAPGuiWindow("SAP").SAPGuiButton("Log").Object.left

h=Sapguisession("Session").SAPGuiWindow("SAP").SAPGuiButton("Log").Object.Top

hwnd=sapguisession("Session").SAPGuiWindow("SAP").Object.handle

window("hwnd:="&hwnd).MouseMove l,h

  实例2:SAP solutions add-in 中对SapGuiTable的封装得并不细,我们能操作的都只是点击某个Cell与设置,或者控制选中某个Row,Column。但现在我们能够获取到Cell,或者对列宽度设置,或者滚轮滚动等等做操作。在SAP中,GuiTable是由Rows与Columns交叉组成的,因此需要获取某个Cell我们就有2种方法获取到,Rows.item(1).item(0)与Columns.item(0).item(1)是一样的。

Set Cell=Sapguisession("Session").SAPGuiWindow("Change").SAPGuiTable("All ").Object.columns.item(1).item(0)  获取了第2列第1Cell

Sapguisession("Session").SAPGuiWindow("Change").SAPGuiTable("All”).Object.columns.item(1).width=100  设置第2列的宽度

sapguisession("Session").SAPGuiWindow("Change").SAPGuiTable("All").Object.VerticalScrollbar.Position=1   我们可以通过循环递增的方法设置它的Position来实现滚动的效果,模拟鼠标拉动滚轮。

  实例3:QTP封装的SAPGUITabled中,SelectRow传递进去的参数是一个整数,而选择的的就是Table中所有数据(包括当前没罗列在Table中)的第几行。所以当我们翻页时候,我们要选择当前页面的第一条数据却显得力不从心,可是如果我们这么写呢:

  ……………………

查看全文请点击下载:http://www.51testing.com/html/28/n-205128.html

版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号