更多的文章,访问我的个人博客:www.cesoo.info

性能度量的建立-让性能bug诊断更简单

上一篇 / 下一篇  2009-03-10 14:39:04 / 个人分类:性能测试

查看( 505 ) / 评论( 4 )

K)J6p Y;KQxr X0 相信本文会对处于下面两种状态的测试工程师朋友会有所启发和帮助

1NJ5]IyO }0\ dc051Testing软件测试网Sg uoE~0Q

1. 正要但还没开始做性能测试的朋友,除了loadrunner,不知道从哪里下手51Testing软件测试网9OS2s|`]P0h!f{

51Testing软件测试网K wuKIb/v

2. 已经开始做性能测试,正在被一堆问题困扰得焦头烂额的朋友。51Testing软件测试网 \$K Mu2c1@+U I?

51Testing软件测试网)Y3e}/t L

 

3Z4G| J iR9O'z:W"P/~0

Y.Y7f(R1mC9s&R8Vhg0听说过有的工程师运行几轮性能测试,就能迅速定位性能bug;更多地是听到某工程师运行N多次,就是不能复现问题,甚至整个研发部门开发人员测试人员齐上阵,都无法找到性能问题所在。这是为什么呢?是运气不好么?还是技术能力不强?51Testing软件测试网:y/^"w%T-I9K

e z-W(o\4L s0说说我看过的一个真实的案例:某大型外企的产品上线后,当用户数超过某个值的时候,在线的软件系统就会重启。这是一个严重的bug,但非常糟糕的是,在测试环境里,测试人员无论如何,都复现不出这个bug,研发部门的老总调用了精兵强将,包括众多开发骨干,苦苦搜索一个多月,也都无终而归,最后的结果是企业最终失去了这个大客户。其实这样一个大型系统,面对这种问题,别说开发人员,就是比尔盖茨来了,也无济于事。

;S? fMt%|0

"PQs3^;h#p,^$b0显然这不是技术能力范畴内能解决的困境,怎样使得性能诊断变得更加容易和方便?这其实是一个软件开发要考虑的可测试性问题。51Testing软件测试网#hq;zAV.mD [l-G

1i,O5ODY\6Kq Ga0对于性能测试来说,有必要在软件设计开发阶段遵守规范,建立一整套性能度量体系。体系包括

&km'[%N h1}#qZ0

oe3u'P7v-{JY+Q01. 性能诊断日志51Testing软件测试网xim{4KgC

51Testing软件测试网g:Y6NP5T,p3Dx

2. 在应用系统层次上建立性能度量

d_.VlV'H6ReL051Testing软件测试网.\dBmG8r2Qh

3. 数据库系统性能度量

RA UJ@0

N J(\Lr m+_0 51Testing软件测试网r;r5D`:h9}T

]qD\GH:]0性能诊断log包括一系列log等级设置和log格式,使得性能问题能够在log层次上被捕捉到,比如下面是一个SMPP协议网关实现的log51Testing软件测试网]y0O4_iG

{ c,c\h4W0TimeStatistic --------
~u'p#B.Ai8M,`0Statistic name                     : EnquireLength
[Sqg2m9X uP0Description                        : Time taken for a round trip ENQUIRE_LINK PDU.
3b{4w E*W.os)J$v0Measurement unit                   : MILLISECOND51Testing软件测试网'G8g%o"a^j I
Measurement start time             : 122421407488551Testing软件测试网]$P_l5Fy%I1^
Last measurement time              : 1224219511193
x V:vF E|0# times the operation was invoked  : 3
7Q O^ ey5^h1I+~ o0max time                           : 1951Testing软件测试网E|]C3RU
min time                           : 12
+Kt|?I0total time                         : 46

C3?0zB o-V_0

%_']:YZ-}-Ht0在性能诊断模式开启后,软件程序就会每隔10秒钟打印如上信息,从以上信息可以很清楚地看到SMPP网管处理多少个PDU,每个PDU花了多长时间。这样会第一时间内捕获网管的性能处理效率。

/q9L']3q0Lr051Testing软件测试网{Svr%`1P5^h

 

.M.@qh l3|K/O ef051Testing软件测试网}8FAE,cy

在应用层次上的度量多种多样,根据应用的不同,也有不同的度量方法。比如我们最常见的web 处理能力一般用每秒请求数(requests/second),每秒吞吐量(throughoutputs/second)。其实针对每一个应用,开发人员都应该建立相应的度量。

f6p|z X.d3M^u0

T[.AA2ps VsAL4o0比如一个email 的IMAP server,我们为其建立如下度量

;p4\H'BGr#y t-Q0

3`,B.r^J0 APPEND Average Time (milliseconds)

{-S |s h l%D0

B!\:O Vd1J0 APPEND Failure Rate (Failures/minute)

V*pzp1U051Testing软件测试网.w(Z-w[r)N9Bddp

APPEND Rate (Requests/minute)51Testing软件测试网B h,\)z6SQM

0h\ ^FW#{0AUTHENTICATE Average Time (milliseconds)51Testing软件测试网S%qFIiO

7iA?&T6U!W(D4U*b0AUTHENTICATE Failure Rate (Failures/minute)51Testing软件测试网-C/sn"v;|1~ w*v

al+R*Y8C n.S0等等。51Testing软件测试网eW }0Y!^%C

51Testing软件测试网hb4r-kg{r9{$`

一般地,度量要分为度量名,采集频率,预警值设置,预警信息等等。

0W:iWeby6k051Testing软件测试网Ui+},O v0dI V

开发人员则遵循规范,在开发过程中实现以上度量信息的采集。51Testing软件测试网 s$\c@;?{

u |-Dp;u p0 51Testing软件测试网skcDM6_Vu

51Testing软件测试网 {$~:U0A/_1d.FZ

在建立一个完善的性能度量体系后,性能的诊断和定位就变得更加容易,也完成了定性分析到定量分析的转变。

:?5uUv ]vAR051Testing软件测试网 o,I:k'_zq8F~3s1e2jR8T{

(有兴趣的朋友可以参看oracle的AWR报告,这是一个典型的基于度量的report)

`N1O,O9_'zajC0

TAG:

小楼一夜听春雨 断寒 发布于2009-03-10 16:02:09
说实在话,不是太明白.软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具v A.~g'C"C'@U"Uh
在日常工作中,如果性能测试未能发现而实际出现错误的时候,一般会抓取详细的中间件\OS\DB\软件系统的相关详细日志用于分析,可基本定位问题点,然后根据实际情况做相应测试去重现,这些过程一般会迭代多次,基本可以细化到具体.
sunshinelius的个人空间 sunshinelius 发布于2009-03-10 17:03:00
一个性能诊断性良好的软件系统一定要通过日志或度量的方式给软件人员留下尽可能多的性能信息。www.51testing.comZ-m']`%G#m/@$Vi
想想我们常用的性能测试瓶颈方法,如排除法,隔离法等等,通过运行不同场景,来判断哪个节点出了问题,在本质上都是黑盒测试,因为节点里的信息不够完整或透明。如果我们获得足够多的信息,完全可以一次运行,就能定位问题。
2ERQH,dj软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具中间件/DB/OS都提供了如oracle的top sql,MQ的message queue等度量,为什么我们的开发人员不能在开发应用程序的同时,也建立这样的度量接口呢? 实际上,应该在产品设计开发阶段,就要建立相应的日志规范和编码规范。
sunshinelius的个人空间 sunshinelius 发布于2009-03-10 17:06:24
呵呵,其实一些大型成熟的软件企业在开发团队内都有一套度量和日志规范。
如果Zee还在工作 Zee 发布于2009-03-11 18:16:20
说的很对。特别是对产品。
我来说两句

(可选)

Open Toolbar