Funkloadのテストコードの書き方について

fl-run-benchコマンドで実行するテストコードの書き方についてメモ。

  • Cyclesの値はCU(ConcurrentUser)の数
  • durationに設定した秒数の間、テストを繰り返し実行する
  • レポートにでるSUCCESSやERRORの数はテストを繰り返し実行したときの結果を集計したもの

デモのコードだとレポートが思ったとおりに出なかった。
HTTPで1回リクエストして、ステータスコードが200だった場合に成功、それ以外の場合に失敗というような試験で負荷をかけるならば、テストケースクラスのメソッド内でforループを使って繰り返しGETやPOSTを行うのはダメ。
forループで繰り返しリクエストしてしまうと、ループ内のすべてが成功しないとSUCCESSにならなくてレポートが読みづらいものになってしまってた。
以下のようなコードになるのが適当かな。

# coding: utf8
import unittest
from funkload.FunkLoadTestCase import FunkLoadTestCase


class Simple(FunkLoadTestCase):
    def setUp(self):
        self.server_url = 'http://localhost:5000/'

    def test_simple(self):
        server_url = self.server_url
        ret = self.get(server_url, description='Get url')
        # ステータスコードが200以外なら失敗とする
        self.assertEqual(ret.code, 200)


if __name__ in ('main', '__main__'):
    unittest.main()

これだと綺麗に結果が出た。