压力测试

导语 对于非专业的测试工程师来说,驾驭一款重量级的测试工具是非常困难的,本文主要介绍几款轻量级的测试工具和脚本来帮助非测试工程师进行一些常规的压力测试。

一、  压力测试中重要的概念

在进行压力测试中,有一些必要的名词概念是需要我们了解和熟知的,这些都是来判定项目服务器等是否健壮的重要参考信息

吞吐率(Requests per second)

某个并发用户数下单位时间内处理的请求数(req/s)

某个并发用户数下单位时间内能处理的最大请求数->最大吞吐率

总请求数/处理完这些请求所花费的时间

并发连接数(The number of concurrent connections)

某个时刻服务器所接受的请求数目。

并发用户数(The number of concurrent users)

并发连接数除以支持并发连接的基数(在http/1.1下,IE7支持2个并发连接,IE8支持6个,firefox3支持4个)

用户平均请求等待时间(Time per request)

处理完所有请求数所花费的时间/(总请求数/并发用户数)

服务器平均请求等待时间(across all concurrent requests)

处理完所有请求数所花费的时间/总请求数

二、  压力测试的统一标准?

对于压力测试的标准,针对各个公司有不同的标准,而且相对私密,所以压力测试是没有业界统一标准的,它和系统的用户量、服务器的设备,项目的性质等等息息相关。

压力测试

虽然没有指标的统一标准,但是有一些测试流程的技巧。

压力测试

 

三、  压力测试的工具

压力测试中我们常用的有很多,这里值着中说一下pylot和LR(load runner)

压力测试

四、  Pylot

Pylot是python写的压力测试工具,使用非常简单,但是安装过程中会出现一些小插曲。因为它对版本的要求非常严格,而且安装的先后顺序也会影响图形显示安装的成功与否,以下的安装列表一定要严格按照顺序执行,否则,pylot的测试报告中的图形会显示不出来

安装顺序:python2.6 or python2.7(对应版本的pylot)->wxpython->Numpy->Scipy->matplotlib

安装完成pylot会有一下目录结构,其中result是存放测试报告的目录,testcases是配置压测地址和条件的(也可以自己写urls的配置文件),测试只需要修改testcases中url字段即可(把需要测试的地址写上),利用命令进行测试。完毕

压力测试

例如:写入命令:python run.py –a 500 –d 10(500用户同时访问测试10)

压力测试

测试结束后,会在result文件夹中看到类似下图的一个报告文件夹

压力测试

压力测试

打开resluts,会有详细的报告(响应时间取90%,吞吐取50%),可以看到响应时间是0.105s,吞吐率是996

压力测试

第一张图:测试时间与响应时间的关系;第二张图:测试时间与每秒请求数量的关系

 

以上是测试报告,但如何确定项目的最大并发和吞吐还要结合对服务器的监控,当我们按照上述测试流程进行测试时,要时刻关注服务器cpu,连接数等情况(图形监控或是top命令查看),根据服务器的监控分析得出最大并发等数据,由下图可以得知,当连接数达到3700左右,cpu使用率100%,2500-3000之间,cpu使用率在60%左右。经过一段时间(基本一周左右)记录测试结果,然后根据七天平均就可以得出,最大并发和平均数以及各个测试指标

压力测试

五、  http_load和ab

http_load和ab是运行在linux上的测试工具,安装和使用方法非常简便,各位亲朋好友自行安装吧,按照下图的命令就可以进行测试了。简直是perfect!!

压力测试

六、  Load Runner(LR)

LR这里只简单介绍一下LR安装的一些坑,针对windows是完美的,但是针对liunx而言,LR只提供Load Generator组件,脚本的录制和场景设计必须在windows平台完成,所以建议大家还是安装windows版的为妙。具体的使用方法和注意事项请看ppt。

七、  lua语言

最后倾情为大家介绍一款非常赞的脚本语言,lua,由标准C编写而成,可以在所有的操作系统和平台上编译、运行,而且轻量至极,速度最快,一个完整的Lua解释器不会超过200k,据说现在金山等都在用。喜欢钻研的小伙伴们可以一起学习探讨