使用Locust进行性能测试

  • 开篇
    最近因为某些不可抗拒因素:-D,不能在公司使用Loadrunner,找了一下开源的性能测试工具,决定使用Locust.

  • 什么是Locust
    Locust是一种易于使用的、分布式的、用户负载测试工具。它的目的是对web站点(或其他系统)做性能测试,并确定系统能够处理多少并发用户。

    Locust可以在测试过程中,模拟大量Locust实例会访问目标网站。每个Locust(测试用户)的行为是由自己定义的,并且可以从一个web UI中实时监控着这些进程。

    服务端性能测试工具最核心的部分是压力发生器,而压力发生器的核心要点有两个,一是真实模拟用户操作,二是模拟有效并发。

    在Locust测试框架中,测试场景是采用纯Python脚本进行描述的。对于最常见的HTTP(S)协议的系统,Locust采用Python的requests库作为客户端,使得脚本编写大大简化,富有表现力的同时且极具美感。而对于其它协议类型的系统,Locust也提供了接口,只要我们能采用Python编写对应的请求客户端,就能方便地采用Locust实现压力测试。从这个角度来说,Locust可以用于压测任意类型的系统。

    在模拟有效并发方面,Locust的优势在于其摒弃了进程和线程,完全基于事件驱动,使用gevent提供的非阻塞IO和coroutine来实现网络层的并发请求,因此即使是单台压力机也能产生数千并发请求数;再加上对分布式运行的支持,理论上来说,Locust能在使用较少压力机的前提下支持极高并发数的测试。


  • Locust主要功能
    • 不需要使用笨重的UIs或臃肿的xml代码。基于coroutines而不是回调,使用python代码即可实现.
    • 分布式的和可扩展的——支持成千上万的用户
      Locust支持在多台机器上运行负载测试,而且是基于事件驱动,即使是一个Locust节点也可以在一个过程中处理数千个用户。这背后的部分原因是,即使模拟了许多用户,但并不是所有用户都在积极地访问系统。通常,现实情况下,用户会有一个思考时间。每秒请求!=网上用户数量.
    • Locust有一个简洁的HTML + JS用户界面,可以实时显示相关的测试细节。由于UI是基于web的,它是跨平台的,易于扩展。
    • 可以测试任何系统
      尽管Locust是以网络为导向的,但它可以用来测试几乎所有的系统。只要写一个测试脚本,然后执行Locust来测试系统.
    • 可自由扩展
      Locust易于扩展,核心的代码不复杂。所有令人心烦的I / O和coroutines都被委托给gevent。

  • 简单示例
from locust import HttpLocust, TaskSet

def login(l):
    l.client.post("/login", {"username":"test_one", "password":"education"})

def index(l):
    l.client.get("/")

def profile(l):
    l.client.get("/profile")

class UserBehavior(TaskSet):
    tasks = {index: 2, profile: 1} #请求比例是in
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值