ericazou 发表于 2010-2-23 16:11:50

自己组织的测试框架,大家看一下提些意见

框架介绍

1、        页面对象封装思想
依据PageObject的思想,把每一个页面的元素和元素对象的方法都封装为页面对象的子对象和对象方法。
a)        把页面的所有的控件元素封装为所在页面的子对象。
初始化init方法:
把所使用的页面元素封装为页面的子对象
        调用检查页面元素是否存在的的公共函数(如果有不存在会返回False)
' 初始化界面对象并验证对象是否存在
Public Function Init()       
    ChildObjects = CreateObject("Scripting.Dictionary")
    With ChildObjects
      .Add "Login_Browser", Browser("name:=Web Tours")
                .Add"Login_Page",ChildObjects.Item("Login_Browser").Page("title:=Web Tours")
                .Add "Login_Frame",ChildObjects.Item("Login_Page").Frame("name:=navbar")
      .Add "UserName", ChildObjects.Item("Login_Frame").WebEdit("name:=username")
      .Add "Password", ChildObjects.Item("Login_Frame").WebEdit("name:=password")
      .Add "Submit", ChildObjects.Item("Login_Frame").Image("name:=login")
    End With
   Init = IsContextLoaded(ChildObjects)   ' 检查界面层对象是否存在
End Function
b)        把页面元素的操作方法封装在一个业务方法中
Public Function Login(user,password)
        ChildObjects.Item("UserName").Setuser
        ChildObjects.Item("Password").Setpassword
        ChildObjects.Item("Submit").Click
        End Function
c)        创建类函数
由于QTP是不提供从外部文件中读取类的方法,因此我们在这里添加一个创建类的函数
Public Function CreateLogin()
   Dim ObjLogin
   Set ObjLogin=new LoginPage
   Set CreateLogin=ObjLogin
End Function
d)        使用例子
Public Function Login(sUserName,sPassword)
        Dim objLogin
        Dim objLoginSuccess
        set objLogin=CreateLogin()
        objLogin.init()           
        call objLogin.Login(sUserName,sPassword)       
        set objLoginSuccess=CreateLoginSuccess()
        objLoginSuccess.init()
        'msgbox objLoginSuccess.Login_Check()
        Login=objLoginSuccess.Login_Check()
End Function
2、业务脚本(QTP)
        原则:每个测试模块对应一个QTP TEST,每个测试用例对应一个Action,每个Test中都有一个Main Action,Test运行时只运行Main Action,Main Action 通过所读取得用例名称来调用对应的Action
        1)读取TestCases.xls中和测试模块名称相同的工作表(工作表中为测试模块的测试用例),每个测试用例对应QTP TEST中的一个 Action
        2)根据用例名称和是否测试条件来导入测试数据到相应的Action并运行Action,(导入到Datatable的Excel文件应该为Microsoft Office Excel 97-2003 工作表类型)
        3)设置TEST只运行所要选择的Action的方法:Test所在的文件夹,进入Action0目录,修改Script.mts文件
3、        Drive.vbs:进行集中运行所需要测试的测试模块脚本(QTP TEST)
读取Testcases.xls中的TestConfig工作表中的测试模块,根据所要测试的模块名称,调用对应的(名称相同)Test(QTP脚本)
4、测试数据:包括TestConfig (测试模块的列表),每个模块的测试用例工作表,(工作表的名称和模块名称相同)和temp 工作表(为导入数据使用)
       
       
5、函数库
包括通用方法和本系统的公共函数如:登陆,检查对象是否存在函数 ,对外部文件的读写,对日志的操作
6、测试记录
包括测试日志,测试报告及错误抓图
7、在测试脚本中使用错误处理函数或者场景恢复函数进行处理预见的或者异常情况
        1)定义场景恢复过程中所调用的函数:1、写日志函数2、抓屏函数
2)自己定义的错误处理函数:1、在可能出现的位置添加错误处理函数:1、如果有错误写日志函数,2、抓屏3、调用错误处理方法
8、测试过程中的检查点使用手动写检查点并且根据每一个检查点都有报告步骤输出
使用Reporter对象
9、测试报告主要还是使用QTP自带的测试报告,所以要运行时要设置测试报告的目录和名称

zzxxbb112 发表于 2010-2-23 17:04:16


此代码的设计模式好眼熟啊~:lol
貌似是我当初参考ADVANCEDQTP写的一篇文章里的~

yujie6832 发表于 2010-2-23 17:44:57

我看到了也觉得眼熟:L

ericazou 发表于 2010-2-24 09:49:56

呵呵,我是参考了网上的qtp面向对象思想 和QTP项目应用与进阶 来组织的,其实我看到轻量级应用框架等,思想都是差不多的

wugecat 发表于 2010-2-24 13:50:28

测试数据怎么不提出来?这样不利于维护数据

ym_wei 发表于 2010-3-23 13:58:23

下载学习下
页: [1]
查看完整版本: 自己组织的测试框架,大家看一下提些意见