使用QTP统计页面加载时间
上一篇 /
下一篇 2008-04-20 16:26:53
/ 个人分类:QTP&VBS
51Testing软件测试网|
adtDua N+ktHQTP是一款功能自动化测试工具,而页面加载时间或响应速度应该是性能测试的事情,其实QTP也可以实现对页面加载时间的统计功能。因为QTP使用
的是VBS脚本,VBS脚本的强大之处在于它可以调用任何windows的COM组件和对象。那么问题解决的思路就很简单了,就是我们要利用VBS获取
IE网页,并统计网页加载的时间。
U;axy,J)Bj
eG(o051Testing软件测试网u2_1]p+Ea#?6A分析很简单,但是在实现上却有几个技术问题:一、如何使用VBS分析网页。我们知道网页技术是基于DOM模型的(也不知道这么说是不是准确),那么
只要我们能用VBS调用DOM下的document对象,那么我们就可以使用document的方法来实现我们的要求;二、如果能实现对DOM的调用,我
们如何统计页面加载的各个阶段的时间,通过查阅资料可以知道,在document中有一个readystate方法,该方法共有五个返回值,分别对应网页
初始化到网页加载完毕五个阶段,我们可以利用该方法实现我们的要求。
t C0zV`E5V4gw$Q051Testing软件测试网9pO"bcD(t]实现的思路如下:
)n3F!Z;u*dFPWS5O051Testing软件测试网|H"Pk,s;GxY1、利用createobject创建一个IE的实例,以访问document对象;
@j hB-y5S,SAr;o051Testing软件测试网_Cl0R/k]c-{!\2、利用document对象的readystate属性获取网页加载时各个阶段的时间,51Testing软件测试网D7U6F%y@.v:yo
[$`} aT03、利用timer()实现对毫秒的统计。timer()函数的作用是统计从午夜时间到当前时间所过去的秒数,我们用两个timer值想减就可以得到两个时间点之间相隔的毫秒数。
iNHn4f3at0A"R
Q051Testing软件测试网 GCzh"]Q\f v4、为了方便调用,将时间统计的代码封装成一个函数51Testing软件测试网*DV#qf'iZd&}qZ
rL4{dR^)vA_1A0最后代码如下:51Testing软件测试网*ZIgg6W}lb2^
'在loadrunner脚本中,把要访问的url做参数化,变量名为SITEURL51Testing软件测试网%n:E.|W#o
'timeCount方法返回一个字符串,字符串的内容是统计各个阶段发生的时间
1s!I](S_:hG ]'F
v}F0'可以使用各种方法查看result的内容
2\w4i3t;c!d0SITEURL = "www.sina.com.cn"'设置要进行访问的URL51Testing软件测试网(a-n2\dj~
result = timeCount(SITEURL)'返回运行结果
j~L*z.wU#y}0MsgBox result '输出运行结果,在loadrunner中可以将该行注释掉
,c3MP9U'OZ051Testing软件测试网9e.Yw6a1R$bnM0H
'方法定义开始51Testing软件测试网w8MUs4P?5L
V
Public Function timeCount(url)51Testing软件测试网{bN
Z9og
Set dom = CreateObject("InternetExplorer.Application") '创建一个IE的对象51Testing软件测试网$v&PZ0s)Ii N#x
dom.Navigate(url) '打开指定的URL
#].W
y1~3NU
oE+c5u0time_start = Now()'获取统计开始时的时间
q&TnF"uX(A2@0timer_start = timer()'获取当前时间的毫秒数
;xb#u!B1Z;T|%Lc4V&Z0'a = dom.ReadyState'获取当前IE的状态值,将使用该状态值判断IE的当前状态
m[uoq/f9e'tX0dom.visible = True '设置IE可见
/WP*q| W0While dom.busy or (dom.readyState<>4)'当IE处于BUSY状态或者加载未完成时(readystate不等于4)时,根据IE的状态统计时间,每毫秒统计一次51Testing软件测试网\&i7}5}|2XeDl
wscrīpt.sleep 1 '时间间隔1毫秒,如果时间间隔比较长的话,很有可能会取不到状态值
2Qa\,L"\a @"J0Select Case dom.readystate '判断dom.readystate的值
6s#tK
[#jx:t0
Q]A!v9Uvt0Case 0 'IE未初始化,其实在该方法,readystate=0无意义,因为循环至少是从1开始的.
%p;VH!~,XF+^0time0 = Now()51Testing软件测试网k)nqAQL)R4^
timer0 = timer()51Testing软件测试网2B4t
y3k]FZ
]3H${ns*H0Case 1 '"正在发送请求"51Testing软件测试网#~hE,H|3G
C7F
time1 = Now()
/b:QsNX\W*v1K0timer1 = timer()51Testing软件测试网-TN2n
f2I1Z
51Testing软件测试网t?[-c+c3n5S&e
Case 2 '"请求已经发送完成"51Testing软件测试网qz |G+d3Q"vn_
Q"T
time2 = Now()51Testing软件测试网
b!N\e1h!_3S6B
timer2 = timer()
Bd/Ip[051Testing软件测试网 meSx~.BlOD
Case 3 '"可以接收到部分响应数据"51Testing软件测试网i6?`o'K*^F$X
time3 = Now()51Testing软件测试网4_8T+z_5Y)`c.cg
timer3 = timer()51Testing软件测试网p4O]@5dIO)_
/EL,gS'i]wY~oc0Case 4 '"页面加载完成"
)YTf NN'i0time4 = Now()
"p2u4{aHmM%`0timer4 = timer()51Testing软件测试网T`6M-{9s+r2L)[pK
51Testing软件测试网{]K!K$|,B
End select
$o
y5m4In&c/MB Z0wend
2Z1j |;Y{7W-^K0time_end = Now() '统计结束时间
d:?+CO\ D|fH2V0'MsgBox "开始时间是:" & time1 & ";结束时间是"&time251Testing软件测试网aFyl.on;v
/w.F6m$m;t]| u0timeCount = "统计开始时间:"&start_time&vbcrlf&"time0:"&time0&vbcrlf&"time1:"&time1&vbcrlf&"time2:"&time2&vbcrlf&"time3:"&time3&vbcrlf&"time4:"&time4&vbcrlf&"完成IE的初始化并发送请求:"&(timer1-timer_start)&"秒"&vbcrlf&"发送完成并接受服务端部分响应数据:"&(timer3-timer1)&"秒"&vbcrlf&"100%接收并完成HTML内容解析:"&(timer4-timer3)&"秒"&vbcrlf&"总共花费:"&(timer4-timer_start)&"秒"51Testing软件测试网8zJ+b6I s.^"{ mpN
End Function
}
PMye @N*^L
x051Testing软件测试网!{!J3j CK
+f'?6v(om c0代码中的SITEURL就是我们要进行测试的页面.
iqA*Z
MkXo'^+e051Testing软件测试网V^t'gq#OK3s这段代码虽然不长,但是却花了我整整4个小时的时间。一开始碰到的难题就是不知道VBS如何去调用document方法,在网上查了无数资料,大多
是讲如何在HTML代码中进行调用,很少说到如何使用标准VBS去调用,其实到最后才明白,VBS调用访问document无非就是这样的一句代码:51Testing软件测试网7K&e.^/W5umTH
Set dom = CreateObject("InternetExplorer.Application") "LDHG8L-K7D+g0虽然简单,但是却花了我一个小时才明白。
^c)yT"O*]sC051Testing软件测试网0p2u@9|@5UDU通过这样的一段代码时间,我现在清楚了两件事,第一:VBS作为脚本语言,它的强大之处在于它调用windows的COM能力,而VBS本身并没有什么复杂的技术和体系。第二:QTP永远只是一款工具,它能做什么取决于我们如何去使用。
"KxKT+]/qI-EZ
\0
收藏
举报
TAG:
QTP
vbs
网页加载
时间统计