51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1991|回复: 0
打印 上一主题 下一主题

[原创] QTP中三种编程方式介绍及一些总结

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-8-28 21:41:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  QTP自动化测试工具有三种编程方式:
  非描述性编程、纯描述性编程和description描述性编程。
  非描述性编程:模拟用户操作,保存操作对象到对象库,测试脚本运行时从对象库查找对象,找到后,对对象执行某种动作的过程。
  纯描述性编程:描述唯一识别对象的属性值,保存脚本时,对象被保存到临时文件,测试脚本运行时从临时文件中查找对象,找到后,对对象执行某种动作的过程。该方法增强了测试对象的灵活性和重用性。
  Description描述性编程:当对象库中找不到指定对象时,或相同属性的对象存在二个或二个以上,无法精确定位到目标对象时,可采用description描述性编辑,描述对象独有的属性值(比如使用:index0,index1,index2…..方法定位到目标对象,index0表示找到第一个符合条件的对象)。
  QTP脚本开发工具和其他开发工具的共同点和异同点:
  共同点:按照面向对象的开发思想和方法,可以对常用对象及操作(如login, exit, DBConnection Methods)封装成Function或sub,调用Function方法的函数名实现目标方法。
  异同点:QTP有以下特有的函数方法:
  Datatable方法:实现对象的参数化功能。
  1.   使用GetRowCount Method得到参数的行数。
  2.   For循环语句控制运行次数。
  3.   循环结束时,使用GetRowCount Method当前行数+1,第二次循环获取第二行参数值。
  4.   对象可以用一个变量a替换,将Datatable的参数赋值给变量a,需要参数化的对象位置输入a即可。
  使用例子如下:
  pic=datatable.Value(”宝贝图片“,”Global”)
  browser(”CRM登录页面“).Dialog(”选择文件“).WinListView(”SysListView32″).Select pic
  注意:变量不能带引用
  Webtable方法:
  1.GetRowWithCellText:返回text内容在第几行
  2.GetCellData:根据行和列返回参数值
  使用例子如下:
  a=datatable.Value(”B”,”Global”)
  rownumber=browser(”淘我喜欢“).Page(”淘我喜“).WebTable(a).GetRowWithCellText(names,2)
  status=browser(”淘我喜欢“).Page(”淘我喜欢“).WebTable(a).GetCellData(rownumber,4)
  3.先找对象之间的关联关系,根据一个属性的属性值,找到目标对象或目标属性值,
进行目标动作。
  GetROProperty方法:得到脚本运行时的对象属性值,访方法经常和条件判断语句结合使用使用场景的例子如下:
  1.       如需校验界面信息是否为期望值时,先得到对象的属性值,然后与另一个参数值进行比较,相同返回pass,不相同返回fail。
  2.       某些对象属性是动态变化的,当对象a的状态为true时,对象B的状态是true,反之为flase;运行flase状态的对象脚本将会抛错,因此需要基于当时的情况,决定下一步执行怎样的操作。
  StrComp function方法:比较二进制或text格式字符串的长度。校验界面值时很有用哦,有时经常遇到显示看起来一致,但实际存在数据类型和前、后空格的差异,使用该方法会返回比较结果值。该函数语法请查看QTP帮助文档。
  还有很多很多的方法需要了解,因为时间关系大概知道这些。
  只需了解方法的用处,相似方法之间的区别,函数语法记不往没大关系,脚本开发过程中查帮助文档很管用的。
  掌握排错方法也很重要,只要是人写的代码,都有出错的可能,很难达到机器的精确度,出了问题学会排查问题:
  1.  学会使用检错和单步调试定位问题。
  2.  调试时,指定当前行开始运行,运行到当前行结束。
  3.  根据需要设断点,切换到脚本编辑器下方的debug viewer-variables窗口,查看测试运行时输出的参数值。
  Object repository manager工具:
  1.  对象文件的合并,为了实现对象的统一管理,所有测试脚本均使用一个对象文件,有利于提高脚本的编写和维护效率。如果有多个对象文件,容易造成对象文件混乱,分不清用到的对象到那个对象文件查找。
  2.  Vbs对象和脚本对象的区别,vbs函数本身不带对象,函数调试时,将函数文件拷贝到测试脚本中,使用的是测试脚本的对象,而非函数的对象。因此FUNCTION函数页面,找不到测试脚本中定义的对象。
  3.  对象库有啥用处?用于保存对象信息。
  4.  每个对象都有唯一识别对象的属性,Object Spy工具用于观察运行时测试对象的属性和方法。
  5.  非描述性编程方式,模拟用户操作,保存操作对象到对象库,保存后的对象可以手工挪动位置,但是目标上层对象的属性和原上层对象的属性不一致时,不能合并,如果合并将出现 browser().page()下面的对象识别不到,脚本运行时,将提示测试对象未定义信息。
  Function library和Function defineition generator的区别:
  1.Function library:把函数保存到QTP能够解析的Vbs文件中,测试脚本开发时,调用函数名即实现函数方法。
  2.Function defineition generator:通过该工具生成函数脚本模板,插入到测试脚本中使用,和调用函数的效果是一样的。生成器生成的函数模板如下:
  ‘@Description登录我的淘宝
  Public Function login
  ‘TODO: add function body here
  —增加对象及操作脚本
  End Function
Trackback:http://bbs.qtpfuns.com/read.php?tid=589

[ 本帖最后由 474241558 于 2010-8-28 21:46 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-8 16:57 , Processed in 0.070638 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表