做了QTP快两年了, 主要做了两套基于QTP测试框架, 分别是Web和Eclipse平台的应用. 不知不觉的, 发现自己在朝"尽可能少用对象库"这样的一个方向前进.
因
为自己以前的自动化测试项目都是比较"低级"的, 没有基于商业的测试工具, 而是用Java, Ruby, Shell, 等等这样语言构建起来的.
所以骨子里有"自己控制一切"的倾向. 对于QTP本身, 我还只是半瓶子水, 所以我不敢确定这是否是一条正确的道路?
不知道各位资深的QTP测试开发人员是否同意我的观点?
突然有这样一个反思, 是因为前几天, 我在试图实现这样这样的一些函数: 通过函数调用(不用访问对象库), 就能在当前window把一些GUI元素找出来, 比如Button, Edit, Table, List, 等等.[code]
Function FindButton(strText)
'找出当前的window, 逻辑大概是这样
Set cw = Nothing
if 有popup window Then
set cw = popupWindow
else
Set cw = mainWindow
End If
'用 DP找出此button
set desc = Description.create
desc("to_class").value = "Button"
desc("index").value = 0
desc("attached text").value = strText
Set ele = cw.Button(desc)
' 如果不能找到, 那么引用对象库
if Not ele.Exist(0) Then
Set ele = win.Button(strText)
End if
Set FindButton = ele
End Function
[/code]为什么要实现这样一套函数库是因为 在写 testcase script的时候, 常常不得不中断下来, 把对象加入对象库. 而这样的"中断" 让我很恼火, 因为它破坏了写代码的流畅性.
如果有比较完善的这样的"找出对象"的函数库, 那么在写testcase script的时候, 几乎不会为录制"对象"而中断, 这样就更像我用Java, Ruby, Shell等语言开发的状态.
这种方法的缺点也很明显. 因为QTP对象库提供了一层中间层, 所以GUI元素发生了改变, 比如改名, 那么仅仅需要修改对象库里对象的定义, 而不需要修改任何引用它的code.
想听听大家的意见.