Jackei 的测试生活与人文社会读本

带着梦想和激情在现实中旅行
posts - 812, comments - 3861, trackbacks - 26, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

版权声明:本文可以被转载,但是在未经本人许可前,不得用于任何商业用途或其他以盈利为目的的用途。本人保留对本文的一切权利。如需转载,请在转载是保留此版权声明,并保证本文的完整性。也请转贴者理解创作的辛劳,尊重作者的劳动成果。

作者:陈雷 (Jackei)

邮箱:jackeichan@gmail.com

Bloghttp://jackei.cnblogs.com

 

本文是《LoadRunner没有告诉你的》系列文章的第四篇,在这篇短文中,我将尽可能用简洁清晰的文字写下我对“性能”的看法,并澄清几个容易混淆的概念,帮助大家更好的理解“性能”的含义。

如何评价性能的优劣: 用户视角 vs. 系统视角

对于最终用户(End-User)来说,评价系统的性能好坏只有一个字——“快”。最终用户并不需要关心系统当前的状态——即使系统这时正在处理着成千上万的请求,对于用户来说,由他所发出的这个请求是他唯一需要关心的,系统对用户请求的响应速度决定了用户对系统性能的评价 

而对于系统的运营商和开发商来说,期望的是能够让尽可能多的用户在任意时刻都拥有最好的体验,这就要确保系统能够在同一时间内处理更多的用户请求。正如在《理发店模型》一文中所描述的:系统的负载(并发用户数)与吞吐量(每秒事务数)、响应时间以及资源利用率(包括软硬件资源)之间存在着一个“此消彼长”的关系。因此,从系统的运营商和开发商的角度来看,所谓的“性能”是一个整体的概念,是系统的负载与吞吐量、可接受的响应时间以及资源利用率之间的平衡

换句话说,“好的性能”意味着更大的最佳并发用户数(The Optimum Number of Concurrent Users)和 最大并发用户数(The Maximum Number of Concurrent Users。有关“最佳/最大并发用户数”的概念请参见《理发店模型》一文 

另外,从系统的视角来看,所需要关注的还包括三个与“性能”有关的属性:可靠性(Reliability可伸缩性(Scalability 可恢复性(Recoverability——我将会在本系列文章的第五篇“无处不在的性能测试”中专门讨论这三个属性的含义和相关的实践经验。

 

响应时间


上面这张图引自段念兄的一份讲义,不过我略作了些修改。从图中我们可以清楚的看到一个请求的响应时间是由几部分时间组成的,包括

C1:用户请求发出前在客户端需要完成的预处理所需要的时间;

C2:客户端收到服务器返回的响应后,对数据进行处理并呈现所需要的时间;

A1Web/App Server 对请求进行处理所需要的时间;

A2DB Server 对请求进行处理所需的时间;

A3Web/App Server DB Server 返回的结果进行处理所需的时间;

N1:请求由客户端发出并达到Web/App Server 所需要的时间;

N2:如果需要进行数据库相关的操作,由Web/App Server 将请求发送至DB Server 所需要的时间;

N3DB Server 完成处理并将结果返回Web/App Server 所需的时间;

N4Web/App Server 完成处理并将结果返回给客户端所需的时间;

从用户的角度来看,响应时间=(C1+C2)+(A1+A2+A3)+(N1+N2+N3+N4);但是从系统的角度来看,响应时间只包括(A1+A2+A3)+(N1+N2+N3+N4)

在理解了响应时间的组成之后,可以帮助我们通过对响应时间的分析来更好的识别和定位系统的性能瓶颈。

 

吞吐量 vs. 吞吐量

在不同的测试工具中,对于吞吐量(Throughput)会有不同的解释。例如,在LoadRunner中,这个指标是以字节数为单位来衡量网络吞吐量的,而在JMeter中则是以事务数/秒为单位来衡量系统的响应能力的。不过在大多数英文的性能测试方面的书籍或资料中,吞吐量的定义使用的是后者。

 

并发用户数 每秒请求数

这是两个容易让初学者混淆的概念。

简单说,当你在性能测试工具或者脚本中设置了100并发用户数后,并不能期望着一定会有每秒100个请求发给服务器。事实上,对于一个虚拟用户来说,每秒发出多少请求只跟服务器返回响应的速度有关。如果虚拟用户在0.5秒内就收到了响应,那么它会立即发出第二个请求;而如果要一直等待3秒才能得到响应,它将会一直等到收到响应后才发出第二个请求。也就是说,并发用户数的设置只是保证服务器在任一时刻都有100个请求需要处理,而并不一定是保证每秒中发送100个请求给服务器。

所以,只有当响应时间恰好是1秒时,并发用户数才会等于每秒请求数;否则,每秒请求数可能大于并发用户数或小于并发用户数。

 

点击这里了解整个系列的创作进度,查看文章目录,或浏览已经完成的文章。

Feedback

#1楼   回复  引用    

2006-12-26 15:38 by wufeiwufei[未注册用户]
“在不同的测试工具中,对于吞吐量(Throughput)会有不同的解释。例如,在LoadRunner中,这个指标是以字节数为单位来衡量网络吞吐量的,而在JMeter中则是以事务数/秒为单位来衡量系统的响应能力的。不过在大多数英文的性能测试方面的书籍或资料中,吞吐量的定义使用的是后者。”
loadrunner的事务是一系列动作的自定义集合,而其他测试上(不包括数据库)的事务数/秒意义上可能更偏向于loadrunner的hits per second。

#2楼[楼主]   回复  引用  查看    

2006-12-26 20:07 by Jackei      
@wufeiwufei

“loadrunner的事务是一系列动作的自定义集合”——这个没错,在 LR 中一个事务所包含的请求数量是可以自定义的。不过并不是“其他测试上(不包括数据库)的事务数/秒意义上可能更偏向于loadrunner的hits per second”。因为:
1.只有在特定的情况下 hit 的数量才会等于 request 的数量,而很多时候是一个 request 会产生多个 hit;
2.在 ab、JMeter 这些测试工具中,默认是以 request 来作为计量单位的——这点我在上面说错了,多谢指出 ^_^

不过的确在大多数英文资料中,throughput 是用来度量系统的响应能力的,而对于网络的吞吐量通常是用 traffic 来表示。

有兴趣可以多交流 ^_^

#3楼[楼主]   回复  引用  查看    

2006-12-27 15:19 by Jackei      
@wufeiwufei

再补充一下,在 JMeter 中有一个 Transaction Controller ,可以起到同 LR 中自定义 Transaction 同样的作用——我也实验过没有问题。以下是摘自 JMeter 用户手册中的描述:

The Transaction Controller times how long it takes for all its children to run. It then adds a "sample" entry to the test output with the total elapsed time. The name of the element is used to name the "sample".

#4楼   回复  引用    

2007-02-22 00:08 by 1982[未注册用户]
在LR中测试的响应时间是不是不包括(C1+C2)

#5楼   回复  引用  查看    

2007-02-22 00:29 by JesseZhao      
呵呵,怎么看明白

#6楼   回复  引用    

2007-03-09 13:52 by Richard[未注册用户]
谢谢Jackei,帮助很大

#7楼   回复  引用    

2007-03-09 17:28 by Erica[未注册用户]
也想知道2007-02-22 00:29 by JesseZhao 所说的,谢谢!
********
在LR中测试的响应时间是不是不包括(C1+C2)
********

#8楼[楼主]   回复  引用  查看    

2007-03-12 07:46 by Jackei      
@Erica

在LR中测试的响应时间不包括(C1+C2)

#9楼   回复  引用    

2007-05-20 18:33 by hujy[未注册用户]
请教一个load模拟用户设置?

步骤描述:假设

1、 一个普通的系统登录脚步录制完毕。
2、运行场景时,设置模拟用户10个。

问题:

1、这个时候运行出的结果可做参考吗?这10个用户是1个还是10个呢,因为录制的脚本是用一个用户登录的呀。
2、如果问题1不成立,哪么在脚本中做一下登陆用户的参数化,预设10个用户,这个时候的结果可做参考吗?
3、如果问题1成立,再假设脚本中录制的还有其他操作,那么其他的操作也是基于同一个用户的操作,这样是否就反映出来一个问题,假设系统设置的是同一个用户不能重复在线,即执行退出以后,才可以再登录。那么这里是否可以判断出这个设置是没有成功的?

#10楼   回复  引用    

2007-05-20 18:35 by hujy[未注册用户]
基于上述的问题,我设置了一个参数化,可是结果不理想,请教中。。。

步骤描述

1、利用参数化设置10个用户,10个相对应的用户密码
2、运行场景时,设置模拟用户数10个,运行测试。

问题:

1、利用对系统用户的登陆的记录观察可以看到的确有10个用户在登陆到系统,但是,使用的是同一个用户名称,那么这个参数化根本就没有启作用?

2、我怎样才能够设置有10个用户,且真的是不相同的10个用户呢?

另:再请教一个问题,录制脚本中记录时有对 “复选框”、“单选框”的选择的操作,选择不同的“复选框”、“单选框”以后,会对不同的记录进行操作,我如何在录制后的脚本中去灵活的改变这个“复选框”,“单选框”的内容?

#11楼   回复  引用    

2007-06-13 17:51 by 51特斯塔[未注册用户]
问题同hujy,麻烦博主能抽时间尽快回复。关注中...............

#12楼[楼主]   回复  引用  查看    

2007-06-13 21:03 by Jackei      
@hujy

1、利用对系统用户的登陆的记录观察可以看到的确有10个用户在登陆到系统,但是,使用的是同一个用户名称,那么这个参数化根本就没有启作用?
2、我怎样才能够设置有10个用户,且真的是不相同的10个用户呢?
——对于上述两个问题,建议先查阅一下 LR 手册中关于参数化设置部分的内容,并实验一下不同的设置对于参数的读取有什么影响。这方面的资料也可以从 51testing 的论坛上查到。


录制脚本中记录时有对 “复选框”、“单选框”的选择的操作,选择不同的“复选框”、“单选框”以后,会对不同的记录进行操作,我如何在录制后的脚本中去灵活的改变这个“复选框”,“单选框”的内容?
——如果做了不同的选择会对不同的记录进行操作,那么录制的脚本中应该会包含用来区别不同记录的变量,例如 ID 之类的,只需要对这些变量做参数化就可以了。

#13楼   回复  引用    

2007-06-17 14:28 by hujy[未注册用户]
@jackei,

谢谢您的回复,

另外我想求证一下关于参数化,登录脚本中利用参数化设定了10个用户,在运用场景时,

  A 设置成1个用户,运行的迭代次数是10次,那么,这参数化中的10个用户会依次执行1次。

B 设置成10个用户,运行的选代次数是1次,那么这个参数中的10个用户的1个用户在同一时间登录系统10次,
  而我的目的是想达到10个参数化的用户,在同一时间执行。是我设置参数化误,还是LOADRUNNER根本就做不到?我目前的解决办法,对执行的脚本录制10次,用10个不同的用户,然后在运行时这10个脚本同时执行。

#14楼   回复  引用    

2007-06-17 14:30 by hujy[未注册用户]
@jackei,

另:可否推荐一些相当不错的loadrunner的培训机构,谢谢!

#15楼[楼主]   回复  引用  查看    

2007-06-18 11:15 by Jackei      
@hujy

你提出的问题还是在于没有搞清楚 LR 对于参数化的设置,LR 对于参数取值的读取提供了多种方式,由于这方面的问题其实都已经是老生常谈,网上也有很多网友整理好的资料,所以还是建议先查阅一下 LR 手册中关于参数化设置部分的内容,或者去 51testing 之类的的论坛上查查。

对于 LR 的培训,你现在哪个城市?上海和北京都可以联系一下 51testing,听听公开课应该就可以了。

#16楼[楼主]   回复  引用  查看    

2007-06-18 12:08 by Jackei      
@hujy

看这里吧。
----------------------------------------------------------------
实例分析Loadrunner参数化策略
http://bbs.51testing.com/thread-78454-1-1.html" target="_new">http://bbs.51testing.com/thread-78454-1-1.html
----------------------------------------------------------------

#17楼   回复  引用    

2007-08-08 15:05 by fenfen[未注册用户]
hi @Jackei
每秒请求数从哪里得来?从Transactions per Second中事务的平均值得来得吗?期待回答
每秒请求数是否=每秒事务数?

#18楼[楼主]   回复  引用  查看    

2007-08-09 20:04 by Jackei      
@fenfen
有关性能测试的一些基本概念和理论,推荐阅读下面两本书

http://www.china-pub.com/computers/common/info.asp?id=31349" target="_new">http://www.china-pub.com/computers/common/info.asp?id=31349
http://www.china-pub.com/computers/common/info.asp?id=13085" target="_new">http://www.china-pub.com/computers/common/info.asp?id=13085



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 580958




历史上的今天:
2005-12-04 2005-12-4 凌晨2点半 广州转冷我先知

相关文章:

相关链接: