Skip to content
Latchkey

Newman vs k6: CIにおけるAPIテストと負荷テスト

両者はテストする対象が異なります。Newmanは機能テストやAPIの契約チェックのためにPostmanコレクションを実行し、k6はスクリプト可能な負荷/パフォーマンスツールです。多くのチームは正しさの検証にNewman、パフォーマンス検証にk6を使います。

Newmanとk6はどちらもCIでAPIに対して実行されますが、目的が異なります。NewmanはPostmanのコマンドラインランナーで、Postmanコレクション(リクエストとアサーション)を実行し、Postmanで作成したのと同じ機能的なAPIテストをCIの一部として実行できます。k6は開発者向けの負荷テストツールで、JavaScriptでシナリオを書き、並行負荷下でのレイテンシとスループットを計測し、パフォーマンスのしきい値に対してアサートします。

Newmank6
主な目的機能的なAPIテスト(コレクション)負荷テストとパフォーマンステスト
テストの定義Postmanコレクション + JSアサーションJavaScriptのテストスクリプト
並行モデル逐次リクエスト仮想ユーザー(高い並行性)
メトリクス成功/失敗のアサーションレイテンシ、RPS、しきい値
最適な用途契約/スモークのAPIチェックパフォーマンス回帰、ストレステスト
GUIからの再利用はい(Postman)いいえ(コードファースト)

両者は異なるニーズをカバーする

すでにPostmanコレクションを保守していて、APIの機能的な振る舞い(ステータスコード、レスポンスの形、ビジネスアサーション)でマージをゲートしたいならNewmanを使いましょう。負荷下でのAPIの振る舞いを知る必要があり、「95パーセンタイルのレイテンシが500ms未満」のようなしきい値で回帰時にビルドを失敗させたいならk6を使いましょう。両者は異なる問いに答えるものであり、多くの場合別々のCIジョブで実行されます。

CIでは

Newmanは自然なスモーク/契約テストのステージです。実行が速く、アサーション失敗時に非ゼロで終了し、runner向けにJUnit/HTMLレポートを生成します。k6のパフォーマンスジョブはより重いため、チームはPRごとではなくスケジュールやオンデマンドで実行し、結果をしきい値と比較して回帰を検出することが多いです。重い負荷テストはPRのクリティカルパスから外し、runnerのコストと時間を抑えましょう。

率直な注意点

Newmanは負荷ツールではありません。リクエストを逐次実行し、並行負荷下でのパフォーマンス計測を意図していません。k6はコードファーストなので、PostmanのGUIワークフローは得られず、現実的な負荷を実行するにはデフォルトのrunnerが提供する以上のリソースが必要になることがあります。一方に両方をこなさせようとするのではなく、それぞれを本来の用途に使いましょう。

結論

機能テストやAPIの契約テストにはNewmanを、特にすでにPostmanを使っている場合に使いましょう。しきい値を伴う負荷テストやパフォーマンステストにはk6を使いましょう。両者は競合するのではなく補完し合います。

関連ガイド