扼杀QTP检查点

发表于:2009-1-07 16:11

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

 作者:卢晨之    来源:51Testing投稿

#
QTP

  扼杀,比喻压制发展中的事物。

  首先,简单说下,什么是检查点。因为检查点在测试领域中涉及面较广,所以我们这里主要针对QTP的检查点做个概念性的介绍,它是QTP在运行过程中,对被测试对象的属性、输入、输出值做的一个检查,如果发现预期结果与实际结果不同,便会以报告的方式显示出来给用户或者返回值。

  其次,知己知彼,方能百战不殆。让我们了解下,QTP检查点的基本工作原理,QTP把某个对象添加到一个“库”中,并记录了它的属性,值等,在运行的时候,把用户指定的属性,值与运行过程中(类似getroproperty)的属性与值进行比较。直到V9.5出台,检查点管理才上升到界面上,并归并于对象库中。至此,检查点的原理在9.5的粉饰下更让人容易接受和入门。

  再次,为什么要添加检查点?因为使用QTP,无论是回归测试,或者其它方面的测试,我们需要一个检查点,一个触发点来达到捕获BUG或者触发事件的目的。因此,渐渐的很多刚用QTP的人便把检查点看成一个能够解决自动化瓶颈的一个出路。所以在一个简单的脚本中,检查点是一个接一个的插进去,琳琅满目。

  最后,关于检查点的用法,可以在网上搜索下关于这方面的资料,它包括了表、对象、数据库、位图、文本、页面、输入输出值等等。

  在这里介绍个简单的Link检查点的玩转方法,自然不是挑战XEnu之类的工具,在这里之所以介绍这个方法,是想让更多的读者学会思考,教材是死的,人才是活的。

  1、设置一个URL让它去跑,我们选择了Google,然后随便做个操作,例如做个set操作。没办法,添加检查点就是要这么麻烦。

  2、第1步其实是让谷歌首页的页面截图有出现到我们的Screen中。好了,点击停止。然后在Screen上邮件添加"Images"为标准检查点。

  Browser("Google").Page("Google").Link("Images").Check CheckPoint("Images")

  3、我们只选择了html tag和URL(不要outerhtml之类的),让html tag为a(连接其实有很多中节点方式,需要根据实际去做参数化),URL用正则表达式参数化成"http://(.*)"。

  4、然后到对象库中,把刚才的Link("Images")的text做个参数化,例如添加个环境变量Environment “Images_text”。

  5、关于这个对象库中的,我们不要添加太多的属性进去,特别是URL不要加进去,我们就是要通过URL来做检查的(为什么不把对象库中的URL同样也做这种表达的参数化?这点留给细心的读者去思考)

  6、运行下面代码:

-1    Dim LinkObj
-2    Set LinkObj=browser("Google").Page("Google").Object.links    
-3    For i=0 to LinkObj.length-1
-4        Environment.Value("Images_text")=LinkObj(i).outertext
-5     Browser("Google").Page("Google").Link("Images").Check CheckPoint("Images")  
-6    Next

  7、第5行就是我们自己添加的检查点,区别8.2和9.5,前者使用的复制黏贴Screen不会跟踪,直到9.X才改善了这个问题。

  8、大家很高兴的在Report中看到了若干个检查点的成功报告,而报告的内容就是HTML与URL的检查。至于它的实用性,抛砖引玉。

  好了,检查点我们也大概知道个二三,现在我们来说说,这么好的一个检查点,为什么要扼杀它,或者说是对许多QTP用户一个新触发点。

  1、在比较稳定的版本QTP8.2中,检查点的添加,保存都是以这一个文件的形式,并未体出一个可维护性高的特点。

  2、对象变更,检查点毛病会体现出来,需要重新添加一次检查点或者像在9.5中需要修改属性,因为它的原理基于对象库。

  3、项目保存或者移植(被测项目修改),screen丢失或者错乱,会让检查点添加是个让人头痛的问题,因为你需要整理screen或者重新添加,更甚是在8.2中不支持检查点图片跟踪,导致了复制同样的检查点,没办法做到维护。

  4、某些检查点的添加是基于screen,当screen出现了第3点中的情况后,项目的维护成为QTP脚本管理员的一个隐痛,自然,琳琅满目的检查点更是让情况发生恶化。

  5、检查点的原理基于对象库,因此,对象库中的毛病也会体现出现,维护,移植,管理...

  6、框架的可拓展性,因为检查点的特点,导致了它的添加必须基于录制,过渡依赖于Action的使用。会让检查点的添加不能在单独的Function中使用而。

  7、功能局限性,检查点虽然提供了哪么多类型的检查点,但实际上它能做到的或者是读者想要的,远远不只这些东西。

  那么,不用检查点,我们有更好的方法去解决吗?我们用检查点干什么?就是为了发现包括回归过程,测试过程中找到与预期结果不同的页面元素。考虑到重用性、可维护性、框架拓展性,我们采用了Function的编写。这并不是舍简求繁,路需要走得更远,这是一个积累的过程。在这里简单举1,2个例子。

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

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号