QTP是一款功能自动化测试工具,而页面加载时间或响应速度应该是性能测试的事情,其实QTP也可以实现对页面加载时间的统计功能。因为QTP使用的是VBS脚本,VBS脚本的强大之处在于它可以调用任何windows的COM组件和对象。那么问题解决的思路就很简单了,就是我们要利用VBS获取 IE网页,并统计网页加载的时间。
分析很简单,但是在实现上却有几个技术问题:一、如何使用VBS分析网页。我们知道网页技术是基于DOM模型的(也不知道这么说是不是准确),那么只要我们能用VBS调用DOM下的document对象,那么我们就可以使用document的方法来实现我们的要求;二、如果能实现对DOM的调用,我们如何统计页面加载的各个阶段的时间,通过查阅资料可以知道,在document中有一个readystate方法,该方法共有五个返回值,分别对应网页初始化到网页加载完毕五个阶段,我们可以利用该方法实现我们的要求。
实现的思路如下:
1、利用createobject创建一个IE的实例,以访问document对象;
2、利用document对象的readystate属性获取网页加载时各个阶段的时间,
3、利用timer()实现对毫秒的统计。timer()函数的作用是统计从午夜时间到当前时间所过去的秒数,我们用两个timer值想减就可以得到两个时间点之间相隔的毫秒数。
4、为了方便调用,将时间统计的代码封装成一个函数。
最后代码如下:
'在loadrunner脚本中,把要访问的url做参数化,变量名为SITEURL '方法定义开始 Case 0 'IE未初始化,其实在该方法,readystate=0无意义,因为循环至少是从1开始的. Case 1 '"正在发送请求" Case 2 '"请求已经发送完成" Case 3 '"可以接收到部分响应数据" Case 4 '"页面加载完成" End select timeCount = "统计开始时间:"&start_time&vbcrlf&"time0:"&time0&vbcrlf&"time1:"&time1&vbcrlf&"time2: |
本文出自dreamever的51Testing软件测试博客:http://www.51testing.com/?31621
代码中的SITEURL就是我们要进行测试的页面。
这段代码虽然不长,但是却花了我整整4个小时的时间。一开始碰到的难题就是不知道VBS如何去调用document方法,在网上查了无数资料,大多是讲如何在HTML代码中进行调用,很少说到如何使用标准VBS去调用,其实到最后才明白,VBS调用访问document无非就是这样的一句代码:
Set dom = CreateObject("InternetExplorer.Application") |
虽然简单,但是却花了我一个小时才明白。
通过这样的一段代码时间,我现在清楚了两件事,第一:VBS作为脚本语言,它的强大之处在于它调用windows的COM能力,而VBS本身并没有什么复杂的技术和体系。第二:QTP永远只是一款工具,它能做什么取决于我们如何去使用。