【扼杀QTP检查点】
上一篇 / 下一篇 2009-01-07 19:44:26 / 个人分类:QTP
【扼杀QTP检查点】
kd"wTZ\051Testing软件测试网#Y8`zp:@$cj9P
出自 《51测试天地》第十二期 作者:卢晨之
0O \$q"](F+vvMI0(T7V7c;Z_3G O-g0
扼杀,比喻压制发展中的事物。
XRq1E|XGd0首先,简单说下,什么是检查点。因为检查点在测试领域中涉及面较广,所以我们这里主要针对QTP的检查点做个概念性的介绍,它是QTP在运行过程中,对被测试对象的属性、输入、输出值做的一个检查,如果发现预期结果与实际结果不同,便会以报告的方式显示出来给用户或者返回值。
n/X%kN6smx-cQ*x MY0其次,知己知彼,方能百战不殆。让我们了解下,QTP检查点的基本工作原理,QTP把某个对象添加到一个“库”中,并记录了它的属性,值等,在运行的时候,把用户指定的属性,值与运行过程中(类似getroproperty)的属性与值进行比较。直到V9.5出台,检查点管理才上升到界面上,并归并于对象库中。至此,检查点的原理在9.5的粉饰下更让人容易接受和入门。51Testing软件测试网(u%Mot h J
再次,为什么要添加检查点?因为使用QTP,无论是回归测试,或者其它方面的测试,我们需要一个检查点,一个触发点来达到捕获BUG或者触发事件的目的。因此,渐渐的很多刚用QTP的人便把检查点看成一个能够解决自动化瓶颈的一个出路。所以在一个简单的脚本中,检查点是一个接一个的插进去,琳琅满目。
@_S]y;|)[0f ?0最后,关于检查点的用法,可以在网上搜索下关于这方面的资料,它包括了表、对象、数据库、位图、文本、页面、输入输出值等等。
]7g\,O zo'z!W0在这里介绍个简单的Link检查点的玩转方法,自然不是挑战XEnu之类的工具,在这里之所以介绍这个方法,是想让更多的读者学会思考,教材是死的,人才是活的。
`$A;r F X%G01,设置一个URL让它去跑,我们选择了Google,然后随便做个操作,例如做个set操作。没办法,添加检查点就是要这么麻烦。
O/[3jrY y02,第1步其实是让谷歌首页的页面截图有出现到我们的Screen中。好了,点击停止。然后在Screen上邮件添加"Images"为标准检查点。
j,V(pX_"F'\4[0Browser("Google").Page("Google").Link("Images").Check CheckPoint("Images")51Testing软件测试网v.S_FM.t
3,我们只选择了html tag和URL(不要outerhtml之类的),让html tag为a(连接其实有很多中节点方式,需要根据实际去做参数化),URL用正则表达式参数化成"http://(.*)"。51Testing软件测试网/U)dj4AsZ
4,然后到对象库中,把刚才的Link("Images")的text做个参数化,例如添加个环境变量Environment“Images_text”。51Testing软件测试网z{i6F/}\
5,关于这个对象库中的,我们不要添加太多的属性进去,特别是URL不要加进去,我们就是要通过URL来做检查的(为什么不把对象库中的URL同样也做这种表达的参数化?这点留给细心的读者去思考)
;Cia ~$jZ06,运行下面代码:51Testing软件测试网F N u4e"J-]?-X @)o
-1 Dim LinkObj51Testing软件测试网8_.x3gFnJ7JQ*V
-2 Set LinkObj=browser("Google").Page("Google").Object.links 51Testing软件测试网,c kr&S,V/i8x$v5R+X
-3 For i=0 to LinkObj.length-1
Z3I$aS#l:P0-4 Environment.Value("Images_text")=LinkObj(i).outertext
$}-C]:`BwQ8A0-5 Browser("Google").Page("Google").Link("Images").Check CheckPoint("Images") 51Testing软件测试网"BA^pMMIC7R7I
-6 Next
FK/M)YSq@07,第5行就是我们自己添加的检查点,区别8.2和9.5,前者使用的复制黏贴Screen不会跟踪,直到9.X才改善了这个问题。51Testing软件测试网Hj_v&m4Adc
8,大家很高兴的在Report中看到了若干个检查点的成功报告,而报告的内容就是HTML与URL的检查。至于它的实用性,抛砖引玉。
8m6G-n$U:P0X0好了,检查点我们也大概知道个二三,现在我们来说说,这么好的一个检查点,为什么要扼杀它,或者说是对许多QTP用户一个新触发点。51Testing软件测试网3Hqh!fN_cV
1,在比较稳定的版本QTP8.2中,检查点的添加,保存都是以这一个文件的形式,并未体出一个可维护性高的特点。
;~ v']&j S5x-caOj02,对象变更,检查点毛病会体现出来,需要重新添加一次检查点或者像在9.5中需要修改属性,因为它的原理基于对象库。
3\e:S,E!S,{+]&t03,项目保存或者移植(被测项目修改),screen丢失或者错乱,会让检查点添加是个让人头痛的问题,因为你需要整理screen或者重新添加,更甚是在8.2中不支持检查点图片跟踪,导致了复制同样的检查点,没办法做到维护。51Testing软件测试网 p&n5B-F^%OQ
4,某些检查点的添加是基于screen,当screen出现了第3点中的情况后,项目的维护成为QTP脚本管理员的一个隐痛,自然,琳琅满目的检查点更是让情况发生恶化。