松勤软件性能测试

前面的微信介绍项目的部署也是为性能测试做铺垫,只有对已经部署的项目做性能测试才有意义,因为中间价Nginx、uWSGI是影响系统性能的重要一环。

Locust性能测试工具

LoadRunner、JMeter都是非常好用的性能测试工具。

Locust同样也是性能测试工具,完全基于Python语言,采用Pure Python描述测试脚本,并且HTTP请求完全基于Requests库,除了HTTP/HTTPS协议外,Locust还可以测试其他协议的系统,只需要采用Python调用对应的库进行请求描述即可。

LoadRunner、JMeter采用进程、线程的方式,这种方式很难在单机上模拟出较高的并发压力。

Locust的并发机制摒弃了进程和线程,采用协程(gevent)的机制。协程避免了系统级资源的调度,因此可以大幅度提高单机的并发能力。

安装Locust

如果是python 2.*版本,则使用pip进行安装;

如果是python 3版本,则建议从GitHub克隆岛本地进行安装。

Locust安装目录下的setup.py文件的要求:

install_requires=["gevent>=1.1.2","flask>=0.10.1","requests>=2.9.1","msgpack-python>=0.4.2","six>=1.10.0","pyzmq==15.2.0"]

gevent:在Python中实现协程的一个第三方库,协程,又称微线程(Coroutine),使用gevent可以获得极高的并发性能;

flask:Python的一个Web开发框架,它与Djanog的地位相当;

requests:做HTTP接口测试的库;

msgpack-python:一种快速、紧凑的二进制序列化格式,适用于类似JSON的数据;

six:它提供了一些简单的工具来封装Python 2和Python 3之间的差异性;

pyzmq:如果你打算把Locust运行在多个进程/机器,建议安装pyzmq;

试运行一下locust,查看帮助信息:

性能测试案例

对于Web应用来说,它本质上是由一个个的Web页面构成,一般我们可以通过不同的URL地址来得到不同的页面。

1. 编写性能测试脚本

使用Locust编写一个简单性能测试行为表述脚本,创建文件:locustfile.py

UserBehavior类继承TaskSet类,用于描述用户行为;

baidu_page()方法表示一个用户行为,访问百度首页,使用@task装饰该方式为一个事务;

client.get()用于指定请求的路径“/”,因为是百度首页,所以指定为根路径。

WebsiteUser类用于设置性能测试:

task_set:指向一个定义的用户行为类;

min_wait:执行事务之间用户等待时间的下界,单位:毫秒;

max_wait:执行事务之间用户等待时间的上界,单位:毫秒;

2. 执行性能测试

首先,启动性能测试:

其中:

-f:指定性能测试脚本文件;

–host:指定被测试应用的URL地址,注意访问百度使用的HTTPS协议;

通过浏览器访问:http://127.0.0.1:8089(Locust启动网络监控器,默认端口号为8089),如图:

其中:

Number of users to simulate:设置模拟用户数;

Hatch rate(users spawned/second):每秒产生(启动)的虚拟用户数;

单击“Start swarming”按钮,开始运行性能测试,各个参数如下:

Type:请求的类型,例如GET/POST;

Name:请求的路径,这里为百度首页,即https://www.baidu.com/;

request:当前请求的数量;

fails:当前请求失败的数量;

Median:中间值,单位毫秒,一半的服务器响应时间低于该值,而另一半高于该值;

Average:平均值,单位毫秒,所有请求的平均响应时间;

Min:请求的最小服务器响应时间,单位毫秒;

Max:请求的最大服务器响应时间,单位毫秒;

Content Size:单个请求的大小,单位字节;

reqs/sec:每秒钟请求的个数。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171228B0O5UP00?refer=cp_1026

同媒体快讯

相关快讯

扫码关注云+社区