51Testing软件测试网4I1qX)l1F2s 性能测试新手误区(一):找不到测试点,不知为何而测51Testing软件测试网,K7dNEJ
ur:T
8ioD8m:vG0 性能测试新手误区(二):为什么我模拟的百万测试数据是无效的?
S9KRLSE uI0-p\(G4QPq0 性能测试新手误区(三):用户数与压力51Testing软件测试网V!X? E4VY-t"a
51Testing软件测试网U^$L,U6IyP"qC 经常会有性能测试新手问这样的问题:51Testing软件测试网-K)P!ien3J
51Testing软件测试网*}/E0a
jV2bM [ C/S的系统如何录制,应该选择什么协议呢?
,f1u-\+x;h*D051Testing软件测试网A}hd6GT,wsn 待测系统A的一个功能,是由B系统调用的,也需要搭建B系统的测试环境并对其录制么?
[/`eN1[P9B08j6qwV.rW,Q3hc0 我的回答是,先弄清楚你想测的是什么?对它而言,压力又是什么?51Testing软件测试网$s J`f.bJ
u6cK,D0RK3eO7p4F0
新手总是想着如何录制客户端的操作,如何模拟客户端的点击。这种想法应该是受到了主流测试工具影响,性能测试的入门基本都是从工具开始,比如使用最广的
LR,其最方便好用的功能应该就是录制了。但是需要清楚的是,录制只是为性能测试提供便利的一个功能(可以傻瓜式的产生向服务器施加压力的脚本),录制本
身并不是性能测试的根本或者所必需,能够产生压力的那些脚本或是程序才是关键所在。
%P4\_
Y7c!M8a1kZ-G2s+g02Dl7J{b0 第一个问题,比如一个即时通讯类的软件如何测试?
0VvWi7[%g]c051Testing软件测试网9O$A Fj$Wr6r 首先要明确你想测的是客户端还是服务端,如果是服务端,那么服务端承受的压力是什么呢?
7c
Zd?Bg051Testing软件测试网?q$Pedtu)v 是每一条消息都要经过服务器么?51Testing软件测试网bPj.{iwi!jP
51Testing软件测试网U|5b t G ~P 服务器是要将消息进行存储,还是仅仅转发?
T;oD!t.um O051Testing软件测试网^g-V/x4N
Z%@j$u
u 不同的功能,如普通会话和多人会话,从服务端来看的区别是什么?51Testing软件测试网iqqtAB
&VV}v9?4V0 客户端是如何同服务端通信的,是采用了一些标准的开源协议(如XMPP),还是经过了自己的重新扩展?51Testing软件测试网aNlV%Z,b z2@$N
Kd9NcA#l]`0 ……51Testing软件测试网m6^&S'y$r_-j
51Testing软件测试网1~2]DH
j
j'W 为了回答那两个看似很简单的问题(想测什么?压力是什么?),其实你需要了解整个系统的运行方式。这些信息完全可以从一些设计文档或者开发人员的口中获取到,并不需要你能读懂源码。51Testing软件测试网#q
m,r*l9@AA"g9QS}n
dhQQ$hs;K0 如果我知道了这个软件使用了XMPP协议,一条普通的会话是客户端向服务器发送了这样一条信息:51Testing软件测试网f
X;A{ T`
消息类型:普通51Testing软件测试网0D:e+bDF*wn&w0n 接收人:A51Testing软件测试网t
k5ok&f%_\*UJw 消息内容:XXX |
51Testing软件测试网(H
F,P{ e`-IL zi 而多人会话是客户端发送了这样的信息:51Testing软件测试网tcG6]T vp:]!n"AO+E
消息类型:多人 +],yf9])b/x
rY0接收人:A, B, C U_E)\,x5G.S}0消息内容:XXX |
51Testing软件测试网zPj4@n"{Q
那么应该会知道,表面上这些不同的功能,其实只是客户端发送信息中个别字段的区别而已。那么我就可以想办法直接向服务器发送这些信息,让服务器根据接收
信息的内容去完成相应的功能。也许根本没有必要去想如何录制客户端发起一个会话并发送消息这个动作,或者发送文件、群消息等等其他操作。51Testing软件测试网8S
Hl.tJRR
51Testing软件测试网*d8K*@v-iJ3u;QD 至于如何实现,如果你有编码能力,可以将开源代码引入到自己的测试代码中(需是标准协议),否者可能需要让程序的开发人员实现一个测试程序。不
要不敢开口,开发人员协助进行性能测试是很正常的,而且这种工作量不会很大,只是把程序中的一些代码封装成一个可配置可方便调用的执行文件。51Testing软件测试网!q$aY^|$x:x
51Testing软件测试网
Lx$zS7o2R 让开发人员来实现测试工具不丢脸,怕的是你自己不知道测试工具应该实现成什么样。(当然,如果自己可以看源码来实现工具那就更好了)51Testing软件测试网0bb)]
i*Q/F
51Testing软件测试网N |7B0`!E"F)b 第二个问题,同样的,所谓的B系统调用A系统这个动作,是如何实现的?
+vN.bu/KA{j0P P;|Zt-v&h'i0 会不会只是一个简单的HTTP请求?
A z,d0BX051Testing软件测试网5B5^bF9BV&b9^d1y 或者是调用A系统的一个webservice接口?51Testing软件测试网AA0[(w1d0cB{5D
51Testing软件测试网?Xmf\ 你要测的是A的这个功能么?
Pj
t2m@.Z5?Q0h1V@Dq1?#b0 如果是,那我们为什么一定要通过B系统来录制这A的这个功能呢?完全可以直接向A发送请求或者是调用接口(如LR中的webservice协议)。
T6_$U Wf0u5{_051Testing软件测试网's?8??&e/J6rP 至于具体如何做,可能有很多现成的接口测试工具,也可能仍然需要开发人员的协助。比如B与A之间传递的数据是经过加密的,那对(黑盒)测试来说就会非常困难,这种情况下,确实有可能通过B来录制会更简单。51Testing软件测试网7Ef/A
];g.n
`?-L~b h9y|0 在51Testing上看到的一个问题,问如何测试一个统计报表的另存为(excel)功能。51Testing软件测试网 c+`!K&c\
s@;^7U'Q9Rm0 点这个按钮后,服务器会生成一张报表,然后弹出浏览器的另存为对话框,保存为本地文件。提问题的这个人遇到的困难是,LR中好像没法录制“另存为”这个动作。51Testing软件测试网3Z2Y L8k4u_
o
51Testing软件测试网;X8O5P
B9et{8rI 之所以会有这样的问题,根本原因还是没有理解系统的运行原理,没有区分哪是服务器、哪是客户端。51Testing软件测试网 D_6G#jl;@b
p!XR g2M.e@9[0 一般来说,这个过程是这样的:51Testing软件测试网?L+S$@]h
8Q
srMs0 1、点另存为按钮时,向服务器发送了一个计算报表的请求,这个请求中会包含一些参数,如报表类型、统计时间等等。
~q T$Ym051Testing软件测试网6B}P\,mx.N2h 2、服务器计算完成后,将结果数据返回给客户端(浏览器)。
0g
`}g'IR0ef+Pa{^;r0 3、浏览器本身的功能,将数据保存为一个本地文件。51Testing软件测试网4rE2r;@4ju:Q
51Testing软件测试网bG9r'u"q`+\ (这里假设了计算过程是另存为按钮触发的,如果是打开页面时就计算完,那点按钮时甚至有可能根本没与服务器进行交互)
'NySVW DR'N051Testing软件测试网&[TYY%r4x} 如果明白了这个过程,那么就不会纠结于录制“另存为”这种事情了,你要做的只是向服务器发送一个请求,然后接收响应数据。51Testing软件测试网S0c} @\/m
q"o8\&g_
6a/]}r1pQP?0H0 那么就不需要生成本地文件了么?当然不是,否则怎么验证返回的数据没有问题呢。只不过这个文件的操作需要自己来实现了,创建文件、写入数据、关闭文件。51Testing软件测试网qy%tnw
f%^+s4]8f}V,H*N0 最后再总结一下要点:
|0L3f[9Qj`"o-y:h051Testing软件测试网0mU%WvdY S'?n ● 理解系统的运行原理
5sZh$D&cv `051Testing软件测试网K!_x d*v
tY\q ● 区分服务端和客户端51Testing软件测试网,wgc*y(pIB^'`
51Testing软件测试网3y/CoC-] ● 弄清楚你要测的是什么,哪些东西其实是可有可无的
I,[/f!o5`?
]#~ x0eS6J9G!Fpp4T0 ● 要模拟的是服务器的压力,而不是客户端的操作51Testing软件测试网d
e)eft"R.X-D
DSPpU q0 ● 录制只是一种手段,很多情况下并不是最佳选择
C2u
M,y+m6z1lfy1d N04bN
o(S-N0 ● 开发人员的协助是应当的,但前提是你要明确的知道应该如何测试51Testing软件测试网}8mO2K6iNTa
51Testing软件测试网-g E-E0Grvw+w:fXV/xL相关链接:51Testing软件测试网([,c,b/u)Ra$I!x2K
zq1Kl3\(c0性能测试新手误区(一):找不到测试点,不知为何而测
FT!}u\#J0^G;p(L`?#j){%X
a0性能测试新手误区(二):为什么我模拟的百万测试数据是无效的?51Testing软件测试网r dGE3\hPf
51Testing软件测试网mY#FNH?6{G性能测试新手误区(三):用户数与压力
|-nx PE vh"J0