在针对C/S结构的信息系统进行性能测试的时候,因为客户端实现机制的不同,往往会遇到很多棘手的问题。采用何种测试方法进行测试就是一个首先必须解决的问题,往往很多测试工程师都感到非常困惑。
在进行了一番技术研讨之后,在本文的案例中,对于C/S信息系统进行性能测试的时候,采用的是自动化性能测试工具LoadRunner调用自动化功能测试工具Quick Test Professional脚本的方法实现性能测试。其实,对C/S结构信息系统进行测试的时候,重点不在使用LR,而在于熟练使用QTP,本文正是在总结项目经验的基础上,深入探讨了使用QTP的多个关键技术问题,愿与业内同行进行深入探讨,共同提升测试能力。
1、QTP无法捕捉到菜单栏对象
问题描述:用鼠标正常点击菜单栏,但是QTP捕捉不到菜单栏
解决方法:这是属于对象不识别的问题,当鼠标点击菜单栏的时候,把对象识别的方式换成低级录制方式就可以捕捉到了。(这是QTP对象识别的第一法宝)
2、用QTP捕捉对象时,鼠标操作不起作用了
问题描述:厂商进行了二次开发,但是所开发的子窗口,用鼠标在菜单栏里打开,QTP根本捕捉不到这个新对象。
解决方法:换一种方式,不用鼠标,用键盘来捕捉!用键盘的上下键移动到相应要打开的地方,用Enter键就可以了,这样便可以捕捉到对象了,而且还不容易出错。(这是QTP对象识别的第二法宝)
3、弹出窗口后,QTP无法捕捉弹出来的窗口对象
问题描述:窗口弹出来了,但是点击其中Button后,QTP无法捕捉对象。
解决方法:在回放中发现,弹出的二次开发窗口并没有激活,界面呈灰色,所以在脚本录制时,弹出窗口后,先用鼠标点击一下窗口以便激活窗口。这样在回放的时候就可以看到窗口被激活了。里面的对象也随之可以识别了。
4、QTP当从对象模式换成低级录制模式的时候引起变化
问题描述:在录脚本过程中,采用的是对象识别模式,但是当需要换成低级录制模式时,这时候需要鼠标点击QTP,选择低级录制模式,然后再点击被测软件,其实这些操作都已经被记录到脚本里了,有时还引起了被测软件发生变化,给录制脚本带来很多麻烦。
解决方法:这个问题是一个需要注意的问题,在我们录脚本过程中,当需要从对象模式转换成低级录制模式时,用Alt+Tab键就可以了,不要再点击QTP,然后再点击被测程序了,这样会增加很多步骤,回放脚本的时候也容易出错,用Alt+Tab键最灵活也最方便。
5、在QTP的对象库里添加对象,用“小手”进行对象识别时,没办法进行操作软件了
问题描述:用Spy进行对象识别的时候,鼠标会变成“小手”,可是我要捕捉的是对象里面的对象,比如帮助下拉菜单里的子项,没法操作,也就抓不到对象。
解决方法:这个问题属于一个技巧性的问题,解决的方法是:在“小手”的情况下,按Ctrl键,“小手”自然就变成鼠标,和平时操作一样了,操作之后就可以捕捉我们想捕捉的对象了。
6、QTP的自动化脚本录完了,可是还想增加检查点,怎么办?
问题描述:脚本已经录制完成了,可是在当天新的测试规范中需要加入新的检查点,怎么办?我想加检查点,可是发现QTP中加检查点的那一项是灰色的,以我的经验我知道这是需要在录制脚本过程中才能加检查点的,难道重新录制脚本?
解决方法:加检查点,不需要重新录制脚本,有三种灵活的方法:第一种,点击脚本的不同步骤,在Active Screen中,可以发现被测程序的截图,如果你要加检查点的控件在这个截图中,那么你用鼠标点中这个控件,右键,会发现有让你加检查点的选项,这样就可以加检查点了;第二种,当你发现在程序截图中没有你要加检查点的控件,如果在上下文中有过同样控件的检查点,那么你把该语句直接拷贝过来,然后把该检查点的属性改成你想做的操作就可以了;第三种,如果前两种方法都不行,那你也不必重新录制脚本。你在要加检查点的步骤的上一步设个断点,回放脚本让程序运行到这个断点,然后停掉脚本,然后重新录制脚步,注意,这可不是重新录制,而是中间录制,这个方法太灵活了,然后像真正录脚本一样,加入你想加的检查点就OK了。
7、QTP自动化脚本的检查点的类型很多,如何选择?
问题描述:有标准检查点,有图片检查点,文本检查点,这么多类型该怎么选择?
解决方法:一般情况下,用标准检查点就可以了。文本检查点是检查在屏幕上、窗口上、Web页面上的文本,一般是针对附带环境里的文本。如果是小图片的话,可以用图片检查点。
8、QTP脚本回放一直报错,出现对象属性不匹配的问题
问题描述:脚本回放之后报错,看错误信息,发现好像是对象属性不匹配的问题引起的错误。
解决方法:这个问题是比较深刻的,需要对QTP的对象识别原理有一定的认识。QTP有一个对象库,把所有识别的对象都放到了这个库里,在这个库里每个对象又有相应的属性,在回放的时候就是通过比对这些属性来识别不同的对象。这里报这个属性不匹配的错误,你需要把对象库里的对象调出来,然后用“小手”去查看运行界面中的相同对象,你会发现,这两个对象的属性不一样。也就是说,每次当程序运行到这个时候,这个控件的这个属性都会发生变化,就好比LR录制脚步中的Session,每次运行,系统都会分配一个新的值,这里的控件也是同样的道理。你要做的第一件事就是找到有哪些属性不匹配,你就在QTP的对象库中把它删掉,运行一下看看。如果系统又报错,说不止有一个对象是你想要的对象,说明,你删了属性,但是这些多个控件就无法区分了,你需要再增加一些新的属性,使不同的控件有个区别,这样应该就可以了,脚本就可以顺利运行了。(QTP对象识别的第三法宝)
9、C/S录脚本最重要的地方
C/S录脚本最总要的地方,莫过于对象识别的问题了,对于这个问题,在上面也提到过,这里做个总结,无过于这三大法宝:第一,对象识别的模式换成低级录制的模式;第二,对象识别的模式换成键盘识别的模式;第三,属性不匹配,就增删一些属性就可以了。
10、Studio开启状态,脚本回放错误
问题描述:在厂商的Studio环境开启情况下,录脚本或回放脚本,报错。
解决方法:这种情况下,需要把厂商的Studio环境关闭,不能在开发状态下录脚本或回放脚本,会报错的。
11、QTP脚本中加事物点的位置要求变动
问题描述:在新的测试规范里,要求变动事物点的位置。
解决方法:这个问题的解决体现了QTP灵活编辑脚本的功能,不需要重新录制脚本了,只需要在脚本中,找到需要加事物点的步骤,然后把脚本中事物开始和结束的脚本语句剪切过去就行了。
12、QTP脚本录制完了之后,是非常有必要进行优化的
问题描述:仔细观看自己录制好的脚本发现,比如在text框中输入值的时候,会看到输了一个“5”,然后又删了“5”改成了“6”。
解决方法:这个问题就反应出,在脚本录制过程中难免会有一些失误,脚本虽然录制完了,但是还需要优化!针对上面这个例子,就需要在脚本中把多余的步骤删掉,以优化脚本,提高脚本的性能。
13、实现C/S并发测试的机理
问题描述:因为用LR录C/S脚本,在Socket的协议下,脚本没有可读性,所以为了实现C/S的并发测试,采用LR调QTP脚本进行并发测试的方法。可是一台机器只能开一个QTP,如果要并发100,难道找100台测试机吗?。
解决方法:不是的,这里采用善巧的方法,那就是采用Windows Server 2003的系统,在一台机器上开多个远程桌面,解决测试机不足的问题,虽然说效率以及真实性会有一定的质疑,但是这已经是很好的方法了。
14、怎样让QTP脚本循环多次?
问题描述:LR中可以设置Run Logic的次数,但是怎样让QTP脚本也有这个循环的功能呢?
解决方法:QTP脚本中,在最开始和最后加进入for循环语句,就OK了,目前使用的是加语句的办法。
本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/