.B
LU:D
n'~C?0自己开发Socket性能测试工具的设想51Testing软件测试网 BZr2P#U
SV%Rd
i]7N$@5Ev%eV'c0最近接到一个项目,是对一个AppServer进行性能测试,使用lr进行了winsocket脚本的录制,一切搞定后,一运行发现问题,lr的试用版只能支持100个client,我要测试的在线虚拟用户数要达到3000,难道我搞30个负载生成器??无奈,放弃用lr,和开发商量了一下,自己写测试程序吧。
||rmj m(lS051Testing软件测试网D2i$qGhW'a2c:_R&C目前实现的功能:
:q'QNQ;`j0y01、Socket连接的建立51Testing软件测试网rPv:@wy(P
2、多线程51Testing软件测试网6ht*_(K^-S
3、结果的验证
!c2]2sDFsh$R04、性能的部分统计51Testing软件测试网
S:f(S*R2T
e$s
5、程序的log输出51Testing软件测试网
\v"b+H&Of|W
&@7MP%L3E?0通讯协议部分是开发协助搞定的(一般的App程序都用自己写的协议),加密以及报文格式等都由开发提供,我负责的只是多线程的实现以及结果的验证和分析(当然没有实现像controllor那样的监视图),我只是把数据记录下来并且保存到log里,然后使用perl或命令行来分析log。51Testing软件测试网g*V
m5^by4Y Ms
_
,hs"Wuse)@0遇到的难点:
Nrc_5B01、线程中的执行结果统计
V
C2MHR;b k*F^02、收发函数的实现
#J
i+@?Yvs2u03、如何实现线程的同步51Testing软件测试网 h(~4A
mM*cR4a
51Testing软件测试网!CpxO8T目前写了1000行出头(用Delphi7,很多类都是环境自带的,比较方便),发现实现的功能只够本次测试使用的,如果下次再进行类似的测试,仍需要大改特改,因此萌生了自己写一个可以通过配置与定义,可以实现大部分socket测试需要的测试工具。51Testing软件测试网uN A#j1H
w5\#E?Z`%C)YS
J0这个工具应包括如下功能:51Testing软件测试网Pw8Q0p:I T-B
1、自定义报文内容51Testing软件测试网D!G8}ZhFT
2、自定义加密解密算法
&}%dqfC03、自定义通讯过程51Testing软件测试网 |/extg(_*K
4、通过时间点来控制线程代码的执行与测试结果的输出51Testing软件测试网r!@Q+g'|:Cu&nh
5、完善的结果记录功能
JS@0`a2\%iD-ao$u06、测试报告的自动生成51Testing软件测试网tad
m@*luR
7、多负载生成的实现(调度,数据收集),类似controllor
!a;M6@^%fX08、较为完善的场景设计51Testing软件测试网j KR%u7`x#DO)pz
…………
2Pp}%f:Q!I#O051Testing软件测试网'g:?5D#I
fxbtp9G/t我水平自认为不怎么样,边学边写吧,呵呵。51Testing软件测试网6o Z e[l~h&H
O)i)TI4xI&W|&a0另外交流2个心得:
i)O ii8^ e%qnr01、自己写测试工具测试完成后,测试报告比较好写(因为什么图都没有,哈哈)51Testing软件测试网MG(V6Llc
2、loadrunner在进行socket性能测试的脚本录制时,如果遇到发送一个业务包,返回的包大小与个数时随机的时候,脚本就中断无法回放了,甚至我都想不出什么方法可以解决,可见loadrunner还真不是万能的哈
ag6bg#z|l051Testing软件测试网+BN*@2fBC8s3、曾经设想用dll实现然后用web协议调用,结果发现dll实现的无法监视真实的server响应时间,需要dll自己实现,无奈啊
"M!VKu\0+n7z2p6S!U0附录1:51Testing软件测试网%X6?@w;^QM L
测试报告如下:51Testing软件测试网M| O
Lf*C^}C
--------------51Testing软件测试网j?A:}
BCzGfv
产生压力场景:3000个线程 线程创建为每500毫秒一个 每个线程每隔500毫秒循环发包一次 循环300次退出线程 每个线程每次循环发包6个(功能1、功能2、功能3、功能4、功能5、功能6各一个)51Testing软件测试网sl,ZX-T%g*xv$O
A)j4[zdWj0请求的响应时间平均为1秒以下51Testing软件测试网/~ @!d
zs'v
请求的最大响应时间(极少的情况下)为4秒左右51Testing软件测试网+|n&F"B7@ygK
被测试服务器带宽占用45%(1G,大概为450M/秒)
$K't4^z.jn6{*G|{@0被测试服务器CPU使用率为50%左右51Testing软件测试网Z}1_5mxn E.cq
被测试服务器内存占用大概为900M左右51Testing软件测试网0w!TO(mq6L
被测试服务器虚拟内存占用大概为1.2G左右
k;_9~3g
qh5e0每秒钟客户端/server成功完成交易大概6000次/秒51Testing软件测试网;D}#v}AR3ik`
交易失败数为051Testing软件测试网8JC
PS5Xy0gX
被测试服务器在16分钟左右可以稳定完成交易数5400000次51Testing软件测试网-EeZ"y L1o6^g}
根据每位在线用户每3秒钟发送6次请求计算,目前可以支持3000个client在线并且稳定运行15分钟以上51Testing软件测试网;[.tVk,BOc{C
测试同时,测试组手动使用应用客户端的软件连接该服务器获得数据,使用正常,响应速度良好
,UQ[%mJL,n
C0--------------
GSX+l ul#pu051Testing软件测试网{t!TN(b w[附图偶写的那破东西的页面:
p%LL| xYu051Testing软件测试网M.eGaB51Testing软件测试网"V@ ?~Sb3J!J