急需QTP统计页面加载时间的脚本!!!
急需QTP统计页面加载时间的脚本!!!请高手指教下!!! 这个应该用性能测试工具更加精确吧?如果是在要用QTP的话,那么就在加载页面之前取个系统时间,在加载结束再取个时间.2者相减.存在的风险:
1,页面加载开始这个时间点是以什么为标志的?
2,页面加载结束这个时间又是以什么为标志的? 是否加载所有对象? 如果要去判断这些所有对象是否都存在的话,又需要消耗一部分时间.
3,用QTP获取的时间只能精确到秒,这个参考价值是不大的.
所以说,用QTP去获取时间这个性能指标是不太合理的. 在需要统计的脚本间加个事务就行了吧。。。 有具体的脚本吗,我也需要。 各位有关于注册的QTP的脚本吗,是加强版的。 需要将各种情况都考虑到,如用户名错误,为空等。 哪位大虾指点一下啊? 从网上找到这个资料:
'在loadrunner脚本中,把要访问的url做参数化,变量名为SITEURL
'timeCount方法返回一个字符串,字符串的内容是统计各个阶段发生的时间
'可以使用各种方法查看result的内容
SITEURL = "www.baidu.com"'设置要进行访问的URL
result = timeCount(SITEURL)'返回运行结果
MsgBox result '输出运行结果,在loadrunner中可以将该行注释掉
'方法定义开始
Public Function timeCount(url)
Set dom = CreateObject("InternetExplorer.Application")'创建一个IE的对象
dom.Navigate(url)'打开指定的URL
time_start = Now()'获取统计开始时的时间
timer_start = timer()'获取当前时间的毫秒数
'a = dom.ReadyState'获取当前IE的状态值,将使用该状态值判断IE的当前状态
dom.visible = True '设置IE可见
While dom.busy or (dom.readyState<>4)'当IE处于BUSY状态或者加载未完成时(readystate不等于4)时,根据IE的状态统计时间,每毫秒统计一次
wscript.sleep 1 '时间间隔1毫秒,如果时间间隔比较长的话,很有可能会取不到状态值
Select Case dom.readystate '判断dom.readystate的值
Case 0 'IE未初始化,其实在该方法,readystate=0无意义,因为循环至少是从1开始的.
time0 = Now()
timer0 = timer()
Case 1 '"正在发送请求"
time1 = Now()
timer1 = timer()
Case 2 '"请求已经发送完成"
time2 = Now()
timer2 = timer()
Case 3 '"可以接收到部分响应数据"
time3 = Now()
timer3 = timer()
Case 4 '"页面加载完成"
time4 = Now()
timer4 = timer()
End select
wend
time_end = Now() '统计结束时间
'MsgBox "开始时间是:" & time1 & ";结束时间是"&time2
timeCount = "统计开始时间:"&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)&"秒"
End Function
但回放时提示缺少对象wscript,请高手指点一下。 上面的脚本是纯vbs脚本。
在qtp中运行的话,可以使用wait代替wscript.sleep 关注下,个人人为在QTP下统计的应该是不准确的,以前做过相关的,后来自己考虑可能不准确就换了其它的方式做了
也说下,比较不智能:
在firefox下用firebug来统计 1,页面加载开始这个时间点是以什么为标志的?
#可以在向浏览器发出navigate请求后计时
2,页面加载结束这个时间又是以什么为标志的? 是否加载所有对象? 如果要去判断这些所有对象是否都存在的话,又需要消耗一部分时间.
#对于网页加载,判断是否加载完成可以使用ie本身属性得到。如果ie认为加载完成了(包括了下载、渲染),我们就可以认为是真完成了。对于windows应用加载时间,我觉得通过判断界面上控件是否存在的方式,确实有控件识别时间消耗带来的误差。那么是否可以通过判断相应事件的触发或者其他非UI判断的工具来判断加载时间。
3,用QTP获取的时间只能精确到秒,这个参考价值是不大的.
#精确到毫秒没有问题吧
所以说,用QTP去获取时间这个性能指标是不太合理的.
#只能说这种方式不太专业,会有误差。但不是完全不合理。
回复 1# 的帖子
别用QTP去 计算页面加载时间, 虽然能在代码中计时统计得到但原理不很准确。
回复 11# 的帖子 :跟你叫个真,呵呵
我对页面这块不太了解,说错了包涵1.页面加载到底指什么?
如果是包括通讯+展示,那可以在navigate后面开始计时就OK了,但如果单纯的想统计展示,那navigate后开始计时就明显要冗余了通讯时间,因为navigate后面首先要进行构造http包然后发包,等待回包,然后处理,真正浏览器开始处理数据包才是展示的时间;
2.何为结束的标识?
网页加载,一般来说,真正耗费时间的可能是JS执行吧,而且现在展示技术不断发展,可能部分页面构造完成而部分页面还没有构造完成,所以判断某控件不太准确,而如果轮询判断浏览器状态。。。这个感觉时间冗余比较多吧
3.4一起说吧:
任何一种方式都有误差,不是看误差的绝对大小,而是看相对于初始值的相对大小,也许通过QTP来做只是多计算了点点时间而已,但这点点时间相对于初始值已经非常大非常大了,所以说这种方法不可取,而不是说它不可行
PS:唉,全是错别字。。。
回复 13# 的帖子
1.页面加载到底指什么?readystate不是有0~4的不同状态么?那么计时也可以是不同状态间的计时啊。想统计哪种时间,看需求了。
2.何为结束的标识?
通过判断浏览器状态统计加载时间,这个方法在使用ajax等技术页面上,肯定会有问题。这种页面浏览器的readystate也不准确,或者可能本来就会触发多个documentcomplete事件,那么你怎么判断呢?具体问题还得具体分析,但是这是一种方法,但不适合所有情况。
3.4
确实应该考虑误差相对于被测值的大小,不过我想要是页面瞬间就加载完了,也不会有人要测这个时间了。
另外,楼上有什么更好的方法测试精确的加载时间呢?
回复 14# 的帖子
工具,专用工具,^_^我之前测firefox时候有的firebug,IE上不知道了
可以找专用工具看看有没有第三方接口,然后调用一下 多谢各位的指点啊
:)
回复 15# 的帖子
思路挺好的,不过还有些问题没想清楚:1、firebug是基于firefox浏览器的,由于各浏览器提供事件都不一样,这个还无法通用。
2、工具是怎么实现的?怎么处理动态加载的问题?
既然14# 已经解析地这么清晰了,那我推荐一个工具
AOL Pagetest 能够计入Ajax的加载时间。http://sourceforge.net/projects/pagetest/
这已经属于性能测试范畴了
[ 本帖最后由 shanxi 于 2009-6-5 12:17 编辑 ]
回复 8# 的帖子
楼主可以加上这句Set wscript=CreateObject("Wscript.Shell")创建Wscript对象 谁能发个注册脚本啊
页:
[1]
2