专注于自动化测试的培训、自动化测试解决方案、兼职自动化测试项目,欢迎志同道合的朋友一起合作共赢未来!电子信箱:yang-zhengjiang@163.com

浅谈QTP中的测试对象

上一篇 / 下一篇  2009-03-31 15:11:13 / 个人分类:qtp

在功能的自动化测试QTP被人们广泛的使用着,关于使用qtp自身的对象仓库的方法来管理测试对象的方式,本人认为存在着很大的局限性,在这里介绍一种通过函数的方式来管理和使用测试对象的方法,该方法的思想是基于利用函数来实现的,把要测试的每一类对象通过一个或几个公用的函数来实现,下面通过具体的code来说明,先建立一个TestObject.qfl的文件,用来模拟对象仓库的功能。

Function getWindow

    Set win = description.Create
    win("class description").value = "window"

    Set getWindow = win

End Function

Function getWindowByTitle(title)

    Set win = description.Create
    win("class description").value = "window"
    win("title").value = title

    Set getWindowByTitle = win

End Function

Function getDialog

    Set dia = description.Create
    dia("class description").value = "window"

    Set getDialog = dia

End Function

Function getDialogByTitle(title)

    Set dia = description.Create
    dia("class description").value = "window"
    dia("title").value = title

    Set getDialogByTitle = dia

End Function

Function getEdit

    Set edt = description.Create
    edt("class description").value = "edit"

    Set getEdit = edt

End Function

Function getEditByText(text)

    Set edt = description.Create
    edt("class description").value = "edit"
    edt("attached text").value = text

    Set getEditByText = edt

End Function

Function getEditByIndex(index)

    Set edt = description.Create
    edt("class description").value = "edit"
    edt("index").value = index

    Set getEditByIndex = edt

End Function

Function getButton

    Set btn = description.Create
    btn("class description").value = "push_button"

    Set getButton = btn

End Function

Function getButtonByText(text)

    Set btn = description.Create
    btn("class description").value = "push_button"
    btn("attached text").value = text

    Set getButtonByText = btn

End Function

我们通过以上这种方式,可以把我们测试项目中用到的所有的测试对象加入到这个“对象仓库”中来,在使用的时候,只需要调用相应的函数即可实现,如下面的coad所示。

SystemUtil.Run "fileName","","filePath"

If JavaWindow(getWindow).JavaDialog(getDialog).Exist(30) Then

    With JavaWindow(getWindow).JavaDialog(getDialog)

        .JavaEdit(getEditByText("User Name")).Set "userName"
        .JavaEdit(getEditByText("Password")).Set "userPwd"
        .JavaButton(getButtonByText("Ok")).Click
    End with
Else
    Reporter.ReportEvent micFail,"lauch error","launch error, please check the application!"
    ExitTest
End If


通过这种方式实现了测试对象的过度复用,更符合自动化测试的思想,在项目的测试过程中,我们只要不断的加入新类型的测试对象即可,关键是这些测试对象基本不需要怎么维护,便可以很好的进行复用,这些对象不仅仅在一个项目中可以使用,只要是同一类型的项目,我们都可以来使用这些对象,而不需要随着不同的项目我们还要去重复的去维护一个个的对象仓库了。这样大大的提高了我们的测试效率,也便于多人集体合作。




TAG: Object QTP test Test qtp object

Bamboo 引用 删除 yangzhengjiang   /   2009-04-15 12:07:07
原帖由假装不在于2009-04-13 10:12:40发表
如果只是为了简单的做CODE复用,你直接用watir更为直观。
QTP工具的核心是对象库,这点到了9.5已经是不.


我并不是完全否认使用qtp的对象仓库,这只是我个人在公司做项目中,总结出来的,并且在实际的使用中感觉到很好用,对于一个大型的长期的项目而言,这种写法绝对是有优势的,小型的短期项目,当然就没有那个必要了,本人的自动化测试观点是:自动化测试应该开发出更高效的测试代码,工具只是载体而已。
假装不在 引用 删除 假装不在   /   2009-04-13 10:12:40
如果只是为了简单的做CODE复用,你直接用watir更为直观。
QTP工具的核心是对象库,这点到了9.5已经是不再动摇的事实。
Bamboo 引用 删除 yangzhengjiang   /   2009-04-07 13:04:26
原帖由假装不在于2009-04-02 17:02:10发表

对于你的第一句话:“关于使用qtp自身的对象仓库的方法来管理测试对象的方式,本人认为存在.


只用vbs是不能运行的,vbs本身是没有这些方法的,只有在qtp中才能去运行,这只是通过一个函数文件来管理而已。这样增加了灵活性,最重要的是可以高度的复用,使用自动化工具测试,应该尽量少的去依赖于这个工具,最后只需要这个工具来运行,其他的有你自己来实现,只有减少对工具的依赖性,才能更好的实现自己的任意组合,更容易做到code的复用。(这只是个人观点)呵呵。
假装不在 引用 删除 假装不在   /   2009-04-02 17:02:10

对于你的第一句话:“关于使用qtp自身的对象仓库的方法来管理测试对象的方式,本人认为存在着很大的局限性”

我就已经开始不认同了。你下面的文章是对对象的捕获,而你这这句话说的是管理。其实是不一致的。
我并不知道你用这些捕获的函数是如何去管理你的对象呢。
再这么说,你这样的方法直接用VBS文件运行便克可,为何要用QTP呢,这样已经脱离的工具。
 

评分:0

我来说两句

Open Toolbar