性能测试工具Locust入门到精通系列(一):Locust简介

什么是LOCUST?

Locust是易于使用的分布式用户负载测试工具。它旨在对网站(或其他系统)进行负载测试,并确定系统可以处理多少个并发用户。

这个想法是,在测试期间,一群Locust 会攻击您的网站。每个Locust(或测试用户)的行为由您定义,并且通过Web UI实时监视群集过程。这将帮助您在允许真正的用户进入之前测试测试并确定代码中的瓶颈。

Locust完全基于事件,因此可以在一台计算机上支持数千个并发用户。与许多其他基于事件的应用程序相比,它不使用回调。相反,它通过gevent使用轻量级进程。群集您站点的每个Locust实际上都在其自己的进程中运行(正确地说,是Greenlet)。这使您可以在Python中编写非常有表现力的场景,而不会使回调复杂化代码。

功能

  • 用普通的Python编写用户测试方案

不需要笨拙的UI或庞大的XML,只需像通常那样编码即可。基于协程而不是回调,您的代码外观和行为类似于正常的阻塞Python代码。

  • 分布式和可扩展-支持数十万用户

Locust支持分布在多台计算机上的运行负载测试。由于基于事件,因此即使一个Locust节点也可以在单个过程中处理数千个用户。其背后的部分原因是,即使您模拟了这么多用户,也并非所有人都在积极使用您的系统。通常,用户无所事事,想知道下一步该怎么做。每秒请求数!=在线用户数。

  • 基于Web的UI

Locust具有简洁的HTML + JS用户界面,可实时显示相关的测试详细信息。而且由于UI是基于Web的,因此它是跨平台的并且易于扩展。

  • 可以测试任何系统

即使Locust是面向Web的,它也可以用于测试几乎所有系统。只需编写一个您想要测试的客户,然后用Locust将其拥挤!超级容易!

  • 容易被破解

Locust很小,很容易被入侵,我们打算保持这种状态。事件I / O和协程的所有繁重工作都委托给gevent。替代测试工具的脆弱性是我们创建Locust的原因。

背景

Locust之所以建立,是因为我们受够了现有的解决方案。他们都没有解决正确的问题,对我而言,他们没有抓住要点。我们已经尝试过Apache JMeter和Tsung。两种工具都可以使用。我们在工作中多次使用前者进行基准测试。JMeter带有一个UI,您可能会认为这是一件好事。但是您很快就会意识到,通过某些点击界面“编码”您的测试方案是PITA。其次,JMeter是线程绑定的。这意味着对于每个要模拟的用户,都需要一个单独的线程。不用说,在一台计算机上对成千上万的用户进行基准测试是不可行的。

另一方面,Tsung没有用Erlang编写的线程问题。它可以利用BEAM自身提供的轻量级工艺,并且可以愉快地扩展规模。但是在定义测试方案时,Tsung和JMeter一样有限。它提供了基于XML的DSL来定义用户在测试时的行为方式。我想您可以想象“编码”这一点的恐怖。完成后显示任何种类的图形或报告,都需要对测试生成的日志文件进行后处理。只有这样,您才能了解测试的进行方式。

无论如何,我们在创建Locust时都试图解决这些问题。希望以上痛苦点都不存在。

我猜你可以说我们真的只是在尝试挠痒痒。我们希望其他人会发现它和我们一样有用。

你可能感兴趣的:(91testing)