半桶水谈性能测试

上一篇 / 下一篇  2012-09-20 09:14:21 / 个人分类:性能测试

51Testing软件测试网W*A r-{V]+B

  首先在我的职业生涯中,做性能测试的机会不多,发现性能瓶颈的次数更少,确切的说只有2次。随着大型分布式系统,特别是Web App和云计算的推广,性能测试的需求会更加迫切。今天我这个半桶水就来谈谈性能测试的话题,欢迎大家一起来讨论。

Ln&rx3wY;j0

5[O|U#K0  什么是性能测试?51Testing软件测试网;K/O dR2^k*z,o

B$_5c!{&JQ7]a7^0  性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。51Testing软件测试网xmq(a/^!p,B7kcnkW1l

51Testing软件测试网`!o:S&V)}&@'YA

  负载测试和压力测试都属于性能测试,两者可以结合进行。

7u5T J*?:F*q2v0

0n/\ M/]L#qOH0  通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。

R+d*s n"}q~5o9d051Testing软件测试网jA tibK

  压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。

FV7rx.V5e051Testing软件测试网Lh$}~[

  中国软件评测中心将性能测试概括为三个方面:应用在客户端性能的测试、应用在网络上性能的测试和应用在服务器端性能的测试。

%O7I#t'}$]Fn9Z0

q|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*l8G0

G6kG3x0F8l0  1、新项目/产品,首次发布,需要做基准测试51Testing软件测试网,DmJk8PC9c$]v8w

51Testing软件测试网%B-W6PO5} k

  2、使用中的产品,重构了某个模块/某个模块使用了新的技术,需要一个评估51Testing软件测试网._m yS"P.C5SOp3i

3E T| ])E6X ]i uM N0  3、使用中的产品,用户量爆发了,用户量从百万级增加到千万级

5lSrm3x _4R:V0

c 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-f t5Y.N'~&j.@0

&eht\wM0  那在开始前,需要把这个环境部署准备好,最好是能模拟线上的系统,同时这也是一个排除干扰的过程,画出一张架构图。51Testing软件测试网"DYxc-J3cz[

51Testing软件测试网Kn5xY3|h

  1、硬件,使用怎样的服务器,理想情况是和生产环境一样的服务器,需要配置负载均衡么

Jv2W&I8\ {g051Testing软件测试网%ah'mG,N#\l

  2、网络, 是否需要模拟各种网络,是否需要双网卡,内部网络是否会影响到其他员工正常使用51Testing软件测试网1m,dE9T/{8xP

m|Vr [eH-}z0  3、操作系统,windows/linux,是采用默认设置还是已经有参考的设置,哪些操作系统的服务需要关闭,linux中的ulimit如何设置

g @T]"O2CPD'b C051Testing软件测试网4@ KIvH$GR

  4、被测试系统,邀请架构师的参与,系统使用怎么样的架构,是否使用了Web Server——IIS/Apache/Tomat,他们的最优配置是怎么样的

y@;ZZ&`3[@9Bp bl0

i _ v }e-^xG0  5、数据库,站内搜索数据库是否和订单数据库分开,数据库是否有缓存,数据库是否使用主从式

*\ ro o1gesting软件测试网(x y+A(@j2ys4g

  三、场景和负载模式

}2JU;s%n.o qD051Testing软件测试网H9y_1cJ

  此次性能测试需要模拟怎样的场景:51Testing软件测试网 LG6Ir2g

51Testing软件测试网4^m p4I6q%Rs"L3[ N

  1、购物网站秒杀活动,使用恒负载模式,设定集合点,用户并发

#Vd8L'v_h051Testing软件测试网@f*V1I(Q;C

  2、系统正常的使用,从每天的监控系统中分析,例如看到购物高峰是中午,使用单步负载模式(Ram-up/down),每间隔时间内用户增加多少,到购物高峰时间是恒负载,过了高峰后用户开始减少

v4~"\fI051Testing软件测试网c/u.un j d Z

  3、系统改版,使用基于目标的负载模式,根据历史数据设定目标,或例如设定CPU/Memory最大到85%

-x rw5Ls r O5k m0

tz0DtV+Ge0  确定好了场景和负载模式,才能正确的生成用例/脚本。

1u~WO}}3a;p.j!Z4{XU0

.q:@G%T yf\e X7D0  四、性能指标51Testing软件测试网 A[?%u9? v

51Testing软件测试网*A+C,a'Y%hkf/L

  此次性能测试需要收集哪些性能指标和数据:51Testing软件测试网kR8N U { i9]6R+P j~&r

51Testing软件测试网~/SndJn

  1、CPU使用率

3~.fU zo*}5r051Testing软件测试网(An g|Nt4uM

  2、Memory使用率

2sc{&eHSf-r#B/d0

:}(c tEl.^#^0  3、QPS51Testing软件测试网"n{iv9?4g!K*Mb

51Testing软件测试网 f~cG H

  4、响应时间

^'s3E'HniK sG0

-l7y7c_/d ER0  5、网络IO51Testing软件测试网"l;F2U+ppDl1Fx

ra3}8}!j0  6、文件IO

"Kh9T3f:m*CX4O)p(P'w0

EFz b@j'S0  7、数据库IO

!B+M7R;e4F5O0V cnJL0

Y}'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软件测试网-bX q5u$f[(v$r1mS

  工具的使用:

fe1L8o(^"[d7N/y0

5Y|c;CO#|0

  参数化51Testing软件测试网X$Z'Q)F4F0l

  Loadrunner选择哪个协议51Testing软件测试网l9`\&blsaO!w

  Loadrunner的关联51Testing软件测试网jv4E0oBCDrUz

  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、开发人员,是一个长期的过程,通过调整测试脚本,生成不同的数据对比。

\ |@$h&PwlWE q d0

  七、我所发现的2次问题

J$Cl HjW:u0

  1、双网卡问题,一个新改版的项目,上线后在峰值的时候总有机器崩溃或性能大幅下降,最后发现是服务器只使用了单网卡,这个明显就是上面提到的排除干扰没做好(配置没有检查),这次性能测试是失败的。

Yj}j&SZSg0

  2、子进程崩溃,64位系统基准测试,通过与团队成员的不断沟通,排除各种设置干扰、确定硬件和软件配置、加入profile工具,与32位系统的对比。51Testing软件测试网)T\ FA s

  八、后续优化51Testing软件测试网i/x:Xi6l-Y'sXR `Y)t

  性能测试仅仅是个开始,性能测试最终目的是发现和解决系统的瓶颈,这就涉及到优化,而优化的过程往往在系统设计阶段就需要考虑。

hnf)a(z0

  1、异步获取数据

CRGl$e-r0

  2、建立缓存

iuV2F2V0

  3、分布式51Testing软件测试网 ^\5B7R9`,UH

  4、文件分解51Testing软件测试网l0k-r"V_~,R

  九、推荐51Testing软件测试网,j4Q0hy} [ HH

  1、基于用户体验的性能测试,User Experience, Not Metrics51Testing软件测试网4\C x!ENmdOf

  更贴近用户使用场景的性能测试,里面使用的工具主要是IBMRational TestStudio

7mK;Sx\ y z'z6l O0

  http://www.cnblogs.com/mayingbao/archive/2008/04/11/1148510.html51Testing软件测试网v#v.g+GL)X q

  2、软件性能测试过程详解与案例剖析(第二版)51Testing软件测试网;m)`7X6D D)C

  3、要做好性能测试,该掌握些什么?

F,{D"U}u0

  http://www.51testing.com/html/23/n-92923.html
0H a]Q-p-KL6L0  http://www.51testing.com/html/93/category-catid-93.html

#bb I-@f9n}0

TAG:

 

评分:0

我来说两句

Open Toolbar