性能测试新手误区(四):一切来自录制

上一篇 / 下一篇  2012-09-17 09:04:50 / 个人分类:性能测试

51Testing软件测试网 UYxC\Sdv

  性能测试新手误区(一):找不到测试点,不知为何而测

r-@3].}rJ s9qb]051Testing软件测试网gZ*L%? tO)Hh:FfI

  性能测试新手误区(二):为什么我模拟的百万测试数据是无效的?51Testing软件测试网*cQ:{5_$aw~#R3x

L6b\&B7N O6jM.^C0  性能测试新手误区(三):用户数与压力51Testing软件测试网 Z?uB.~LTh

*M.a@SlS0  经常会有性能测试新手问这样的问题:

T` ZLUUj)\0

u1J:p)v:tye0  C/S的系统如何录制,应该选择什么协议呢?51Testing软件测试网h cq;r+@WNt4`.{%\4u0W

u#I3k Z-s^v+y0  待测系统A的一个功能,是由B系统调用的,也需要搭建B系统的测试环境并对其录制么?

FP*Y0qd+NF W0

(Y*I2dO(gA6a0  我的回答是,先弄清楚你想测的是什么?对它而言,压力又是什么?

c*Z&U'f(` hZ051Testing软件测试网"q4bF A`YJX

   新手总是想着如何录制客户端的操作,如何模拟客户端的点击。这种想法应该是受到了主流测试工具影响,性能测试的入门基本都是从工具开始,比如使用最广的 LR,其最方便好用的功能应该就是录制了。但是需要清楚的是,录制只是为性能测试提供便利的一个功能(可以傻瓜式的产生向服务器施加压力的脚本),录制本 身并不是性能测试的根本或者所必需,能够产生压力的那些脚本或是程序才是关键所在。

|5T*z!b_5|*@051Testing软件测试网,a%gos U#W$c}?U b

  第一个问题,比如一个即时通讯类的软件如何测试?51Testing软件测试网Y;VxZq6f)p3WqR p d

%z+n8uXd Z0  首先要明确你想测的是客户端还是服务端,如果是服务端,那么服务端承受的压力是什么呢?51Testing软件测试网M:O sg {L

m6z }5fU pa0  是每一条消息都要经过服务器么?51Testing软件测试网~6k o8tFTCD

51Testing软件测试网qxtcP o

  服务器是要将消息进行存储,还是仅仅转发?51Testing软件测试网D,CWh/p,H

51Testing软件测试网O;^)` e%GS

  不同的功能,如普通会话和多人会话,从服务端来看的区别是什么?

@ f5E(\4^S[051Testing软件测试网}&D;JWLP#tk

  客户端是如何同服务端通信的,是采用了一些标准的开源协议(如XMPP),还是经过了自己的重新扩展?51Testing软件测试网/KAg^,Lvj)x Kk\

](_'X3v*zvoV0  ……

B B:xW$H0

wTq}Ldf6J0  为了回答那两个看似很简单的问题(想测什么?压力是什么?),其实你需要了解整个系统的运行方式。这些信息完全可以从一些设计文档或者开发人员的口中获取到,并不需要你能读懂源码。

3b3bx4V'I r0

:LG |5e/lt \mE4S0  如果我知道了这个软件使用了XMPP协议,一条普通的会话是客户端向服务器发送了这样一条信息:

Rj T6JO.T0
消息类型:普通51Testing软件测试网/G8kA!o[ lsh$T
接收人:A51Testing软件测试网6t:k%[ F:t-cv
消息内容:XXX
51Testing软件测试网H3o_yL7Z.b*\J Y1y

  而多人会话是客户端发送了这样的信息:

B!k6v(y!z W(C0
消息类型:多人51Testing软件测试网[dPJe] A.z
接收人:A, B, C
}A&]/O#r5?s0消息内容:XXX

!F DP:\ p6K1qV'x0   那么应该会知道,表面上这些不同的功能,其实只是客户端发送信息中个别字段的区别而已。那么我就可以想办法直接向服务器发送这些信息,让服务器根据接收 信息的内容去完成相应的功能。也许根本没有必要去想如何录制客户端发起一个会话并发送消息这个动作,或者发送文件、群消息等等其他操作。

Zi cP$\f:L}e051Testing软件测试网 `B_0XrN(yDI

  至于如何实现,如果你有编码能力,可以将开源代码引入到自己的测试代码中(需是标准协议),否者可能需要让程序的开发人员实现一个测试程序。不 要不敢开口,开发人员协助进行性能测试是很正常的,而且这种工作量不会很大,只是把程序中的一些代码封装成一个可配置可方便调用的执行文件。

7`2YS4I)O Q*y051Testing软件测试网2P1r8GW h T1~/\U

  让开发人员来实现测试工具不丢脸,怕的是你自己不知道测试工具应该实现成什么样。(当然,如果自己可以看源码来实现工具那就更好了)51Testing软件测试网}9i-D9e!Z H

"{Q3hg5s*W1~O}aA0  第二个问题,同样的,所谓的B系统调用A系统这个动作,是如何实现的?

C5a+as dE?051Testing软件测试网.P$~%Qy+I6K(pU$E%A

  会不会只是一个简单的HTTP请求?

no)~(zln6i r051Testing软件测试网6O5Pa9Sq

  或者是调用A系统的一个webservice接口?

t [(w1kG:?{051Testing软件测试网;t8X,Yt5}e o

  你要测的是A的这个功能么?

9b7w@"aHr(u3d051Testing软件测试网!Km5YI {_-F ~P

  如果是,那我们为什么一定要通过B系统来录制这A的这个功能呢?完全可以直接向A发送请求或者是调用接口(如LR中的webservice协议)。51Testing软件测试网[0x8kj1u}i

-\9ky E$|o.M0  至于具体如何做,可能有很多现成的接口测试工具,也可能仍然需要开发人员的协助。比如B与A之间传递的数据是经过加密的,那对(黑盒)测试来说就会非常困难,这种情况下,确实有可能通过B来录制会更简单。51Testing软件测试网_Q6`2?Y r

QJ3V/MH0o&Khs0  在51Testing上看到的一个问题,问如何测试一个统计报表的另存为(excel)功能。51Testing软件测试网_5Wn\;_%G

51Testing软件测试网,GC.]"w7_9S$YUp

  点这个按钮后,服务器会生成一张报表,然后弹出浏览器的另存为对话框,保存为本地文件。提问题的这个人遇到的困难是,LR中好像没法录制“另存为”这个动作。

bH*WO)H,P0R0

|(^ ^,L-T@ C~0  之所以会有这样的问题,根本原因还是没有理解系统的运行原理,没有区分哪是服务器、哪是客户端。

lDICDN&r9z)c051Testing软件测试网z0e'hq)?wb5K

  一般来说,这个过程是这样的:

Q4fbD/U-M0

}!}AJ^7G~C0  1、点另存为按钮时,向服务器发送了一个计算报表的请求,这个请求中会包含一些参数,如报表类型、统计时间等等。

}(cNr k/e*n ~G051Testing软件测试网+{f1dc-^

  2、服务器计算完成后,将结果数据返回给客户端(浏览器)。51Testing软件测试网$}Lo3f S

8l&_:{z8|;IpA0  3、浏览器本身的功能,将数据保存为一个本地文件。

sv W6L&Hls051Testing软件测试网3Xt)~@'l[

  (这里假设了计算过程是另存为按钮触发的,如果是打开页面时就计算完,那点按钮时甚至有可能根本没与服务器进行交互)

*KhR$_V9WV*r(@)d051Testing软件测试网$uO*E[ wY Kd

  如果明白了这个过程,那么就不会纠结于录制“另存为”这种事情了,你要做的只是向服务器发送一个请求,然后接收响应数据。51Testing软件测试网,DDO}z'n

51Testing软件测试网Q'QTh8]"U9@

  那么就不需要生成本地文件了么?当然不是,否则怎么验证返回的数据没有问题呢。只不过这个文件的操作需要自己来实现了,创建文件、写入数据、关闭文件。51Testing软件测试网 v5lG(AM lM `3]3m'm2H?

51Testing软件测试网6}w9Q6o1gmZD

  最后再总结一下要点:51Testing软件测试网 cNNb;s7K~D&|'\|

51Testing软件测试网Z QP9R#g~NQ

  ● 理解系统的运行原理51Testing软件测试网q6a*O;MO'}

51Testing软件测试网$R9C T2Z9ZWc*u

  ● 区分服务端和客户端51Testing软件测试网Fw(l.K$G F \e

IWZuz dIWR0  ● 弄清楚你要测的是什么,哪些东西其实是可有可无的

3f)GZ PD#vydu}051Testing软件测试网Q&n3y4kh)cw;Mj1{

  ● 要模拟的是服务器的压力,而不是客户端的操作

vsX.D8YF:e8|X P051Testing软件测试网 vkg[lsM*f

  ● 录制只是一种手段,很多情况下并不是最佳选择51Testing软件测试网-A{V#GK sk

51Testing软件测试网Dt*J@Rn5aJ

  ● 开发人员的协助是应当的,但前提是你要明确的知道应该如何测试51Testing软件测试网{"P!R {8l~iu

51Testing软件测试网{_:z0ct%V)q0}?4K

相关链接:51Testing软件测试网4K4U{1L(\L(u-fX

51Testing软件测试网wcY J%uJ

性能测试新手误区(一):找不到测试点,不知为何而测

olj!W(S2NY3] o051Testing软件测试网7AvFzvOY%B

性能测试新手误区(二):为什么我模拟的百万测试数据是无效的?

2kc9m w%tE(Y0

+A(Zp}#ZT4UdG0性能测试新手误区(三):用户数与压力51Testing软件测试网#s)N-i/Yy(n4F


TAG:

 

评分:0

我来说两句

Open Toolbar