性能测试:什么是 Locust

什么是Locust

Locust是一个容易使用、分布式的压力测试工具。它是用于网站压力测试(或其它系统)并找出多少用户一个系统能够承载。html

在测试过程当中,策略就是一个Locust的蠕虫将会攻击你的网站。每个locust的行为(或你使用的测试用户)是你本身定义的,而且蠕虫进程从一个网页视图中被实时监测。这样会帮助你来实现测试,在真实用户使用前定义系统的瓶颈。apache

Locust是彻底基于事件的,所以能够在单台机器中支持数以千计的用户在线。和其它基于事件的程序相比较,它是不须要使用回调的。相反,它经过gevent使用轻量级的进程。每个locust测试你的网站时,其实是真实的在内部运行它本身的进程(或greenlet,准确的说)。这样就容许你不使用复杂的回调方法,而是使用Python编写复杂的场景。分布式

特性

  • 使用纯Python脚本编写测试场景工具

    不须要笨重的UI或臃肿的XML,只须要你平时编写的代码便可。使用协和来代替回调,你的代码看起来更像正常的Python代码块。post

  • 分布式 & 大量级 - 支持数以千计的用户测试

    Locust支持跨多台机器来运行压力测试。固然因为基于事件,一个Locust节点也能够在单进程下支持好几千用户。这背后的缘由是即便你模拟了这么多用户,但并非全部的用户都是活跃在攻击你的系统。一般,用户是空闲的,在等待下一次的动做。每秒的请求 != 在线用户数网站

  • 基于Web的UI编码

    Locust有一个整洁的 HTML + JS 用户交互界面,用于实时展现对应的测试明细。而且,因为UI是基于Web的,因此它是跨平台并容易扩展的。线程

  • 可测试任何系统日志

    即便Locust是面向Web的,但它可用于测试大部分系统。只须要针对你要测试的系统写一个client,再使用Locust来压测它。真的很容易!

  • 可改造的

    Locust是一个很是小巧并可改造的,而且咱们计划一直保持这样。全部重量级的事件I/O和协程都被委托给gevent。容易改造的测试工具是咱们建立Locust的初衷。

背景

Locust被建立是由于咱们要解决已经存在的问题。没有一个对于来讲能够解决正确的问题,它们没找到核心点。咱们尝试了JMeterTsung。这两个工具使用起来都很不错;在工做中,咱们屡次使用了前者来测试基准。JMeter。JMeter自带了UI交互,这一秒你可能认识这是一件好事。但你很快就会认识到,这是一个PITA,经过一些点击界面箅编码测试场景。第二,JMeter是基于线程的。这就是全部你想模拟的用户,你须要一个独立的线程。不用说,在一台机器实现几千用户是至关产灵活的。

另外一方面,因为是使用Erlang编写的,Tsung没有线程问题。它经过使用BEAM自身来实现轻量级线程,并很容易将量级提高。但,当定义测试场景时,Tsung和JMeter同样被限制了。它提供一个基于XML的动态描述语言来定义,在测试时的用户行为。我猜,你能够想像编码实现它的荣耀。当完成你的post请求并从测试日志中生成日志,展现任何图形排序或报告。接下来你就能够理解测试是怎么运行的。

不管如何,在建立Locust时,咱们已经尝试罗列这些问题。但愿上面的痛点都不存在。

我猜,你会说咱们真的只是罗列了咱们的好处。咱们但愿尽量的实现一些有用的。

做者

许可证

在MIT许可证下的开源许可(查看许可证实细)

相关文章
相关标签/搜索