QTP软件测试工具QTP脚本设计与框架有关问题答疑

Posted 织雀教育

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QTP软件测试工具QTP脚本设计与框架有关问题答疑相关的知识,希望对你有一定的参考价值。


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

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


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


1)仅仅录制是不够的


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


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


1)阅读工具的帮助文档


2)熟悉编程语言


3)参加网上的论坛


4)找个小项目练手


5)找人做脚本的审查


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


最后注意:


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


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


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


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

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

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


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


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

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

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

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

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”就是对象描述信息,本来是存储在对象库中的,现在放到脚本中直接描述了。


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


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

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


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


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


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


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


关键字驱动的概念

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


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


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


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

qtp的视频教程基础方面的哪里有啊?

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

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

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


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


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


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

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

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

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

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

请针对QTP分别录制脚本后合并执行出错的问题讲解下?

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


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


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

最近也在温故QTP知识,请问陈老师在QTP中Wait与同步点的区别是什么?

A:Wait是暂停脚本的执行一段时间,而同步点的目的是为了让QTP在指定时间内检查对象是否达到某个状态,具体可查看QTP的帮助文档:


If you do not want QuickTest to perform a step or checkpoint until an object in your application achieves a certain status, you should insert a synchronization point to instruct QuickTest to pause the test until the object property achieves the value you specify (or until a specified timeout is exceeded).

在QTP录制好脚本后,在Keyword view 点某一页面,总出现提示框.提示内容为"当前安全设置禁止运行该页上的ActiveX控制。因此,该页可能无法正常显示",请问在QTP中是否在哪里可以设置,将其提示去掉呢?

A:你是指IE浏览器中出现这个提示还是QTP中出现这个提示,如果是IE浏览器出现这个提示,应该设置IE浏览器的安全级别。如果是在QTP的Active Screen中出现这个提示,应该设置Tools->Options中的Active Screen,选择“Load ActiveX controls”

QTP能否改为录制遨游或者360这类的浏览器呢?在IE上录制,经常出现莫名其妙的问题,烦死了!不知能否换成在其他浏览器上录制呢?可以的话,如何设置?谢谢!

A:QTP不支持IE之外的其他浏览器的录制,最新版本的QTP11支持Firefox的录制

QTP录制支持flex3的脚本,在QTP中好不容易可以正常运行了。但是放到LR中运行,总会报下面这样的错误:Error: Line(8): Failed to run the test due to an unknown error.大家有没有遇到这样的问题??还请陈老师指点!

A:为什么要在LR中运行QTP的脚本?QTP录制的脚本是跟界面相关的,如果放到LR中调用就要注意GUI界面的相关问题了。

老师您好:如题,如何解决对象无法识别的问题?

A:对象识别问题一般分几种情况处理:


1)对于WEB页面,通过DOM访问WEB元素的内部属性和方法


2)对于.NET、JAVA、VB等控件,通过QTP测试对象提供的Object接口访问内部属性和方法,例如:Swfobjct("xxx").Object.


3)通过DeviceReply对象控制鼠标和键盘,发送快捷键等方式控制被测试的对象


4)通过插件扩展开发包开发插件扩展支持控件的录制和识别


QTP中如何参数化link?

A:在对象库中把Link对象的text等属性参数化,例如从DataTable中读取参数值或者用描述性编程,用ChildObject获取页面中所以Link类型的对象,然后逐一处理每个链接对象

怎么很好利用qtp呢?

A:QTP是一个自动化测试工具而已,是为自动化测试服务的,因此重点要掌握自动化测试的原理、思想,结合项目实际制定测试脚本开发和设计规范,采用合理的自动化测试框架

为什么要在LR中运行QTP的脚本?

A:一般比较少在LR中调用QTP的脚本,因为QTP大部分测试的是界面的东西,LR测试的是协议层的东西,当然也会有这种使用场景,就是通过LR分布式地调用QTP执行某些功能来对服务器同时施加压力。 


QTP运行中无法识别对象怎么办吖?

A:具体问题具体分析,一般要分开两部分:


1)QTP本身就没能成功识别对象,而不是在运行中无法识别,这个可以通过Object Spy来确认一下


2)录制和回放都识别出对象了,但是某些场景下执行脚本的时候,提示对象不存在或者未处于激活状态,这种情况一般是由于运行过程中被测试的对象没去到指定的界面,QTP所操作的对象不存在或被挡住了导致的,这时候就要分析为什么会这样,是程序错误,还是数据问题,还是QTP脚本本身缺乏必要的判断


以上是关于QTP软件测试工具QTP脚本设计与框架有关问题答疑的主要内容,如果未能解决你的问题,请参考以下文章

功能测试工具QTP & 性能测试工具LoadRunner使用总结

QTP自动化测试从零基础到精通进阶(脚本测试VBS语法描述性编程测试框架)

Qtp自动测试工具(案例学习)

测试_QTP使用实例

QTP - 工作原理

selenuim,qtp,loadrunner,jmeter有何区别,想学个脚本语言python和测试工具应该从哪里入门呢。