关注于测试自动化和测试管理,我是一个永远的测试新手。

自己开发Socket性能测试工具的设想

上一篇 / 下一篇  2007-11-29 23:44:17 / 天气: 晴朗 / 心情: 平静

^,x y9chX:[Q%_e0自己开发Socket性能测试工具的设想

(I },a%@iA"q051Testing软件测试网P P9X&K g ~%A

最近接到一个项目,是对一个AppServer进行性能测试,使用lr进行了winsocket脚本的录制,一切搞定后,一运行发现问题,lr的试用版只能支持100个client,我要测试的在线虚拟用户数要达到3000,难道我搞30个负载生成器??无奈,放弃用lr,和开发商量了一下,自己写测试程序吧。

Oiyc9~^0

k-KM P)l0dk%Q0目前实现的功能:
.g*? ]&N^y01、Socket连接的建立51Testing软件测试网,k(dW` j^
2、多线程51Testing软件测试网GTF~ e*Xm%u&eB^6@E
3、结果的验证
|+dO-O7Rr_f5L!sDC04、性能的部分统计
Xx5of)Th05、程序的log输出51Testing软件测试网:a].{ K(@.c\

uT Gc8_6ZA0通讯协议部分是开发协助搞定的(一般的App程序都用自己写的协议),加密以及报文格式等都由开发提供,我负责的只是多线程的实现以及结果的验证和分析(当然没有实现像controllor那样的监视图),我只是把数据记录下来并且保存到log里,然后使用perl或命令行来分析log。51Testing软件测试网'fI;T(D1\_%}m5I

51Testing软件测试网L6QT;e O8LF

遇到的难点:51Testing软件测试网 A S:y[1\G9JT
1、线程中的执行结果统计
UW2N[0Q}_6_02、收发函数的实现51Testing软件测试网e:M!Lh*fj5t1O
3、如何实现线程的同步

3}*v2w;ak4C8Y0

q y yw+~6P0目前写了1000行出头(用Delphi7,很多类都是环境自带的,比较方便),发现实现的功能只够本次测试使用的,如果下次再进行类似的测试,仍需要大改特改,因此萌生了自己写一个可以通过配置与定义,可以实现大部分socket测试需要的测试工具

K-|6M5_ \ i'bH_$\.q051Testing软件测试网X.ZYcE'T.~%]

这个工具应包括如下功能:51Testing软件测试网+@j#]v[
1、自定义报文内容51Testing软件测试网 j9S"DX uTu ?]
2、自定义加密解密算法51Testing软件测试网7`M#i|i.X|
3、自定义通讯过程
L[;IL%q_&Q04、通过时间点来控制线程代码的执行与测试结果的输出51Testing软件测试网DJP9@0u0^%Md%W@
5、完善的结果记录功能51Testing软件测试网z A'B6q#Wf/@
6、测试报告的自动生成51Testing软件测试网(gKK8b To4@'S2_F
7、多负载生成的实现(调度,数据收集),类似controllor51Testing软件测试网*ln7lc/B){4t
8、较为完善的场景设计
M2D{J+QTQ{.ki0…………51Testing软件测试网 oW7Pdx

51Testing软件测试网 Jf JolB:W+M6T

我水平自认为不怎么样,边学边写吧,呵呵。

}1X'{ ExoI051Testing软件测试网%fo|c1O$Sm0A @5I

另外交流2个心得:
k6B dqX01、自己写测试工具测试完成后,测试报告比较好写(因为什么图都没有,哈哈
)\ aMP-|"C}02、loadrunner在进行socket性能测试的脚本录制时,如果遇到发送一个业务包,返回的包大小与个数时随机的时候,脚本就中断无法回放了,甚至我都想不出什么方法可以解决,可见loadrunner还真不是万能的哈

3Q9E'q7m Lr0

@%A B ^A*_;C`Y03、曾经设想用dll实现然后用web协议调用,结果发现dll实现的无法监视真实的server响应时间,需要dll自己实现,无奈啊51Testing软件测试网k5pN#~ {'L7@

]/m${g\2Q*Q1Y(zXk7P0附录1:51Testing软件测试网2?$I(xxNW
测试报告如下:51Testing软件测试网i{9QTb
--------------
%VP*~k`\0产生压力场景:3000个线程 线程创建为每500毫秒一个 每个线程每隔500毫秒循环发包一次 循环300次退出线程 每个线程每次循环发包6个(功能1、功能2、功能3、功能4、功能5、功能6各一个)51Testing软件测试网O sLRsqmeP
 
`~:y2A&NH2]#aT0请求的响应时间平均为1秒以下
"ec? kH$k0请求的最大响应时间(极少的情况下)为4秒左右
!nN`%zY!i0w-Fz B0被测试服务器带宽占用45%(1G,大概为450M/秒)
0Iw)b;Ut(JN [V0被测试服务器CPU使用率为50%左右
W0q$Zqj3_:c5i0被测试服务器内存占用大概为900M左右51Testing软件测试网Q$V-x_ T\:q jG
被测试服务器虚拟内存占用大概为1.2G左右51Testing软件测试网X`E kbJ^Mb
每秒钟客户端/server成功完成交易大概6000次/秒51Testing软件测试网0xa)s*d Q { q#m
交易失败数为0
$L[N{S8y;a2U? I0被测试服务器在16分钟左右可以稳定完成交易数5400000次
Ab3I8hU0根据每位在线用户每3秒钟发送6次请求计算,目前可以支持3000个client在线并且稳定运行15分钟以上51Testing软件测试网EeD;Os(Z:A^
测试同时,测试组手动使用应用客户端的软件连接该服务器获得数据,使用正常,响应速度良好
1@ Rnc5q$t0--------------51Testing软件测试网r%^*u:U6eSp.l8d

51Testing软件测试网!b}o-H0l

附图偶写的那破东西的页面:51Testing软件测试网mG1H1fa n

K\*mc0i#{]uF2qD(L051Testing软件测试网j Q G/C:q[


TAG: 性能测试 测试工具

引用 删除 wuweicoco   /   2010-12-13 14:33:40
用DLL实现Socket,Web脚本中调用DLL
多线程仅仅是多线程,无法利用好多核CPU
结果发现dll实现的无法监视真实的server响应时间
lr_start_trans()
iReturn = Send();
if(iReturn == xxoo)
{
    lr_end_trans()
}
else
{
    lr_end_trans()
}
v522zy的个人空间 引用 删除 v522zy   /   2010-07-30 12:34:37
5
小屋 引用 删除 mklodoss   /   2009-09-09 13:57:38
顶,有思想。
引用 删除 hhllxxss   /   2009-08-24 19:40:13
从界面看应该是DELPHI做的软件的哦!楼主加油!
引用 删除 changing   /   2009-05-11 16:44:12
超级牛!
引用 删除 cynthiagu   /   2008-04-28 09:38:15
可以把软件和我分享一下吗
HMILYJCH 人淡如菊 引用 删除 hmilyjch   /   2007-12-14 11:57:20
恩,比较狠
高高的美丽天空 引用 删除 meiliqingdao   /   2007-12-11 18:05:03
挺好,自己动手丰衣足食!
一步一脚印 引用 删除 hjjlearning   /   2007-11-30 00:30:12
呵呵,不错,有思路
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

qiguojie

qiguojie

北京测试一草根儿

日历

« 2020-07-09  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 104116
  • 日志数: 39
  • 图片数: 1
  • 建立时间: 2007-06-05
  • 更新时间: 2011-06-29

RSS订阅

Open Toolbar