経緯
今までは昔ながらのab(Apache Bench)で負荷試験を実施していたのだけど、昨今のウェブフロントエンド事情の移り変わりで、画像読込やJavaScript実行についても、もはや無視できないレベルになってしまった。
というか、abでの負荷試験では、運用実態との乖離がかなり大きくなってきて、ガラケー準拠やプレーンHTML準拠のabによる負荷試験基準では、実際の負荷を推し量ることができなくなってきた。
そうはいっても、やはり負荷試験はサーバで行いたい。自PC等からブラウザや専用ツールでテスト、なんてのは、「負荷試験」というより「動作試験」だし、どうせ動作試験をするなら、実機でやった方が相応しい…と思う。
だから、負荷試験ツールを選定するにあたり、以下の条件は絶対に譲れない。
- Windows専用ではなく、Unixサーバで実行可能であること。
- GUIではなく(X Window抜き;いわゆる「ヘッドレス」)、CUI(コマンドライン;CLI)で操作できること。
- 画像読込、JavaScript実行(Ajax等の非同期通信も含む)など、実際のブラウザが行う挙動を再現できること。
- 独立したテストツールであること。
- アプリに組み込みようなものではなく、アプリ側には一切手を付けず、外形からブラウザアクセスと同等のテストを行うものであること。
- 同様に、特定のアプリケーションフレームワーク専用のテストツールではなく、汎用的なツールであること。
あればいいな、という条件は以下のものになる。
- abのように操作が簡単である(ワンライナー一発で試験できる)こと。
- 複雑なシナリオ(やテストコード)を作ってからでしか実施できないものではなくて、abのようにURL単発での簡易的な試験にも素直に対応できること。
- 贅沢を言えば、「複数ツールの組み合わせ」ではなくて「そのツール単体」で問題解決ができるといい。
つまり、やりたいことは、以下の内容になる。
- abのように、コマンドに対してURLを引数として渡すと、そこに対して規定数アクセスする。ただし、abと違い、画像読込やJavaScript実行(Ajax等の非同期通信も含む)などの実ブラウザが行う挙動も全て再現してくれる。
というわけで…
これをドンピシャでかなえてくれるツールはあるのだろうか…。
需要は絶対にありそうなんだけど、複雑なツールしか見つからない。
俺がやりたいのはとりあえずは負荷試験であって、動作試験や機能試験じゃないんだ…。
「実ブラウザをエミュレーションしつつ、特定のページに規定数のアクセスを発生させる」ということがやりたいだけなんだ。
そして、abタイプの単純な試験から、シナリオタイプの複雑な試験へ段階を追ってステップアップできるようなものだとなお良いけれど、どうなんだろう。
あるいは…
皆さんはどうやって上記のような負荷試験をやられているのだろう…?
あるいは、負荷試験のコンセプトとしてab以上のことを求めるのが根本的に間違ってるいるのだろうか。