初学QTP的一点总结

发表于:2009-8-03 17:08

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:bichai    来源:Taobao QA Team

  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

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号