51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 11088|回复: 36
打印 上一主题 下一主题

[原创] 用事实说话——解析事务响应时间包括的细分时间

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-2-14 10:30:21 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
08年春节前和zee的通话中被告知LoadRunner中的事务响应时间不包括Receive Time,当时甚为惊诧,因为我一直是认为事务响应时间应该包括DNS Resolution、Connection、First Buffer、Receive、Client Time等时间的。如果LoadRunner结果分析中的事务响应时间的确不包括Receive Time,那也就意味着我曾写过的许多系统性能报告很多都将成为废纸。 但是zee也没有拿出足够的证据证明他的理解是绝对正确的。
    为了明确事务响应时间是否包含Receive time在内,我在网上查了很多帖子和文章,这一查吓我一跳,因为网络上对事务响应时间以及其细分时间的理解存在很大的分歧,而且并没有统一的或者一致的观点和说法。我罗列几种常见理解分歧:

1.        Client time指客户端发出请求前的延时(客户端忙碌未能及时将请求发出),还是收到请求后的客户端延迟(客户端IE会执行一些javascipt脚本或其他页面初始化动作)
2.        First Buffer time 是否包括DNS Resolution Time 和Connection Time,有人甚至认为First Buffer time 就是事务响应时间,因为First Buffer Time在LoadRunner中是这样解释的:Displays the amount of time that passes from theinitial HTTP request (usually GET) until the firstbuffer is successfully received back from the Webserver. The first buffer measurement is a goodindicator of Web server delay as well as networklatency. 如果这里的HTTP request 理解为客户端提交HTTP请求,那么他的这种理解还真是有一定道理的。
3.        Average Transaction Response Time 是否包括Receive time 和Client time

先说第一个问题,Client Time的理解。按kernzhang的说法,这一时间指收到请求后的客户端延迟(客户端IE会执行一些javascipt脚本或其他页面初始化动作),我自己也是这样理解的。但是在LoadRunner中并没有找到足够的说明来解释这一点,只是说是客户端的延迟。

再说第二和第三个问题。第二和第三其实是同一类问题,我没有找到相关的足够的证据说明那个对那个错,因此我设计了如下的一个试验。

思路:Analysis中有两张表,Average Transaction Response Time和Page Download Time Breakdown(Over Time),而且能生成原始数据,生成Average Transaction Response Time中的 Raw Data,然后生成Page Download Time Breakdown (Over Time)中的Raw Data,将相同时间点的事务响应时间和事务的各种时间做一个比较。例如从开始执行起到2.035秒有一个action事务,响应时间为3秒,然后到Page Download Time Breakdown (Over Time)中找2.035秒action事务的各个时间,包括DNS Resolution、Connection、First Buffer、Receive、Client Time,对比这些数据做对比分析,主要是将细分时间累加,然后和事务响应时间做比较。

脚本:访问http://www.51testing.com,录制在Action中(为了分析的简便,我只保留了一个web_url,删除了另外一个web_url)

场景:Vusers:1
                Run Mode:Run until complete
                Think Time:lgnore
                Run Logic:run *20 action

试验一:
运行时设置中将“Simulate a new user on each iteration”的选项取消,执行测试。对照Average Transaction Response Time和Page Download Time Breakdown(Over Time)的数据。
结果:除第一个事务外,发现First Buffer + Receive + Client Time = 事务响应时间;

试验二:
运行时设置中将“Simulate a new user on each iteration”的选项选中,“Clear cache on each iteration”不选中,执行测试。对照Average Transaction Response Time和Page Download Time Breakdown(Over Time)的数据。
结果:除第一个事务外,发现First Buffer + Receive + Client Time = 事务响应时间;

从试验一和试验二,我们可以确定事务响应时间是包括First Buffer Time、Receive Time和Client Time的。

试验三:
运行时设置中将“Simulate a new user on each iteration”的选项选中,“Clear cache on each iteration”也选中,执行测试。对照Average Transaction Response Time和Page Download Time Breakdown(Over Time)的数据。
结果:Page Download Time Breakdown (Over Time)中的时间无论怎么加都不等于事务的响应时间,有时候细分时间累加大于事务响应时间,有时则小于事务响应时间,有时事务的First Buffer Time竟然大于事务响应时间。
我无法解释为什么会出现这种现象,特别是事务的First Buffer Time竟然大于事务响应时间,这是我所不能理解的,难度是LoadRunner的计时上存在问题?我认为事务的响应时间应该是通过细分时间的计算得出的,如果细分时间不准确,那么LoadRunner就是彻头彻尾的大骗子,按理说应该不至于。谁要是能解释原因,请跟帖,谢谢!

附页面细分时间的解释
1、        DNS解析时间:浏览访问一个网站的时候,一般用的是域名,需要DNS服务器把域名解析为IP地址,这个过程就是域名解析时间。
2、        Connection:解析出Web Server的IP地址后,浏览器请求被发送到了一个Web Server,然后浏览器和Web Server 之间需要建立一个初始化的HTTP连接,服务器端需要做两件事:一个是接收请求,而是分配进程。建立该连接的过程就是Connection。
3、        First Buffer:建立连接后,从Web Server发出第一个数据包,进过网络传输到客户端,浏览器成功接收第一个字节的时间就是First Buffer。
4、        Receive:从浏览器接收第一个字节起,知道成功收到最后一个字节,下载完成为止。
5、        Client Time:请求在客户端浏览器延迟的时间。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

37#
发表于 2012-1-18 16:16:50 | 只看该作者
先留个记号   有空仔细研究一下。
回复 支持 反对

使用道具 举报

该用户从未签到

36#
发表于 2011-11-23 11:25:05 | 只看该作者
楼主写的真好,拜读
回复 支持 反对

使用道具 举报

该用户从未签到

35#
发表于 2011-11-21 17:41:42 | 只看该作者
DNS解析时间、connection、 First Buffer、 Receive、 Client Time这几项各自的平均值相加,有时不等于事务响应的平均时间吗?
回复 支持 反对

使用道具 举报

该用户从未签到

34#
发表于 2011-11-16 16:37:03 | 只看该作者
一种猜想,事务没有执行成功,所以总时间中根本不存在First Buffer time
回复 支持 反对

使用道具 举报

该用户从未签到

33#
发表于 2011-9-24 13:49:36 | 只看该作者
今天还没有答案么?
回复 支持 反对

使用道具 举报

该用户从未签到

32#
发表于 2010-10-27 14:38:54 | 只看该作者
受教了
回复 支持 反对

使用道具 举报

该用户从未签到

31#
发表于 2010-10-24 11:55:36 | 只看该作者
这个得留名看

我一直理解的是,从客户端发出请求开始算起,到服务端返回第一个字节,这段时间就是响应时间
看来需要做个试验验证
回复 支持 反对

使用道具 举报

该用户从未签到

30#
发表于 2010-10-23 16:31:48 | 只看该作者
很受用,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

29#
发表于 2010-10-23 16:22:25 | 只看该作者
学习了!!
回复 支持 反对

使用道具 举报

该用户从未签到

28#
发表于 2010-10-22 23:55:11 | 只看该作者
学习一下  支持
回复 支持 反对

使用道具 举报

该用户从未签到

27#
发表于 2010-10-22 18:26:59 | 只看该作者
到今天了,有个确切的权威的答案吗
回复 支持 反对

使用道具 举报

该用户从未签到

26#
发表于 2009-5-27 10:51:49 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2009-5-27 09:49:15 | 只看该作者
写的很好,我也有同样的疑问.
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2009-5-27 09:14:47 | 只看该作者
Does LoadRunner transaction response time include the rendering time of the browser?

The answer is “No”! The reason is very simple, LoadRunner is not designed for client-side activities (remember, it’s all about network traffic!). We will illustrate using Web (HTTP/HTML) protocol.
Keep in mind that when we mention rendering time, it means the time taken for the display of the web components, Javascript or applet to load in the browser (or anything that is considered client-activity, loading in the browser) that is being activated after the HTML page is being received.
When we replay the scripts in LoadRunner, network traffic are being generated by the APIs (functions) and are expected to receive before the subsequent step can be executed. All this are taken place in memory and what LoadRunner does is to generate the traffic and receive the responses in memory. No user interface (UI) is launched in the process of replay for the purpose of rendering the pages received. Having no UI launched, rendering is omitted.

In a real user environment, the entire time for response in user perspective includes the request sending time, request processed time, response time and the browser loading (rendering time). However, in the context of LoadRunner, UI is not part of this entire request and response cycle.
Keep in mind that the transmission of the data is still pure text (or binary) and that needs to be rendered by the browser to be displayed properly. That’s considering the Javascript and any applets that needs to be loaded which is greatly dependent on the browser (eg. IE, Modzilla)and your machine specifications.
Even for Web Page Diagnostics, rendering time is not included as part of the transaction response time. It only allows the drill-down of time taken to download web components and not the time taken to render the component for display. In summary, it’s still at the network level.
If you are looking for an end-to-end response time testing that includes the rendering of the UI, you should consider using the GUI vuser protocol. The protocol utilizes another (famous) HP testing product, Quick Test Professional (QTP) as the recording mechanism, and replays the QTP scripts in the Load Generators as GUI vusers. For official information on the GUI vuser protocol, you can refer to the HP LoadRunner (v9.0) Controller User Guide, Chapter 14, “Using Functional Testing Scripts in LoadRunner”.

一个佐见,至于作者的依据有何根据,可以发邮件去问问。
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2009-5-19 22:09:56 | 只看该作者
响应时间里是否包括Connection的时间
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2009-5-19 16:09:47 | 只看该作者
响应时间里是否包括Connection的时间
回复 支持 反对

使用道具 举报

该用户从未签到

21#
发表于 2009-5-19 09:56:38 | 只看该作者
顶!!!!!!!!!!
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2009-5-18 22:07:55 | 只看该作者
楼主,有一事不明,响应时间里不包括Connection的时间吗?
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2009-5-18 16:31:23 | 只看该作者
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-25 18:24 , Processed in 0.088173 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表