Locust は、HTTP およびその他のプロトコル用のオープンソースのパフォーマンス/負荷テスト ツールです。開発者に優しいアプローチにより、通常の Python コードでテストを定義できます。
Locust テストは、コマンド ラインまたは Web ベースの UI を使用して実行できます。スループット、応答時間、エラーはリアルタイムで表示したり、後の分析のためにエクスポートしたりできます。
通常の Python ライブラリをテストにインポートでき、Locust のプラグイン可能なアーキテクチャにより無限に拡張可能です。他のほとんどのツールを使用する場合とは異なり、テスト設計が GUI やドメイン固有の言語によって制限されることはありません。
すぐに開始するには、ドキュメントにアクセスしてください。
ユーザーにループ、条件付き動作、または計算を実行させたい場合は、Python が提供する通常のプログラミング構造を使用するだけです。 Locust は、独自のグリーンレット (軽量プロセス/コルーチン) 内ですべてのユーザーを実行します。これにより、コールバックやその他のメカニズムを使用する代わりに、通常の (ブロッキング) Python コードのようにテストを作成できます。シナリオは「単なる Python」であるため、(XML またはバイナリ形式を使用する他のツールとは対照的に) 通常の IDE を使用して、テストを通常のコードとしてバージョン管理できます。
from locust import HttpUser, task, betweenclass QuickstartUser(HttpUser):wait_time = between(1, 2)def on_start(self):self.client.post("/login", json={"username":"foo", "パスワード":"バー"})@taskdef hello_world(self):self.client.get("/hello")self.client.get("/world")@task(3)def view_item(self):for item_id in range(10):self.client。 get(f"/item?id={item_id}", name="/item")
Locust を使用すると、複数のマシンに分散された負荷テストを簡単に実行できます。これはイベントベース (gevent を使用) であるため、単一プロセスで数千人の同時ユーザーを処理できます。特定のハードウェア上で 1 秒あたりにより多くのリクエストを実行できるツールは他にもあるかもしれませんが、各 Locust ユーザーのオーバーヘッドが低いため、同時実行性の高いワークロードのテストに非常に適しています。
Locust には、テストの進行状況をリアルタイムで表示するユーザーフレンドリーな Web インターフェイスがあります。テストの実行中に負荷を変更することもできます。 UI なしで実行することもできるため、CI/CD テストに簡単に使用できます。
Locust は主に Web サイト/サービスで動作しますが、ほぼすべてのシステムやプロトコルのテストに使用できます。テストしたいものに対してクライアントを作成するか、コミュニティによって作成されたものを探索するだけです。
Locust のコード ベースは意図的に小さく保たれており、すぐにすべてを解決できるわけではありません。代わりに、通常の Python コードを使用して、遭遇する可能性のあるあらゆる状況に簡単に適応できるように努めています。以下のことを妨げるものは何もありません。
リアルタイム レポート データを TimescaleDB に送信し、Grafana で視覚化します。
REST API の特殊性を処理するために呼び出しをラップする
完全にカスタムの荷重形状/プロファイルを使用する
...
ドキュメント: docs.locust.io
サポート/質問: StackOverflow
Github ディスカッション: Github ディスカッション
チャット/ディスカッション: Slack (サインアップ)
メンテナー: ラース・ホルムバーグ
UI: アンドリュー・ボールドウィン
原作者:ジョナタン・ヘイマン
貢献者の皆様に多大な感謝を申し上げます
MIT ライセンスに基づいてライセンス供与されたオープン ソース (詳細については、 LICENSEファイルを参照)。