51Testing软件测试论坛

标题: 基于对象库+excel的框架 [打印本页]

作者: FLY000    时间: 2008-7-18 12:17
标题: 基于对象库+excel的框架
做QTP自动化时间不久,之前都是写的一些小的处理数据的功能,现在要做一个类似框架的自动化程序,在网上看了大家关于框架的讨论,所以请对我自己想写的程序有大体如下想法,请大家发表下看法:

对象处理:为解决版本升级后对象不能识别的问题,所以采用对象库(听说描述性编程比较复杂)。

输入数据:用EXCEL作为数据驱动。将测试用例的数据写在EXCEL中,然后在脚本中对有效和无效的用例作判断,给出测试报告。

脚本和函数:在脚本中,将基本的操作都模块化,比如:新增、删除、修改。。
同时把可重用的函数方法写成FUNCTION。

输出报告:测试报告的部分也即是错误处理,写成FUNCTION
作者: zte_boy    时间: 2008-7-18 12:46
动手去做,你会发现很多问题,然后不断提高,加油
作者: FLY000    时间: 2008-7-18 12:53
问题是,我现在不知道怎么下手。
作者: xiaoyaoke    时间: 2008-7-18 12:56
呵呵,还是动手吧,光想得不到锻炼的,实际问题中去提高自己解决问题的能力
作者: FLY000    时间: 2008-7-18 14:15
我看到别人框架里的代码没有frame,请问下怎么才能把frame去掉,我设置了frame还是不行
作者: zte_boy    时间: 2008-7-18 14:18
你咋老是和frame过不去了,faint
这个影响你什么呢?
作者: peimzh    时间: 2008-7-18 14:21
实际项目中总结经验,然后提高自动化测试框架的优化水平
作者: FLY000    时间: 2008-7-18 14:46
因为我录制的时候会产生这样的代码,frame的名称好多,我觉得这样不好管理对象。

Browser("BI@Report 2.0").Page("BI@Report 2.0").WebElement("分析应用服务器").Click
Browser("BI@Report 2.0").Page("BI@Report 2.0").Frame("Frame").Link("创建主题域").Click
Browser("BI@Report 2.0").Page("BI@Report 2.0").Frame("Frame_2").WebEdit("name").Set "测试主题域2"
Browser("BI@Report 2.0").Page("BI@Report 2.0").Frame("Frame_2").WebEdit("description").Set "test"
Browser("BI@Report 2.0").Page("BI@Report 2.0").Frame("Frame_2").WebList("dsname").Select "sybaseshl"
Browser("BI@Report 2.0").Page("BI@Report 2.0").Frame("Frame_2").Link("确认创建该主题域").Click
Browser("BI@Report 2.0").Page("BI@Report 2.0").Image("plus3").Click
Browser("BI@Report 2.0").Page("BI@Report 2.0").WebElement("维表维护").Click
Browser("BI@Report 2.0").Page("BI@Report 2.0").Frame("Frame_3").Link("单级代码维").Click


Browser("BI@Report 2.0").Page("BI@Report 2.0").Frame("Frame_4").Link("返回到父页面").Click
Browser("BI@Report 2.0").Page("BI@Report 2.0").Frame("Frame_3").Link("多级代码维").Click
Browser("BI@Report 2.0").Page("BI@Report 2.0").Frame("Frame_4").Link("返回到父页面").Click
Browser("BI@Report 2.0").Page("BI@Report 2.0").Frame("Frame_3").Link("通用代码维").Click
Browser("BI@Report 2.0").Page("BI@Report 2.0").Frame("Frame_4").Link("返回到父页面").Click
作者: 陈能技    时间: 2008-7-18 15:27
原帖由 FLY000 于 2008-7-18 14:46 发表
因为我录制的时候会产生这样的代码,frame的名称好多,我觉得这样不好管理对象。

Browser("BI@Report 2.0").Page("BI@Report 2.0").WebElement("分析应用服务器").Click
Browser("BI@Report 2.0").Page("BI@Repo ...


在对象库中可手工调整对象的层次关系、重命名对象、删除一些“无用”对象



推荐新书《QTP自动化测试实践》
作者: peimzh    时间: 2008-7-18 15:44
你录制的脚本可能在多个frame上吧,所以会出现这么多的frame,楼上说的可以重命名,但是重命名后还是以前的对象没有区别。
作者: FLY000    时间: 2008-7-18 15:52
是啊,新增一个页面就是一个FRAME,如果我写代码的话,我怎么知道是新增到了第几个页面?就算知道,那么多页面也很难处理啊
作者: 没有蛀牙    时间: 2008-7-18 17:21
你用的是9.0以上的版本的话,对象库里支持修改对象层次的
作者: FLY000    时间: 2008-7-18 18:08
我不知道怎么把对象和代码分离,我现在写的代码还是用了对象库里的代码,只能做到的是读入excel的数据并作处理。

看过yabest写的一篇帖子,这个方法应该就是基于对象库的处理吧:
只录制一个按钮对象,它设有两个特征属性 label=OK, index=0
然后用下面的脚本,就可以完成测试
buttonNum = CInt(JavaWindow("Test").JavaEdit("Record Num").GetROProperty("value"))
For buttonIndex = 0 to buttonNum - 1
  JavaWindow("Test").JavaButton("Check").SetTOProperty("index", buttonIndex)
  JavaWindow("Test").JavaButton("Check").Click
Next
或者窗口上有New、Modify、Delete、Check等好几个按钮,要把这几个按钮一一按过去
我在对象仓库里只设置一个按钮对象AnyButton,label特征属性值填任意值,然后用下面脚本执行测试
JavaWindow("Test").JavaButton("AnyButton").SetTOProperty("label", "New")
JavaWindow("Test").JavaButton("AnyButton").Click

JavaWindow("Test").JavaButton("AnyButton").SetTOProperty("label", "Modify")
JavaWindow("Test").JavaButton("AnyButton").Click

JavaWindow("Test").JavaButton("AnyButton").SetTOProperty("label", "Delete")
JavaWindow("Test").JavaButton("AnyButton").Click

JavaWindow("Test").JavaButton("AnyButton").SetTOProperty("label", "Check")
JavaWindow("Test").JavaButton("AnyButton").Click
作者: FLY000    时间: 2008-7-18 18:19
这个方法是描述性编程:

另外,QTP还支持脚本描述的方法来定义和访问对象,即不需要在仓库里定义,也能访问和操作实际对象
( Written by yabest,http://www.yabest.net
如上面两个任务,可以如下实现
1. 不需要在仓库里定义Check按钮对象,直接用下面脚本来实现测试
buttonNum = CInt(JavaWindow("Test").JavaEdit("Record Num").GetROProperty("value"))
For buttonIndex = 0 to buttonNum - 1
  JavaWindow("Test").JavaButton("label:=Check", "index:="+CStr(buttonIndex)).Click
Next
2. 不需要在仓库里定义New、Modify、Delete、Check按钮对象,直接用下面脚本来实现测试
JavaWindow("Test").JavaButton("label:=New").Click
JavaWindow("Test").JavaButton("label:=Modify").Click
JavaWindow("Test").JavaButton("label:=Delete").Click
JavaWindow("Test").JavaButton("label:=Check").Click
--------------------------------------------------

不过我有点不理解的问题是,JavaWindow("Test").JavaButton("label:=New").Click,在写这句脚本之前,要不要这样定义:
lable=Description.Create()
lable("name").Value="New"
作者: zte_boy    时间: 2008-7-18 19:16
标题: 回复 14# 的帖子
你对描述性编程理解有错误
JavaWindow("Test").JavaButton("label:=New").Click本身就已经识别了JavaButton这个对象了
属性名就是label,而属性值则是New

lable=Description.Create()
lable("name").Value="New"
这个lable是个Description对象,其属性名是name,值是New
这是两回事
作者: 小孩    时间: 2008-7-19 02:38
现在WHO都说框架,我们到底了解框架多少,我们做出来的东西到底算不算框架呢!
作者: 小孩    时间: 2008-7-19 02:45
不过我有点不理解的问题是,JavaWindow("Test").JavaButton("label:=New").Click,在写这句脚本之前,要不要这样定义:
lable=Description.Create()
lable("name").Value="New"

一种是隐试描述性编程
一种是显试描述性编程
JavaWindow("Test").JavaButton("label:=New").Click
lable=Description.Create()
lable("name").Value="New" 改成 lable("label").Value="New"
JavaWindow("Test").JavaButton(lable).Click
他们就是一样的结果
作者: yabest    时间: 2008-7-19 03:17
原帖由 小孩 于 2008-7-19 02:38 发表
现在WHO都说框架,我们到底了解框架多少,我们做出来的东西到底算不算框架呢!


我的理解,框架就是一个自动化体系结构流程上的总体设计,使得自动化的开发、维护、使用更加简单高效

只要符合这些目的和要求,就可以说是框架啦。

因此框架的内容很多,框架的种类也很多。

正因为框架的内容和种类都很多,所以大家做出来的框架也都不大一样。

所以不用追究是不是框架,大家可以多研究研究框架一般需要包含哪些内容,哪种类型更合适。

[ 本帖最后由 yabest 于 2008-7-19 03:24 编辑 ]
作者: zte_boy    时间: 2008-7-19 10:18
框架这东西没有严格的定义,大家的理解不同要求不同,所以认同的框架也就不同
但是框架一般要实现一些内容:
1、高效的管理和调度测试脚本
2、如何更方便的对脚本进行扩展和维护
3、进行完整的错误处理和日志记录,包括错误日志和运行结果日志
4、如何让业务脚本开发人员的工作更加简单快捷
5、抽取出常用的公共函数
6、测试数据的管理和维护,甚至数据的自动生成
等等
作者: three116    时间: 2008-7-23 12:49
动手去实践吧 , LZ讲的东西是可以用的,我现在用到测试框架就是这种模式;
基于excel、对象库和测试脚本,excel记录各种测试数据、对象的名称等,对象库只是用例存储和识别对象的地方,而脚本则用例解析、驱动数据表示数据的执行;
而且以后维护起来比较方便,脚本是基本不用修改,只需要修改对象库和测试数据,能够快速适应测试需求。但是这里的脚本就像前面的人所讲到的,是要模块化的,分成一个一个单独的函数,然后各个函数进行简单组合,组成一个更高级的函数;最后写测试脚本的时候,只需要一段很短的脚本就能实现一种类型的测试;而这些是需要在实践中积累的,也与你测试的项目有关!
作者: sally_0817    时间: 2008-7-30 12:01
自动化框架,现在还觉得对这个概念有点迷茫,努力学习中......

看了大家的讨论也颇有收获......
作者: hhhsmileyangxue    时间: 2008-7-30 22:45
脚本驱动数据,数据在驱动脚本,如此循环,做得多了,就成了框架.呵呵~~~~~




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2