Artilleryは、モダンなオープンソースの負荷テストおよびスモークテストツールです。Node.jsで実装されており、簡単にインストールして使用することができます。主にHTTP/HTTPS、WebSocket、Socket.ioといったWebプロトコルに対応しており、システムのパフォーマンスを測定するために複雑なシナリオを作成して実行することができます。
Artilleryの特徴
- 多プロトコルサポート: HTTP(S)、WebSocket、Socket.ioなどのプロトコルをテストするための組み込みサポートがあります。
- シンプルなシナリオ定義: YAMLまたはJSON形式でテストシナリオを定義できます。これにより、非技術者でも理解しやすいシナリオの作成が可能です。
- リアルタイムメトリクス: 負荷テスト実行中にリアルタイムでパフォーマンスメトリクスを収集し、表示できます。
- カスタムJavaScriptコード: テストシナリオ内でカスタムロジックや動的なデータを扱うために、JavaScriptコードを書くことができます。
- 統合されたメトリクスレポーティング: テスト実行後には、応答時間、RPS(リクエストパーセカンド)、エラー率などの統計が含まれたレポートを生成します。
- プラグインアーキテクチャ: Artilleryはプラグインにより拡張が可能で、独自の機能を追加することができます。
Artilleryのインストールと使用法
Artilleryはnpm(Node.jsのパッケージマネージャー)を通じて簡単にインストールできます。
npm install -g artillery
インストール後、以下のようにコマンドラインからArtilleryを実行してテストを開始します。
artillery quick --count 10 -n 20 https://your.api.endpoint
ここで、--count
は仮想ユーザーの数、-n
は各ユーザーが行うリクエストの数を指定します。
より複雑なテストシナリオを作成する場合は、YAMLまたはJSONファイルにシナリオを記述し、Artilleryに渡して実行することができます。
config:
target: 'https://your.api.endpoint'
phases:
- duration: 60
arrivalRate: 10
scenarios:
- flow:
- get:
url: "/path/to/resource"
このファイルを作成し、artillery run
コマンドでシナリオを実行することで、カスタマイズされた負荷テストを行うことができます。
用途
Artilleryは、CI/CDパイプラインに統合して自動化されたパフォーマンステストを行うため、または本番環境へのデプロイ前にシステムの耐久性を確認するために使用されます。リアルタイムでのメトリクス収集機能は、開発プロセス中に早期にパフォーマンスの問題を発見するのに役立ちます。