QTP:GUI层——面向对象的扩展设计

发表于:2009-12-02 14:40

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

 作者:赵旭斌(zzxxbb112)    来源:51Testing软件测试网采编

  摘要

  本文主要介绍的是QTP的一种较为先进的技术,本技术是由AdvancedQTP SOLMAR自动化测试专家组所采纳的一种面向对象的设计模式,由Meir Bar-Tal于2008年12月20日发表,笔者将会详细介绍此设计模式的每个类以及方法,设计模式的使用,设计模式的优缺点。

  此模式主要是把QTP描述性编程以及装载GUI对象的DICTIONARY对象通过业务驱动的方式来得到体现,最有价值的地方在于其对象识别的先发机制,可以有效的防止QTP在运行时识别对象出现卡住的现象,当对象出现不匹配时,能使测试顺利退出,并在报告中定位细节。有效的降低了测试的维护量并节省了自动化测试的时间。

  介绍

  自动化测试的核心问题就是如何减少维护量,例如:我们应该使用对象库还是描述性编程?如果选择OR那么我们可以在每个ACTION中使用共享对象库或者本地对象库,那如果选择DP,可以有什么方式来实现吗?

  成本效益和可维护性是我们在做自动化测试中最为关注的,在此引出一个概念-GUI层扩展。这一概念经过的SOLMAR自动化专家组的分析和观察已被采纳,使用它就可以尽可能地提高代码重用性(通过使用面向对象的方法来提高效率,并分解出若干个抽象层且可维护性较高的自动化项目)。

  层的概念

  我们前面已经提到了GUI层,那层的作用是什么呢?这里先简单解释一下,层可以使重用化发挥到最大极限,定义一个类(封装一个图形用户界面层)通过相应的接口来控制应用程序GUI界面中的测试对象,从而把这个类称之为GUI层。

  封装测试对象类

  为了能够使大家更加容易理解此设计模式,我在这里重新修改了原文中层的方法和对象,这里就通过把百度搜索页封装成GUI层作为一个最简单的例子来讲解,代码如下:

点击查看大图

  首先看最外层的BaiduSearch类它代表着一个百度的GUI层,我们在类中定义了一个Scripting.Dictionary对象并且为其设置 GET/LET方法,接着是一个初始化的函数Init这个函数主要的作用是把页面上下的所有对象全部封装在一个Scripting.Dictionary 容器对象中,并通过描述性编程结合迭代式的对象封装有效的提高了代码的重用性,最后还有两个业务行为函数,一个是在文本框中输入搜索内容的行为,另一个是点击搜索按钮行为,这两个函数都是可以直接在字典对象中进行搜索关键字来定位对象的,并针对对象进行操作来达成关键字字典对象驱动。。这样一个百度的 GUI层就已经封装好了,并且这个类还具备了两种业务行为的接口。

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

精彩评论

  • 木卫十二
    2010-1-13 10:43:02

    >> 1. 由于QTP缺少类这一功能的提示,因此脚本编写没有了代码提示功能
    这一条,可能通过VBS编辑工具来解决。 如 Primal Scrip 就支持类的代码提示。

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号