bNr~)\9c1RsD0 事情的起因是这样的:51Testing软件测试网-jn!p$G~*\Gu
51Testing软件测试网2OxPypd
}%d7] 上周三下午要出去打个电话,经过小会议室门口的时候测试负责人叫住我问有事吗?小A做的性能测试出
现了点问,要我帮忙分析一下。打完电话后到小会议室与小A、测试负责人一起看小A的性能测试出现了什么问题。小A说她对X项目进行了性能测试,但是结果与
现在线上的差距特别大,线上入库是10条/秒,而她测试的结果是3-4条/秒,对于她测试得出来的结果项目的负责人很不认同,认为是她做错了,而她又找不
出来问题出在哪,她很郁闷。
C0B dB9iM051Testing软件测试网m e$v'd0RkC3~ 接下来是我们的一段对话
1j:GX0di1R0;q.^h
qto$m)~o ~0 我:小A,你说一下这次性能测试,是对哪几个点做的,场景都是啥样的?
mh0b!G^-Xa.k1a0,~)D
N&gS$|0v%qbu[Q;\0
小A:主要是两个点,一个是单一场景针对短信入库的,场景设计的是30、50、100条数据并发持续2个小时,是根据线上前段时间出现的问题发3万条短
信,结果处理的时间特别长这个问题设计的;另外一个是将接收到的不同类型的短信入库,是个混合场景,场景是短信2条、彩信1条、WAPPUSH1条、
EMN1条,这些数据并发,持续2个小时。
/_%kJR q~
E0_'pbraF;q9R
jX8J0 我:问一下,线上对于短信发送真实操作场景是什么样子的呢?
^dt$~O
J*r05a2BY,hy3| aNyp0 小A:这个我不知道啊,反正我只知道现在线上要求1个小时内必须把这些短信发完,线上现在预计的入库量是10条/秒。51Testing软件测试网3?_b3DSRk2\
L^(Nj/^l\u
R'r_0 我:好吧,换个问法,X系统小A你最熟了,线上的这个问题,有大量的数据过来,X系统 对这些数据是怎样处理然后入库的呢,是一批一批的处理,还是一条一条的处理呢,如果是一批一批的处理,对于这一批数据是怎样处理的呢,是同时处理掉,还是一条一条的数据。
xdH*{
aU4F0{7qG4VO
PV(r]x0 小A:这个我不清楚,要不一会儿我去问一下开发的吧。51Testing软件测试网1\#Aw
Q4{a
o6b"Flu;]M/Gzb6A0 我:我再问一下,现在搭建的这套测试环境,各个机器的配置是怎么样的?和线网的机器配置差距有多大?线网的带宽是多少?现在测试环境的带宽是多少?线网是有负载均衡的,有VPN通道的,测试环境上有这些吗?
9r-e E-n]0n:x(`@.]4UY p0 小A:tomcat的机器是一台服务器,4核的,另外两台数据库还有LR加压机都是实体机。线网的机器配置我不知道,测试环境也是100兆带宽,负载均衡啥的测试环境都做不了。51Testing软件测试网(v#jLkj
n
q9j)n9L
51Testing软件测试网F(gtsp-Oa 我:线网带宽是千兆的,测试环境的百兆带宽不全是给你来测试用的,公司上班时间所有同事办公还占用一部分带宽呢。线网的数据库做过一次优化的,有几个参数是调整过的。
5](aTru0T4p*kr~${0
我觉得这次问题的分析可以从几个方面来入手查,第一,场景设计,我从开发的那里了解到线上真实的情况是没有并发的,只是一条一条的来处理,处理的数据量
是3万条,1个小时处理完,是我们自己的要求。所以场景可以重新设计,设计成没有并发,处理3万条数据;第二,测试脚本的性能,测试脚本里的代码可能本身
响应时间就长;第三,机器配置、网络带宽,查看现在测试机的配置与线网比相差多少,这些能不能想办法进行一下换算,结果可能有误差,如果找到依据,看看误
差能控制在多少范围内。51Testing软件测试网Ai&?#?f#S|
*|psGY0 小A:我觉得脚本代码不是问题,我就是这样写的都能执行过去,能执行过去为啥就会有问题呢。线上真实的操作那在
那台服务器上还可能有别的省发短信呢,对那台服务器还有影响呢,那台服务器的配置好可能还有别的省来占用呢,所以机器配置也不应该是问题。带宽我觉得也不
是问题,公司百兆的带宽也够用了呀,我在测试的时候也没发现网络上哪里出现了问题,CPU占用率呀都非常少的。51Testing软件测试网^#W/p*G\r$r)k
51Testing软件测试网"c5z&y&J`,o[0W,H 我:......无语51Testing软件测试网B#B-O#\6~s&De Z
51Testing软件测试网Yw |ww*],pxGQd9l 对于性能测试,到底应该怎样做,会用了工具(最著名的是LR)就会了性能测试了吗?NO,NO,NO51Testing软件测试网!{ ],Q6DG6d/L)xB
I^
w ji5q Jt2D0 我认为:51Testing软件测试网mk#T
HQX]$s
iBmUz0 前期分析:51Testing软件测试网e'\$I)dt"wD|M4Y)x
51Testing软件测试网c]tQjv8D&}3JT
分析业务:分析用户群,业务真实使用和操作情况。比如在哪个时间段哪个操作会多,哪个操作会少,怎样来操作,是会有很多人一起对系统发起请求呢(所谓的
并发),还是数据量很大,但是都是一个请求一个请求过来的,很持续很长时间吗(比如8个小时都在做这样的操作),还是主要是对一定的数据量操作的(比如处
理完几十万条数据后任务就完成了),每次只有一个场景吗,还是是个混合场景都有,如果是混合场景,那么各个场景的比例大约是多少呢。线上已经有多少数据量
了?预期要达到多少数据量?
5w^H"~*kKSvS#U051Testing软件测试网0T
yMsa^p|b{d 分析环境:线上系统环境是什么样子的?有负载均衡吗?有多次转发吗?......机器配置是什么样子的,每
台机器上都有哪些服务?线网的带宽是多少?是专用的吗?搭建的测试环境和线网真实的环境有多大的差距,带宽是多少,是专用的吗?测试环境不可能与线网环境
是一模一样的,有办法换算吗?误差大约是多少?
Cn`;s0t"T051Testing软件测试网5w4S
B/[&O;m)m 分析团队成员:给你配备的配合的开发人员了吗?与你配合的开发人员靠谱吗?你的团队里有性能测试的高手吗?团队对这个项目的性能测试支持吗?51Testing软件测试网-EH
qCy]S
1Ox`8r p'rE0L0 时间分析:测试的时间充足吗?哪些是必须测的,哪些是可以不测的。
9QiasO051Testing软件测试网9L)Io-{^|yX\B)Z 测试执行:
a FQs+wt+YR0eZE|&ifj0 有了前面的详细的分析之后,才能整理出测试需求、设计测试方案、编写测试用例、编写测试脚本、设计出合理的测试场景,才能执行测试。51Testing软件测试网;d"j1?9z+EP
51Testing软件测试网#m4W]VQ O 结果分析:
'N&A6{7Pd|tg|051Testing软件测试网
`
E(MJ5m$Qj @ 测试出了结果,不能就算完事了,把结果丢给别人让别人分析查找原因,那不是高手,真正的高手是可以分析出问题在哪里,是什么原因产生的,怎样优化。简单的几个切入点可能从服务器系统CPU、内存等等,数据库中SQL执行速度,数据库CPU、内存等入手。查看事务平均响应时间是否在可控范围内,每秒处理的事务数怎样等等。借用一些工具查看操作数据库的SQL执行情况等等。51Testing软件测试网1a8?!ui1a4DH'C0i0@
k5A1jz%m2d+U^2@%zj0
总结一下,性能测试个人认为最重要的不是使用工具,而是测试前的分析和结果的分析,前面的分析够透彻才能保证后面做的是对的,而不是一上来就是用工具,
就大并发,只有大量的并发才是性能测试,一定得根据现实的真实使用情况来做才可以,违背了现实做再多也是无用。每次一听到有开发的对我讲你帮我们做一下性
能测试吧,弄个几万的压一下,我就特无语。
[0| ad:E.nZ`r0