做了一段时间QTP, 发现趋向于"尽可能少用对象库", 不知道大家以为然否

2012-01-17  李斐然 

做了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.

想听听大家的意见.
351°/3514 人阅读/0 条评论 发表评论

登录 后发表评论