Dockerを使ってLocust構築しサイトのテストをする
説明
今回Dockerを使ってlocustのテスト環境を構築します。
locustを使う場合、ただリクエストを送りhtmlファイルをダウンロードするだけなので、静的ファイルはダウンロードされません。(画像、Javascript)
しかし、今回ブラウザからのリクエスト状態と同じにするため、テストシナリオの中に静的ファイルをダウンロードする関数も入れたいと思います。
必要ソフト
以下のソフトが必要になります。
- Docker
始める前にインストールしておいてください。
事前準備
同じディレクトリー内に以下のファイルを作ってください。
- Dockerfile
- requirements.txt
- docker-compose.yml
Dockerfile
コンテナの設定ファイルです。このファイルの中にコンテナ内で必要なソフトやモジュールを入れます。
FROM locustio/locust
ADD requirements.txt .
RUN pip3 install --upgrade pip
RUN pip3 install -r requirements.txt
requirements.txt
beautifulsoup4==4.11.1
lxml==4.8.0
docker-compose.yml
version: '3'
services:
master:
build: .
ports:
- "8089:8089"
volumes:
- ./:/mnt/locust
command: -f /mnt/locust/locustfile.py --master -H http://master:8089
worker:
build: .
volumes:
- ./:/mnt/locust
- ./samples:/home/locust/samples
command: -f /mnt/locust/locustfile.py --worker --master-host master
locustで行うテストのシナリオの準備
次にテストのシナリオを準備します。docker-compose.ymlと同じディレクトリにlocustfile.pyというファイルを作ってください。
まずは必要なモジュールをインポートします。
from locust import HttpUser, task, TaskSet, SequentialTaskSet
from bs4 import BeautifulSoup
import requests
import os
import base64
次にテストシナリオを作成します。詳細な実装は記事内コードを参照してください。
locust起動
次にdocker-compose.ymlと同じディレクトリに行き、以下のコマンドを打ち環境をビルドしてください。
docker-compose build
最後に立ち上げます。
docker-compose up --scale worker=1
workerの数は状況において調整してください。
そして「http://localhost:8089/」をブラウザで開いてください。
Number of usersにユーザー数、Spawn rateにユーザーの増加速度(数/1秒になります)、HostにテストしたいURLを入れてStart Swarmingをクリックしテストしてください。