性能测试--好文章多学学

上一篇 / 下一篇  2007-11-20 17:13:38

摘要】性能测试不只是测试人员的事情,只有通过不同阶段不同参与人的通力合作才能把性能测试做好。

{J j$m1S!PZ0【关键词】性能测试性能优化 DBA

3gjz:r3~!a"IP0

(Mq7Cga^ T0随着项目越来越大,性能问题层出不穷。如何做好性能测试成为测试人员经常讨论的话题。很多时候,大家都在疑惑性能测试如何来做,性能标准从那里来,有没有通用的标准,性能测试由谁来做,如何规划。首先我们了解一下,什么是性能测试。性能测试的目的:通过性能测试了解系统的性能有没有满足需求,对于不满足需求的模块则通过测试发现可能的性能瓶颈,并进行相应的性能调优,从而达到最终用户的要求。由于项目巨大,所以性能测试不仅仅是测试人员的事情,可能需要整个项目组的参与,而测试人员则更需要清晰的了解到性能测试分几个阶段,每个阶段如何来做,需要协调那些资源?

;Y3g:HW?c0

:z(X{@^4u0在性能测试的每一个阶段,性能测试的参与人是不一样的,下面的图就是不同阶段的人员参与表。

*iYNo0f s$D$J*r0

51Testing软件测试网#k)t [`Yc|

性能测试人员图

4] Q-j1~B ?U0

)Zz` f!r O ?o0从上图中可以看出,其实性能测试不是一个人可以搞定的事情,在需求阶段,制定性能初步的标准则需要需求人员的协助,了解那些场景是重要的,大约有多少人用,有多大数据量;而在设计场景时不仅要从需求中设计出必需要测试的场景,有时候需要通过功能测试人员了解,他们在测试过程中那些场景运行的比较慢。而运行脚本时,则需要SA(System Administrator系统管理员,编者注),程序员帮你增加分析所需要的性能指标,而DBA(DataBaseAdministrator数据库管理员,编者注)则增加数据库监控的参数。在分析结果的阶段则需要三者相互灵活的配合,当发现性能问题时,可能会根据程序员或DBA的要求,不断的调整监控的参数,以便更精确的定位问题。而在优化阶段,则是找出性能的瓶颈并优化,更需要多方的配合,不仅仅是测试。51Testing软件测试网 }(ND`C^ z3B

W`@7z'Qe@H#l0在性能测试前期,也就是上图的前三个阶段,重点需要了解,系统有那一些重要的功能模块,大约的用户是多少,用户的行为是如何分布的,每个模块的使用频度,大约的数据量,使用什么样的硬件,系统稳定性的要求等等。当然需求人员不是专业的测试人员,这时专业性能测试人员就是跟据需求人员大致的描述或是文档,提取出这些重要信息,建立系统模型。下面的一份表就是某个大型系统邮件模块的数据模型:

H tNAv|7f Ij0

序号

#U{ o3MJL0

分类51Testing软件测试网 Y QI1IN#Rp

项目51Testing软件测试网c+o)n3A8[

数据51Testing软件测试网 \~1]G*Oyy4Lg

单位51Testing软件测试网J4r^$h]#mr

151Testing软件测试网-Yr$~C-xV1I

统计数据及经验数据

0]]t E;g _#?@"GN0

I ^&e\6DA3f3e8O_0A:总用户数51Testing软件测试网 })jv_j.\ |

5,000,00051Testing软件测试网F OqT Z6g4jK

Cs6l k?&dt9n051Testing软件测试网7|Md4Rd@

251Testing软件测试网0rm} Wf

-w!i9zYu IxTo0B:激活用户比例,每天访问用户数点总用户数的比例

e;cg"? ]0

60%51Testing软件测试网8z'_;clV"y0zo7V

3

5LXTmdR4h0

6kC&?6h-s'}{V0C:每个激活用户邮件数51Testing软件测试网5|$Dla-l:By,j

50

6R!e\X7`qDv#IH*_0

H{;{n1|P"_z FA051Testing软件测试网{"YR_4y)C0s

4

EivkE'^;|Evj0

+j*Z:z8IN e0D:每个用户每天收到信数51Testing软件测试网1r)lZ e.[

8

o0?!@6nY0
51Testing软件测试网fsP2~ g:oD(i

51Testing软件测试网/Aj$i D,^Es$ICU

5

"X9]2e-Y9g4wT0
51Testing软件测试网yN^ t,c/B`

E:每个用户每天发送信数

6c/tJ*y&D_8|f.G U0

6

at]@:R;`1vN,Ex"T0

f:USbC(Hf q7C*Z h051Testing软件测试网iNy9]'^%FC7t

6

r}!A8sREf!}0

7_o9iOq5y] v0F:系统高峰时间(小时)

/c#\ g"[e'x{"xat0

451Testing软件测试网/foAr e y,TDR

51Testing软件测试网otQ)G{q0E

小时51Testing软件测试网;JD9st(nNuw

751Testing软件测试网2W2th d:[9]Z;O

3D*k Y_wx0G:高峰时间内收发的邮件数占一天总邮件数

^qck \!c0

50%51Testing软件测试网UQ2gSO wG*~

851Testing软件测试网cK I]dD

51Testing软件测试网3F8W$j%D7xGc*t

H:每个用户每天收发件次数

x!U*tI@@bY0

651Testing软件测试网S lZf H1|Z3n8j

51Testing软件测试网DzhD#dF

o.z Slg%Rj.}0

9

:N7n;Wt0J2?0
51Testing软件测试网qa7dL-r!D-`v

J:每封邮件大小平均为(K)51Testing软件测试网XV;e9MJ2{ @

3051Testing软件测试网 MH#i vh M0n%t

\a ?2m I"w'R4?0Kbyte51Testing软件测试网"\_v`1tNmu

10

g NQlA"ggXy j0

$sT5pL%x:`#_R"R0K1:据统计,使用WEBMAIL的用户数百分比:51Testing软件测试网.M3wEp_#?

70%

&adz7wI:k0

1151Testing软件测试网U5Si[/tv C1O

51Testing软件测试网2r4zI%F} ]T t

K2:使用邮件客户端软件的用户数百分比:51Testing软件测试网.A8YM8HG~

28%51Testing软件测试网"bd5A!J |

12

0O"D(mpaO0

y{Gk XK0K3:使用IMAP用户数百分比:51Testing软件测试网 ^G e_/{\'n

2%

-d9B&xvk+pb7q0

1351Testing软件测试网!Ec]0J"Z'`N;`

z%oe-Xb7lJ_0L:平均每通过web访问一封信,大约要访问页面数为:

8fT%sq*`cO0

4

3o| N } ]\&x0
51Testing软件测试网Mz-}(a7j.`/x

-{4L*@f_!g-P0

1451Testing软件测试网2nE/jcU\.D)aw5P

TKKGGDRp0M:假定每个页面大小约为51Testing软件测试网i4fuP7|&Q

3051Testing软件测试网.jN$b*_%_p"sp

51Testing软件测试网:O];A)Q9w+h6n,VY$bq

Kbyte

$K.P4^d0mh(p4fV3Q0

15

E@*t$Q!i'd? Q0
51Testing软件测试网bc0]k%C`#[c$U4Q

N:通过本系统向外转送百分比

a)t_3w/f ec#}h0

75%51Testing软件测试网],?6h(}'j3ZC h*x

1651Testing软件测试网8WR zU!e5T1l}Sm[.R

#Nko)xot9i0O:发送给本系统的邮件百比分51Testing软件测试网~.Y:f _/G5D

25%

9x[ @^L/fu f;b0

17

U-XTEg0|+{?0

d]uQpK/lw0Q:系统峰值时CPU利用率

])Fx?e0

60%

'IM+z{'|E.bP0

18

-{1nTSD#D0

19

6~ T&Q Z Yt%e K*[0

处理能力计算51Testing软件测试网V;_4E4Q nw1b

51Testing软件测试网e\5s,K1{,|U:Z0T

POP的处理能力=A*K2*B*D*G/(F*3600)51Testing软件测试网g!{;S6dLA3cN

52.7851Testing软件测试网 pL3T&ax

51Testing软件测试网]:g(e*r3^

封/秒51Testing软件测试网R.N9SBZ1GP k;h2A

20

.Y@v;|`t1v&}0
51Testing软件测试网e] `4Q@W4tw

POP流出系统量=(POP的处理能力*J)51Testing软件测试网r Ag\6We D_'g

1.58

o/DE~$p*O_ x\`0
51Testing软件测试网;[Gkbd:v

Mbyte/s

aQ G7I}Dz&i E0

21

\ gR-X1{\SJ0
51Testing软件测试网O iRJcs%?

HTTP的收信件处理能力=A*K1*B*D*G/(F*3600)

+F%?2[2n?+]l(g0

8351Testing软件测试网8o1a@(T'h F#`!fM

51Testing软件测试网e6E0g3yy` m

封/秒51Testing软件测试网/[(P g$|m(OR

2251Testing软件测试网HK|Y8{Y z^;B

51Testing软件测试网 V*Q;\K5k$u KYm

HTTP的发信件处理能力=A*K1*B*D*G/(F*3600)

vR ?5@o:C `}0

62.5

3^kHu^,T@ {;D v0
51Testing软件测试网+FyB~\Q%s G

封/秒

$M;V O lH F ?f!Z0

2351Testing软件测试网cy iHtHlv

51Testing软件测试网z'V _D)pR9v

HTTP流出系统量(平均页面大小*页面数* HTTP处理能力)51Testing软件测试网.y R,}b;\ zr*m

9.9651Testing软件测试网 [vT.F%OV(g

TGE;}fZ6o0Mbyte/s51Testing软件测试网 d$t*c]g5f AI O'C

2451Testing软件测试网m,x+TTj&D Z

51Testing软件测试网i4Wp(i2Z4L1w Dog"n

HTTP流入系统量(HTTP发信数*J)

B(Ww1q gHH7~6](T0

1.88

_Wxd|0

Wm h/rjR4b:HL k M0Mbyte/s51Testing软件测试网6Tyj)f0j4PvF#Z I

2551Testing软件测试网"cA\[x4`

/A ?z/G7I0SMTPIN(从其它系统收到邮件)=A*K2*B*D*G/(F*3600)

0r_*J+l[DWw0

52.78

G&l/u cP0

-PA7h#f6x`*gQ.\0封/秒

O QOr`Z/D]6i0

2651Testing软件测试网E{:nU!A)c,L"V

51Testing软件测试网8\fLJ?9qq

SMTPCLIENT(客户端发送系统)=A*B*E*G/(F*3600)

c+i h+u"v{5x/C0tr0

104.1751Testing软件测试网vP+Q4aT6K

s0TY bXZN!I2U kBq0封/秒51Testing软件测试网0QMD]oVb

2751Testing软件测试网]U|5V/Sv

51Testing软件测试网-X }U@7m'WjNU[

SMTPOUT(发送到其它系统)=A*B*E*G*N/(F*3600)

0}myO]%vOs*\0

7851Testing软件测试网Uq'v Z d3jura)m

2~/r!r.i1J+r4l0封/秒

U&i%~(ZJ0]w0

2851Testing软件测试网sd.C O.NqnCD*e

51Testing软件测试网[BI/j(xuEY

SMTP平均发信(SMTPIN+SMTPCLIENT+SMTPOUT)

+r&t.BA#E1W4fPU3u"[0

134

h#}*cmny6l4S0

lL8?0q xH,^,V[1g-J0封/秒51Testing软件测试网'p?nD _(X

29

\iJYC Cp+VT0

a dv$Omvz Q0SMTP流入量=(SMTPIN+SMTPCLIENT)*J51Testing软件测试网a%v'V'g1VU}6q

4.6851Testing软件测试网p}%h0xm%k.J4_

&JR_1?AkEp/dW0Mbyte/s51Testing软件测试网/o{L,tU-f6P i

3051Testing软件测试网 C;X$F,BZ]r]'p

51Testing软件测试网#rL/R&H!o

SMTP流出量=(SMTPOUT*J)

4sY~(P&L!n$]0

2.03

~&lu gl0
51Testing软件测试网a{r6X:d/Wkh @

Mbyte/s51Testing软件测试网h"_i Z$C

3151Testing软件测试网.Oo,[:leJF}Y

51Testing软件测试网"[ y%y5l"i!yn

高峰时期邮件平均流入量

t&u.c1On7V3}0

6.5651Testing软件测试网G@H^&XD

51Testing软件测试网5Xa"KCj&S$}

Mbyte/s51Testing软件测试网1u:d(}+\2v,X"M

3251Testing软件测试网P JDxr

;w{zI3Vu5qm0高峰时期邮件平均流出量

!Ok4E }1\+J0

13.57

7Z Y"Ui} }#F0

RzU5cx;E2u^0Mbyte/s

2N;F N9b/Pu{%q0

3351Testing软件测试网7d-\WG3T \A

A Mn^BU0高峰时期邮件平均总流量

ge1sAr V0

20.1351Testing软件测试网fKR2?"A7U;A`8oP8v

5b FBPBH~e m0Mbyte/s

U#q"l^6?8Sg?0

3451Testing软件测试网K4wrYm0f8{.s:o

51Testing软件测试网BF4d Y |[ F:z

系统带宽要求(流量×8(含协议数据))

D(Z8dN2S-C@ Gb`.g$xW0

16051Testing软件测试网4c0t;O(v.Vt

1Q6`C ~9Y2Tu$h_0Mbit/s

b:Ki g%p7~(J0

35

9?dZA@e|b0

 51Testing软件测试网DnFL1c

51Testing软件测试网 zh s.T!W!]:_)?kc

 

A8cZvb'f l4w/z#}0o0

 

\1@"XxT(\0

 

mqR)QyB+L0

3651Testing软件测试网+?O IKj3x!z tP

并发数计算

Ac C/vN ?-Q!k0
51Testing软件测试网*^;Ul5jc"x&ma1?p(K+f

POP高峰并发数目=A*K2 * B*H*G/(F*3600) 次/秒51Testing软件测试网0|7j^ k*S(Y

39.58

J7~J S9|Qb0
51Testing软件测试网8F b$O U`.LG:hP

次/秒

8B)\2Do V9Y'XS:eKAD@0

3751Testing软件测试网W1^0S:J.d O)@[A

y4r;~,g6J`q6pq0SMTP高峰并发数目=A*B*(D+E)*G/(F*3600) 次/秒

,z3M9mF"yg5bN0

183.0651Testing软件测试网A!V b]1[5M_

^;Qr1e2z}0次/秒

0hkv~.q,jGn0

38

_n5N5i7R~-e0

M8n;nn2{ As(S0HTTP高峰并发数目=A*B* (D+E)*K*L*G*O/(F*3600)次/秒51Testing软件测试网kB O"`-P

14551Testing软件测试网z%}K S RR9O+y}#Z.Z

8nk5@rm0次/秒51Testing软件测试网8xb&@%B:e yN{K

39

z0D;rfxO*z)K0
51Testing软件测试网0J2M$h0PYa~F+G

IMAP高峰并发数目=A*D*K3*B*I*G/(F*3600)次/秒

2P;lVyW0

0.35

:_L/j$AC(N%R0

Q8o8rk5@A0次/秒

?G*oU$V:~/R2gH0

某模块数据模型图51Testing软件测试网r P'Y G I:O

7O$t6G-}UPv0上表中可以分析出此邮件系统中最主要的应用是webmail,smtp,pop,其中webmail方式大约为活跃用户的70%,而其它方式则占30%,同时它还给出了平时的参数指标,与峰值的时间与指标。这样你后面的场景设计则重点会很清楚,三种方式是测试的重点,用户的分布也很清晰。从上表中还可以看出,此场景的需求人员做了大量的细致的性能分析工作,在国内这样专业的需求人员不是很多,有时候只能靠性能测试人员不断的沟通来获得必要的性能信息,同时在这个阶段也最好与有经验的架构师多沟通,了解系统可能存在的性能瓶颈,以便使自己设计的场景更有针对性。

Ow"wg8d7}0

/Aa3];\"s dj0场景设计完成之后就进入了脚本的编写,在这个阶段,主要是性能测试人员的程序能力。在这一方面,测试工具是比较多的,我所熟知的就有ACT,WAS,LoadRunner等工具。从原理看,其实都是一样的,不过如果是测试复合协议的应用,LoadRunner 则是首选,特别是在几个协议同时使用的应用,比如类似于QQ这样的应用可能会用到多个协议来进行录制。其实在录制脚本的第三个阶段也是需要跟程序员配合的,比如在录制web应用程序中,对session,cookie的处理,对业务上一些请求的处理,这些都需要程序员协助,同时他们也能够帮你确认某一阶段,用什么样的技术,选什么样的协议,从而帮助你更好的编写模拟应用场景的脚本,在这里测试人员经常会认为只要掌握了工具就行了,其实在这里需要很好的编程功底,希望大家多多关注这些脚本的编程,而不是用一两个工具。51Testing软件测试网?$AkT@+v3@

51Testing软件测试网bD*f iudDJ {V'y

脚本的运行与监控,还有分析结果也是重中之重,在运行时,可能会跟据不同的应用选择监控的参数,比如在程序运行中,是否有大量的IO读写,网络交互,或是线程切换,在数据库,是不是有大量的逻辑读写的操作,或是执行频度特别高的SQL执行,这些有可能你是了解的,但是如果身边有DBA的专家,与架构师,他们会更了解应用程序的性能瓶颈,会需要一些有效的监控指标,这时你在选择性能监控指标时,要多听他们的意见。特别是发现性能问题时,可能需要程序员与DBA参与进来时,再次运行场景时,更需要增加一些他们认为可能出问题的监控指标。当然作为测试人员也要了解,这些指标的异常,可能是由于应用程序那一方面不合理的,为研发提出合理的意见。51Testing软件测试网7lc&GQ]|m

51Testing软件测试网"E ~ B5e2C:`!c7m

发现问题后就是tuning ,这也是性能测试最终的目的,发现性能问题,并进行解决。前面的几个阶段,可能是只定性的发现问题,而如可精准的发现问题,则需要扎实的编程功底。对于代码的tuning有如下原则,发现占用时间最长的函数,而不是优化性能不合理的函数。在对代码的tuning中,你可以借助代码分析工具,下面就是IBM-Quantify执行后的图:51Testing软件测试网6O Oj0]$Q-{(v V0u&I

51Testing软件测试网v%fC0Q'Z F*g;r

Purify的分析图51Testing软件测试网\8ic cH$JL

[ RA7x[0VMt|0可能大家使用这个工具时会觉的晕,其实我第一次用时也晕的N次,其实用多了很简单的,工具都是相通的,在这里只要把握程序的脉络,就好像庖丁解牛,最主要是关注程序占用时间最长的函数和调用次数最多的函数,只有对这样的函数进行优化才能事半功倍,而一些程序员往往喜欢优化算法不合理的函数,费了九牛二虎之力,却发现效果并不是很好。在这一阶段经常会碰到以下一些情况:

Y){1sy#F"G0
  • 程序调用数据库接口函数时发现时间过长;
  • 初始化一些事务的次数过多;
  • 某一些函数调用次数过多;
  • 有一些不应当出现的异常函数出现。

#@)M0j{*\ht(x0对于上面的第一种情况,一般是数据库可能是某一些SQL的效率不高,你可以与有经验的DBA把这段应用的SQL取出来,进行分析,确认一下是不是数据库的问题。其实在优化的过程中,数据库的优化是最简单的,不需要修改任何程序,而且效果往往是最好的。第二种情况,一般最大的可能是程序员把事务写在了循环的里面,造成了N多次的重复对事务的构建,众所周知分布式事务的构建是最消耗性能的,所以一般不要放在循环的里面。对于第三种情况可能性就更多了,调用次数多不代表错误,但如果性能因此大受影响,则是不被提倡的。第四种情况,就可能是一些什么不合理的异常出现所导致的,可能就是缺陷。在这个阶段由于要阅读成千上万的代码,即使你的能力超强,也是不可能完全了解了,所以当发现可疑的代码时,应与当事人一起去剖析这段代码,要耐心的分析每一种可能。有时候,这个活比技术还难做,如何在不伤到别人情感的情况下给别人指出错误,这可是测试人员最大的挑战,从技术上,到人的心理都要有所把握。虽然这一阶段难度比较高,但看到产品经过自己的努力,越来越快时,你会感到无限的成就感。

i1S$j4j3?*^.Z051Testing软件测试网Ly!W%L*xK@

最后只想再说一下,性能测试是一个团队的事情,不是某一种角色可以完全承担的,测试人员在每一个阶段要善于借用团队的力量,协调着做,同时也要不断提升自己的技术,只有不断的努力,帮助研发成功,才能得到在大家的尊重。51Testing软件测试网,n:p5T NVi%Y

51Testing软件测试网2qt O,r3s

版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们

%s,mr@o4e0

TAG:

四处游荡的风! 引用 删除 pose_123   /   2007-11-22 10:44:22
xiexie
 

评分:0

我来说两句

日历

« 2023-03-14  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 6281
  • 日志数: 12
  • 建立时间: 2007-11-20
  • 更新时间: 2007-12-20

RSS订阅

Open Toolbar