Dockerを使ってLocust構築しサイトのテストをする

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をクリックしテストしてください。

技術ブログ一覧へ戻る