软件测试工具部分模拟笔试题-1205key
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Quick Test Professional模拟笔试题
一、简答题:
1、QTP有哪几种录制模式?
答案:正常录制模式、模拟录制模式(Analog Recording)和低级录制模式(Low Level Recording)。
2、LoadRunner和QTP的工作原理有何不同?
答案:
●LR: 基于协议的性能测试;QTP: 基于UI对象的功能测试。
●LR录制原理:捕获数据包。录制的前提是能识别协议报文;QTP 录制原理:消息机制,截获
消息。录制的前提是能识别控件。
●LR是性能测试工具,侧重的是压力,负载,容量,并发等测试;QTP是功能测试工具,针对
功能的测试。
●录制的协议不同。QTP是基于GUI的功能测试.QTP的录制和回放都是真实的操作客户端程序
的各种GUI控件,回放时会真实启动客户端程序. 而LR只是录制了客户端和服务器之间的通信数据,回放时只是这些通信的数据。而QTP不启动客户端程序.就无法对客户端界面控件进行验证,失去GUI测试功能。
●比如,注册一个论坛,QTP在回放脚本的时候会输入每个基本信息的动作,然后发送这个表单
到服务器,而LR录制的是通信协议,就不会回放输入每个基本信息的动作了,而是直接把已经保存的表单信息直接打包发送到服务器。
[附:LoadRunner和QTP的工作原理]
QTP里的对象有两个概念,一个是Test Object(简称TO),一个是Runtime Object(简称RO)。TO就是是仓库文件里定义的仓库对象,RO是被测试软件的实际对象。QTP识别对象,一般是要求先在对象仓库文件里定义仓库对象,里面存有实际对象的特征属性的值。然后在运行的时候,QTP会根据脚本里的对象名字,在对象仓库里找到对应的仓库对象,接着根据仓库对象的特征属性描述,在被测试软件里搜索找到相匹配的实际对象,最后就可以对实际对象进行操作了。
loadrunner会自动监控指定的URL或应用程序所发出的请求及服务器返回的响应,它做为一个第三方(Agent)监视客户端与服务器端的所有对话,然后把这些对话记录下来,生成脚本,再次运行时模拟客户端发出的请求,捕获服务器端的响应。
3、测试计算器时,如何加入所有控件?怎样将加入的控件导出,以便下次再用?
答案:1)加入所有控件方法:打开QTP,点击Resources菜单->object Repositories(对象库)->add object(手型图标点击计算器的标题) ->all object types->ok;
2)将加入的控件导出可以使用共享对象库功能,点击当前object Repositories ->File ->点击Export local Objects,可将当前对象库导出成扩展名为.tsr共享对象库,以供其他脚本或其他Action使用。
4、QTP中global 和 local 的区别?两者的迭代次数分别在哪里设置?
答案:global 是全局的,有几行数据程序就要回放几次,不能重新设置。
local 是局部的,有几行数据action 就要回放几次。
设置action的重复次数的操作:单击action,选择action call property,即可进行选择.
设置global的重复次数的操作:File-> Setting->Run
5、用QTP录制脚本后如何修改脚本能够增加其灵活性?
答案:1)数据驱动测试(使用QTP的Data Table参数化、Action参数化、环境变量参数化等脚本参数化的方法。)
2)将可重用的操作抽象出来,封装成方法,这样通过传递不同的操作我们就可以完成不同的软件行为;(Action的复用)
3)将测试脚本与测试数据文件分离开来,这样一个脚本就可以驱动不同的测试数据进行测试;
4)在对象识别上,应该将对象识别的过程和对象的特征相分离。避免将所有的脚本都线性化的写到一起,提高脚本的可维护性。
6、QTP中Object Spy的作用?能否用它来添加对象,如果可以说明步骤,如果不可以请说明如何添
加。
答案:QTP中Object Spy作用:查看对象,在查看窗口里有列出这些接口,包括属性和方法。但Object Spy不可以添加对象。添加对象的方法是:
Resources->object Repository ->add Objects to Local ->通过“手指”图标查找自己要添加的对象,进而添加到对象库。
7、如何修改共享对象库中的值并使之生效?
答案:方法一:打开QTP,点击Resources菜单,进入Object Repository,右键点击要修改的共享对象库的对象,并点击copy to Local,然后可以进行相应的修改。
方法二:通过对象库管理器进行修改,在管理库中选择共享对象库文件,进行编辑修改。
8、Action1中参数传递到Action2中有哪几种方式,请分别加以说明。
答案:共有三种方式,1)通过DataTable共享,DataTable对于每个Action都是可见的,如通过全局数据表(Global Data Table)来共享数据;
2)通过环境变量共享,环境变量也是Test工程的共享变量。如自定义一个环境变量name,并为其赋值,则Test中不同Action都可以使用该参数;
3)通过Action Parameters的参数传递,对Action的属性设置和对调用的属性设置来进行参数传递,只有有调用关系才能共享。如:在Action1中执行如下语句:
RunAction "Action2", oneIteration ,Value
并进行相关参数设置,可实现对Action2的调用。
9、正则表达式:\(?0\d{2}[) -]?\d{8}表示什么内容?
答案:表示国内电话号码。
其中\表示转义(,?表示前面字符出现0-1次,d{2}数字重复两次,[) -]?表示方括号中连字符出现0-1次,\d{8}表示0-9的数字重复出现8次。
10、[QTP]请将下面操作用另外一种描述性编程实现(通过Description对象): Window("Error").WinButton("text:=OK", "index:=1").Click
答案:
Set MyDescription = Description.Create()
MyDescription("text").Value = "OK"
MyDescription("index").Value = 1
Window("Error").WinButton(MyDescription).Click
Set MyDescription = Nothing
二、脚本开发题
1、录制QTP自带软件Flight4a系统的订票功能,要求:对所订机票的机舱类型进行参数化,即实现
定购如下图所示3张不同机舱类型(如图)的飞机票,如何实现?
答案:参见tests中的(参数化不同机舱,描述性编程机舱,属性不同机舱)
2、如果运行Fight4a的登录脚本前(脚本中需要QTP自动打开登录框),被测对象已经存在多个了
(如图),这将导致后续步骤出错,如何能够先将已经打开的登录框关闭再执行登录呢,请将脚本中关闭多余登录框功能补充完整。
Dim login0
Set login0=Description.Create()
login0("text").value="Login"
Set T=Desktop.ChildObjects(login0)
For i=0 to T.count-1
T(i).close
Next
3、如果将DataTable中原本写在Global的参数改写在Action中,则需要加上怎样的代码达到原来
的迭代效果?注:Action1迭代设为一次