以前にローカストテストを実行した場合の一般的な手順は次のとおりです。
-
良いシーンをシミュレートするためのLocustスクリプト(locustファイル)を作成します
- 次のように、コマンドラインでLocustスクリプトを実行します。
locust -f locust_file.py
- 次に、Web UIを開き、ユーザー数、ランプアップ率などのテストパラメータをUIに設定します。
上記のように、全体的な手順はまだ少し面倒です。実際、Locustは上記の方法よりも簡潔な方法を提供し、スクリプトのパフォーマンステストに関連する構成と操作を集中させることができます。具体的には、次のスクリプト(Locustバージョン1.1.1)を参照できます。
import gevent
from locust import HttpUser,task,between
from locust.env import Environment
from locust.stats import stats_printer
from locust.log import setup_logging
setup_logging("INFO",None)
class WebUser(HttpUser):
wait_time = between(1,5)
host = 'https://blog.51cto.com'
@task
def open_blog1(self):
with self.client.get('/13734261/2538770',catch_response=True) as res:
if res.status_code == 200:
res.success()
@task
def open_blog2(self):
with self.client.get('/13734261/2538745',catch_response=True) as res:
if res.status_code == 200:
res.success()
#创建环境和runner
env = Environment(user_classes=[WebUser,])
env.create_local_runner()
#start a WebUI instance
env.create_web_ui("127.0.0.1",8001)
#开启了协程,会定期打印runner状态
gevent.spawn(stats_printer(env.stats))
#开启测试,开启用户数为1
env.runner.start(1,hatch_rate=10)
# 设置100秒后,然后停止测试
gevent.spawn_later(100,lambda: env.runner.quit())
#等待greenlet结束
env.runner.greenlet.join()
#结束locust webUI
env.web_ui.stop()
テストの出力結果は次のとおりです。テスト中、このようなテスト結果テーブルも定期的に、通常は数秒ごとに出力されます。
Name # reqs # fails Avg Min Max | Median req/s failures/s
--------------------------------------------------------------------------------------------------------------------------------------------
GET /13734261/2538745 13 0(0.00%) 300 183 542 | 280 0.10 0.00
GET /13734261/2538770 17 0(0.00%) 376 199 931 | 270 0.20 0.00
--------------------------------------------------------------------------------------------------------------------------------------------
Aggregated 30 0(0.00%) 343 183 931 | 270 0.30 0.00
このようなテストステップの改善のために、次のステップを省略できます。
-
コマンドラインでテストスクリプトを実行します
- ブラウザのwebUIでテストパラメータを設定し、テスト実行プロセスを監視します。