半桶水谈性能测试
上一篇 / 下一篇 2012-09-20 09:14:21 / 个人分类:性能测试
首先在我的职业生涯中,做性能测试的机会不多,发现性能瓶颈的次数更少,确切的说只有2次。随着大型分布式系统,特别是Web App和云计算的推广,性能测试的需求会更加迫切。今天我这个半桶水就来谈谈性能测试的话题,欢迎大家一起来讨论。
Ln&rx3wY;j05[O|U#K0 什么是性能测试?51Testing软件测试网;K/O dR2^k*z,o
B$_5c!{&JQ7]a7^0 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。51Testing软件测试网xmq(a/^!p,B7kcn kW1l
51Testing软件测试网`!o:S&V)}&@'YA负载测试和压力测试都属于性能测试,两者可以结合进行。
7u5T J*?:F*q2v00n/\ M/]L#qOH0 通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
R+d*s n"}q~5o9d051Testing软件测试网jA tibK压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
FV7r x.V5e051Testing软件测试网Lh$}~[中国软件评测中心将性能测试概括为三个方面:应用在客户端性能的测试、应用在网络上性能的测试和应用在服务器端性能的测试。
%O7I#t'}$]Fn9Z0q|G8jRh*H |0 通常情况下,三方面有效、合理的结合,可以达到对系统性能全面的分析和瓶颈的预测。
[ypl ^0'V-pX:sREeDi0 注意这里提到了三个方面,但平常我们往往注意力集中在服务端的性能而忽略了客户端和网络的性能。51Testing软件测试网T9Q$?*jH2|r
5X2e ss F.e;K:S@ H0 下面是我这个半桶水来谈谈一些体会:
Q{/AK%K051Testing软件测试网Q'`EX5{+nX3?一、目的/需求51Testing软件测试网7DhS(J` wCz-o#JQA
51Testing软件测试网KQv2j3j为什么需要做性能测试或此次做性能测试的目的是什么?
K],tX*l8G0G6kG3x0F8l0 1、新项目/产品,首次发布,需要做基准测试51Testing软件测试网,DmJk8PC9c$]v8w
51Testing软件测试网%B-W6PO5}k2、使用中的产品,重构了某个模块/某个模块使用了新的技术,需要一个评估51Testing软件测试网._m yS"P.C5SOp3i
3E T| ])E6X ]i uM N0 3、使用中的产品,用户量爆发了,用户量从百万级增加到千万级
5lSrm3x_4R:V0c p~"T6nS-g b0 4、增加了一个或多个页面,需要对页面的Latency进行一次测试51Testing软件测试网hXn(ER
9VA)p gcl$z7[P*am0 在测试开始前,需要有准备工作,对此次性能测试的目的做详细了解,确定需要收集哪些数据,关注哪些性能指标。51Testing软件测试网 F$d6yG4@o7f I~7i
8h$pBm-E5q;_0 二、环境部署
9?7W b,wMO&AgFH[051Testing软件测试网C/dW:f {^o性能测试需要一个干净的环境,这个环境包括硬件、网络、操作系统、被测试的系统,数据库。
^6HS8P-ft5Y.N'~&j.@0&eht\wM0 那在开始前,需要把这个环境部署准备好,最好是能模拟线上的系统,同时这也是一个排除干扰的过程,画出一张架构图。51Testing软件测试网"DYxc-J3cz[
51Testing软件测试网Kn5xY3|h1、硬件,使用怎样的服务器,理想情况是和生产环境一样的服务器,需要配置负载均衡么
Jv2W&I8\ {g051Testing软件测试网%ah'mG,N#\l2、网络, 是否需要模拟各种网络,是否需要双网卡,内部网络是否会影响到其他员工正常使用51Testing软件测试网1m,dE9T/{8xP
m|Vr [eH-}z0 3、操作系统,windows/linux,是采用默认设置还是已经有参考的设置,哪些操作系统的服务需要关闭,linux中的ulimit如何设置
g@T]"O2CPD'b C051Testing软件测试网4@KIvH$G R4、被测试系统,邀请架构师的参与,系统使用怎么样的架构,是否使用了Web Server——IIS/Apache/Tomat,他们的最优配置是怎么样的
y @;ZZ&`3[@9Bp bl0i _ v }e-^xG0 5、数据库,站内搜索数据库是否和订单数据库分开,数据库是否有缓存,数据库是否使用主从式
*\ro o1g[051Testing软件测试网(xy+A(@j2ys4g三、场景和负载模式
}2JU;s%n.o qD051Testing软件测试网H9y_1cJ此次性能测试需要模拟怎样的场景:51Testing软件测试网 LG6Ir2g
51Testing软件测试网4^mp4I6q%Rs"L3[N1、购物网站秒杀活动,使用恒负载模式,设定集合点,用户并发
#Vd8L'v_h051Testing软件测试网@f*V1I(Q;C2、系统正常的使用,从每天的监控系统中分析,例如看到购物高峰是中午,使用单步负载模式(Ram-up/down),每间隔时间内用户增加多少,到购物高峰时间是恒负载,过了高峰后用户开始减少
v4~"\fI051Testing软件测试网c/u.unjdZ3、系统改版,使用基于目标的负载模式,根据历史数据设定目标,或例如设定CPU/Memory最大到85%
-xrw5Lsr O5km0tz0DtV+Ge0 确定好了场景和负载模式,才能正确的生成用例/脚本。
1u~W O }}3a;p.j!Z4{XU0.q:@G%T yf\eX7D0 四、性能指标51Testing软件测试网 A[?%u9?v
51Testing软件测试网*A+C,a'Y%hkf/L此次性能测试需要收集哪些性能指标和数据:51Testing软件测试网kR8NU{i9]6R+Pj~&r
51Testing软件测试网~/SndJn1、CPU使用率
3~.fUzo*}5r051Testing软件测试网(An g|Nt4uM2、Memory使用率
2sc{&eHSf-r#B/d0:}(c tEl.^#^0 3、QPS51Testing软件测试网"n{iv9?4g!K*Mb
51Testing软件测试网 f~cG H4、响应时间
^'s3E'HniK sG0-l7y7c_/dER0 5、网络IO51Testing软件测试网"l;F2U+ppDl1Fx
ra3}8}!j0 6、文件IO
"Kh9T3f:m*CX4O)p(P'w0EFz b@j'S0 7、数据库IO
!B+M7R;e4F5O0V cnJL0Y }'k9N"S`(~0 8、最大支持用户数51Testing软件测试网@W9`Id#V
51Testing软件测试网 p+_)TAZ?以上指标并不是都要收集,要根据具体的场景来决定。51Testing软件测试网DU6?]cf$O'[i
51Testing软件测试网&EEw |{I3pTpE五、性能测试工具
+N]n)_&E/[0~3n7vp/r*W'q4?0 提到性能测试,很多测试人的第一概念就是工具,比如商业流行的Loadrunner,开源流行的Jmeter,但是很少人注重上面提到的四点, 所谓“磨刀不误砍材工”,没有上面的设计分析,仅仅使用工具跑出结果是无法分析出性能的瓶颈,不可靠的数据结果会大大增加排查工作,这些数据往往会受到很 多质疑。51Testing软件测试网.D:w"I[z#g3It`A
51Testing软件测试网-bXq5u$f[(v$r1mS工具的使用:
fe1L8o(^"[d7N/y05Y|c;CO#|0参数化51Testing软件测试网X$Z'Q)F4F0l
Loadrunner选择哪个协议51Testing软件测试网l9`\&blsaO!w
Loadrunner的关联51Testing软件测试网jv4E0oBCDr Uz
Loadrunner的Controller/Agent51Testing软件测试网p? D%is`0q-{
Jmeter的Remote testing
(YJpx#v0工具的使用技能仅仅是性能测试里的一小部分,切不可只关注工具使用。51Testing软件测试网9g2YiQ~;b
是否每次的性能测试都需要用上大型的工具呢,某个页面的响应时间是否可以使用其他轻量的工具,例如一些浏览器插件Httpwatch,Yahoo YSlow,Google speed tracer;
VE7vF ~_0,\*e?&M_/z1]0 是否可以自己写些有针对性的小工具,根据实际情况定义出真实的Page load time,而不仅仅是服务器的响应时间。
4R%X+x ^MV0 \'k&\|3X7T:?a*m0六、数据收集与分析51Testing软件测试网?M(rI7c
性能测试的最终目的是通过数据收集分析出系统是否存在瓶颈,所以数据收集和分析是一个很重要的过程。51Testing软件测试网i{Y7~l"Sj~{
分析的过程需要团队成员的参与,例如架构师、DBA、开发人员,是一个长期的过程,通过调整测试脚本,生成不同的数据对比。