QTP脚本设计与框架有关问题答疑

2012-02-17  邓智群 

1、生手 如何快速掌握该工具呢?

  A:这个问题可推广为如何开始学习一个自动化测试工具

  开始前必须理解的两个问题:

  1)仅仅录制是不够的

  2)并不是每个人都可以做自动化测试

  理解了前面的两个问题之后,才开始学习一个工具:

  1)阅读工具的帮助文档

  2)熟悉编程语言

  3)参加网上的论坛

  4)找个小项目练手

  5)找人做脚本的审查

  6)使用工具附带的一些样例代码

  最后注意:

  1)如果你连变量和常量、整型和浮点型、函数、方法这些都没弄懂的话,请再三考虑是否要开展自动化测试。

  2)如果你不理解或者不愿意用loop、while、for、until等循环语句、if、switch、select等条件语句的话,你将碰到很多问题。

  3)如果你不理解类、对象、函数、方法,或者喜欢到处用全局变量的话,你的脚本将很难采用面向对象的思想,脚本可以工作,但是不容易理解。

  4)如果你不喜欢测试过程,只喜欢开发不喜欢测试的话,请再三考虑要不要开始学习自动化测试。

  2、测试脚本应该也是重复性工作,那有什么好用的测试用例库建立、管理软件?主要是想知道一下脚本构件库,脚本复用的问题!

  测试脚本要是也像软件工程一样,也应该有一个设计模式的,不管是工厂模式、适配器模式还是其它等等,脚本有建立构件库吗??

  A:没错,测试脚本的开发也有很多重复性的工作,因此要善于重用脚本。至于测试用例的建立和管理,如果QTP与QC(Quality Center)整合的话就比较方便地实现了,在QC中不仅可以管理手工测试用例,而且使用BPT(Business Process Testing)自动化测试框架或者思想,可以有效整合QTP,实现自动化脚本的创建、实现和执行过程的统一管理。

  自动化测试脚本的开发与软件代码开发有很多思想是一致的,开发倡导设计模式的应用,自动化测试也倡导脚本设计模式,例如函数库结构、数据驱动结构、关键字驱动结构...

  3、想通过QTP录制上面的脚本后,让QTP实现自动的点击上面的10个链接,不会人来点击。不知道有什么好的办法吗?

  A:QTP录制脚本后,在执行过程中基本上可以如实地回放你录制的脚本,例如你录制脚本时点击了页面上的10个链接,那么回放脚本时也会点击这10个链接。

  4、请老师解释下描述性编程的原理吧

  A:描述性编程其实没什么神秘的。要理解描述性编程,首先要理解QTP的对象库。QTP录制脚本会把录制过程中碰到的界面对象存入对象库(Object Repository)中,你如果打开对象库(Resources->Object Repository...)查看的话,就会发现,对于每一个对象,QTP把用于识别该对象的属性记录起来了,例如对于一个窗口,一般会记录这个窗口的类型、标题等能唯一识别出该窗口的信息,这样QTP在回放脚本时,就会依据这些信息寻找和辨认出界面上的对象。

  而描述性编程就是将对象的识别信息从对象库中挪到脚本中直接描述,例如:

  Browser(“Mercury Tours”).Page(“Mercury Tours”).WebEdit(“Name:=Author”, “Index:=3”).Set

  “Mark Twain”

  其中的“Name:=Author”, “Index:=3”就是对象描述信息,本来是存储在对象库中的,现在放到脚本中直接描述了。

  描述性编程可以让我们更加灵活地控制对象的描述属性,这在一些动态变化的对象处理时比较有用。

5、对于不识别的控件一般如何录制或修改?

  对于有一些公司自己开发的控件,在录制过程中抓不到任何东西,使用模拟录制和低级录制也抓不到的话,如何保证录制脚本的完成性?后期如何完善?

  A:很多第三方控件或自定义的控件都不被QTP默认支持,例如.NET的ComponentOne控件中的Menu、ToolBar等控件都不能被QTP很好地识别。解决这种问题的办法有很多,包括:

  1)如果插件支持访问对象的内部属性和方法,可以编写脚本通过.Object接口访问对象,从而控制对象

  2)如果插件支持扩展,例如.NET、Java、Delphi、Web都支持插件扩展,则可以通过插件扩展开发包进行对象的录制、回放功能的扩展

  3)通过控制鼠标、键盘来控制这些控件三种方法可综合应用,在我的书《软件自动化测试成功之道》介绍的QTestWare就是解决这些问题的一个对象级框架

  6、关键字驱动的概念

  qtp上的图标显示是关键字驱动的,关键字驱动的概念是什么?和数据驱动有什么区别?

  A:QTP提供了一个名为关键字视图的脚本编辑界面,支持以表格的方式编辑测试步骤的关键字,包括:测试对象的选择、对象方法的选择、测试数据的输入,这样每一行编辑出来就是自动化测试用例中的一个步骤。

  关键字驱动框架一般有一个专有的引擎,用于解析表格中的各个关键字(例如测试对象、测试方法、测试数据等),解析成测试脚本,然后执行,关键字驱动框架有利于测试脚本编写人员以一种更为抽象和简洁的方式编辑脚本,关键字的抽象提高了脚本重用度。

  数据驱动框架重点关注测试步骤的重用,相同的测试步骤迭代运行多次,每次采用不同的测试数据作为输入,大大提高了测试覆盖率的同时,也大大降低了测试脚本的冗余度。

  7、qtp的视频教程 基础方面的那里有啊

  A:51Testing软件测试论坛里有QTP视频教程:http://bbs.51testing.com/viewthread.php?tid=162777&highlight=QTP%2B%2Bhouzeal%2B

  8、在QTP中如何设置使用其他浏览器?例如XP系统,用IE访问程序时,每次总提示屏蔽安装ActiveX插件,需要手动安装.但把这个过程录制到QTP后,回放一次是成功的。当我给某个输入框参数化了好多数据后,回放过程中,某些就会失败。这是怎么回事?

  A:QTP支持IE和Firefox浏览器,QTP11之前的版本只支持IE录制,IE和FF回放,QTP11的版本也支持FF录制了。

  由于提示ActiveX插件的处理动作被录制到脚本中了,所以回放时会处理一次,之后迭代执行参数化的其他数据时,重复脚本的步骤,而这时候ActiveX插件已经处理过了,代码跑到这里就会失败,所以解决办法有两个:

  1)在脚本中加入判断语句,判断ActiveX插件提示是否存在,如果存在才执行处理代码

  2)设置IE浏览器不提示ActiveX的安装

  9、checkpoint 检查网页,是否能实现,只要网页出现乱码就返回错误报告?

  A:这要看你出现乱码的检查依据是什么,人很容易看出页面是否出现乱码了,但是工具很难。

  10、qtp是唯一的 自动测试软件吗?

  A:不是,RFT、TestComplete、SilkTest...都是自动化测试工具,但是目前市场占有量最大的还是QTP,用得人最多

  11、请针对QTP分别录制脚本后合并执行出错的问题讲解下,谢谢。

  A:主要操作为:分别录制某大功能下的子功能三个,然后合并为一个执行,(单独执行各子功能时正常)遇到程序弹出窗口时就报:无法继续执行的错误,请帮忙解决下,谢谢。

  这个问题我在第一期QTP视频问答中提出,但是没有得到满意的回复,还请关注,谢谢。

  这个一般要看到具体错误提示、具体代码和被测试的软件才好回答。请调试你的代码,看是在那行出错了。一般是由于前面执行的脚本修改了某些数据,导致后面的脚本执行条件或环境发生了改变导致的,例如没有去到指定的界面,测试对象没有出现或识别出来。

 

5、对于不识别的控件一般如何录制或修改?

  对于有一些公司自己开发的控件,在录制过程中抓不到任何东西,使用模拟录制和低级录制也抓不到的话,如何保证录制脚本的完成性?后期如何完善?

  A:很多第三方控件或自定义的控件都不被QTP默认支持,例如.NET的ComponentOne控件中的Menu、ToolBar等控件都不能被QTP很好地识别。解决这种问题的办法有很多,包括:

  1)如果插件支持访问对象的内部属性和方法,可以编写脚本通过.Object接口访问对象,从而控制对象

  2)如果插件支持扩展,例如.NET、Java、Delphi、Web都支持插件扩展,则可以通过插件扩展开发包进行对象的录制、回放功能的扩展

  3)通过控制鼠标、键盘来控制这些控件三种方法可综合应用,在我的书《软件自动化测试成功之道》介绍的QTestWare就是解决这些问题的一个对象级框架

  6、关键字驱动的概念

  qtp上的图标显示是关键字驱动的,关键字驱动的概念是什么?和数据驱动有什么区别?

  A:QTP提供了一个名为关键字视图的脚本编辑界面,支持以表格的方式编辑测试步骤的关键字,包括:测试对象的选择、对象方法的选择、测试数据的输入,这样每一行编辑出来就是自动化测试用例中的一个步骤。

  关键字驱动框架一般有一个专有的引擎,用于解析表格中的各个关键字(例如测试对象、测试方法、测试数据等),解析成测试脚本,然后执行,关键字驱动框架有利于测试脚本编写人员以一种更为抽象和简洁的方式编辑脚本,关键字的抽象提高了脚本重用度。

  数据驱动框架重点关注测试步骤的重用,相同的测试步骤迭代运行多次,每次采用不同的测试数据作为输入,大大提高了测试覆盖率的同时,也大大降低了测试脚本的冗余度。

  7、qtp的视频教程 基础方面的那里有啊

  A:51Testing软件测试论坛里有QTP视频教程:http://bbs.51testing.com/viewthread.php?tid=162777&highlight=QTP%2B%2Bhouzeal%2B

  8、在QTP中如何设置使用其他浏览器?例如XP系统,用IE访问程序时,每次总提示屏蔽安装ActiveX插件,需要手动安装.但把这个过程录制到QTP后,回放一次是成功的。当我给某个输入框参数化了好多数据后,回放过程中,某些就会失败。这是怎么回事?

  A:QTP支持IE和Firefox浏览器,QTP11之前的版本只支持IE录制,IE和FF回放,QTP11的版本也支持FF录制了。

  由于提示ActiveX插件的处理动作被录制到脚本中了,所以回放时会处理一次,之后迭代执行参数化的其他数据时,重复脚本的步骤,而这时候ActiveX插件已经处理过了,代码跑到这里就会失败,所以解决办法有两个:

  1)在脚本中加入判断语句,判断ActiveX插件提示是否存在,如果存在才执行处理代码

  2)设置IE浏览器不提示ActiveX的安装

  9、checkpoint 检查网页,是否能实现,只要网页出现乱码就返回错误报告?

  A:这要看你出现乱码的检查依据是什么,人很容易看出页面是否出现乱码了,但是工具很难。

  10、qtp是唯一的 自动测试软件吗?

  A:不是,RFT、TestComplete、SilkTest...都是自动化测试工具,但是目前市场占有量最大的还是QTP,用得人最多

  11、请针对QTP分别录制脚本后合并执行出错的问题讲解下,谢谢。

  A:主要操作为:分别录制某大功能下的子功能三个,然后合并为一个执行,(单独执行各子功能时正常)遇到程序弹出窗口时就报:无法继续执行的错误,请帮忙解决下,谢谢。

  这个问题我在第一期QTP视频问答中提出,但是没有得到满意的回复,还请关注,谢谢。

  这个一般要看到具体错误提示、具体代码和被测试的软件才好回答。请调试你的代码,看是在那行出错了。一般是由于前面执行的脚本修改了某些数据,导致后面的脚本执行条件或环境发生了改变导致的,例如没有去到指定的界面,测试对象没有出现或识别出来。

转自 51testing.com

369°/3695 人阅读/0 条评论 发表评论

登录 后发表评论