コンテンツにスキップ

はじめての API テスト

テスト対象として Swagger Petstore API のインスタンスが用意されています。The Swagger Petstore は、OpenAPI 3 仕様を実装するスタンドアロンの REST API サーバーです。

ターミナルで次のコマンドを実行して、Swagger Pestore API をテストします。

mapi run \
     petstore auto "https://demo-api.mayhem.security/api/v3/openapi.json" \
     --url "https://demo-api.mayhem.security/api/v3/" \
     --interactive

ランが完了したら、ダッシュボードに移動して結果を確認します。

コマンドの説明

コマンドの各部分の意味を確認します。

1. mapi run

CLI を使用して API テスト ジョブを実行します。

Info

CLI でほかに何ができるかについて知りたい場合、mapi help を確認してください。

2. petstore

このランのために petstore という名前の「ターゲット」を使用 (および、まだターゲットが存在しない場合は作成) します。ターゲットについては、後ほどより詳しく説明します。今のところは、テスト 対象の API を一意に識別する短い名前とだけ理解すれば十分です。

Info

ターゲットは、関連する API テスト ジョブをグループ化するために使用されます。

3. auto

十分なエンドポイントが検証されたと判断できるまでジョブを実行します。特定の期間を指定することもできます。 たとえば、30sec と指定すると、ジョブが 30 秒間実行されます。ジョブを長く実行するほど、多くのエッジ ケースが発見されます。

Info

詳細についてはランの持続時間を参照してください。

4. https://demo-api.mayhem.security/api/v3/openapi.json

デモ目的で Mayhem のサイトにホストされた petstore demo API の OpenAPI 3 仕様に基づいてテストを実行するようファザーに指示します。

5. --url "https://demo-api.mayhem.security/api/v3/"

ローカルで実行されているファザーにネットワーク上の petstore demo API をテストするよう指示します。

6. --interactive

インタラクティブなターミナルベースのユーザー インターフェイスで API テスト ジョブを実行します。継続的インテグレーション環境では、このオプションを省略する必要があります。

インタラクティブ モードでは、次の UI が表示されます。

Status UI

ステータス UI には、多くの情報が含まれています。

  • 一番上には、ジョブの持続時間と経過時間に基づく進捗バーがあります。
  • ジョブのログ。ジョブが正常に開始されなかった場合、または問題が発生した場合、ここに問題の解決方法が表示されます。
  • ファザーが観測したエンドポイントごとのステータス コード。これは、ファザーがエンドポイントをカバーしているか、また期待されたステータス コードであるかを確認するのに役立ちます。たとえば、401 レスポンスだけが表示されている場合、おそらくファザーは認証の問題を解決する必要があることを意味しています。これについては、API での認証でより詳しく説明しています。

UI には便利なナビゲーション キーがいくつかあります。

  • q^C<Esc> は終了します。
  • <Tab> は複数のウィジェットを切り替えます。
  • <Space> は現在のウィジェットを全画面にします。
  • 矢印キーは水平または垂直スクロールします。

チュートリアルのランでは、少なくとも 1 つの 500 レスポンス コードが観測されたことを意味する赤で表示されたエンドポイントがいくつかあるはずです。これは、何らかのバグが見つかったことを意味します。 いくつか緑色のエンドポイントも表示されているはずです。これは、少なくとも 1 つの 2xx レスポンスが観測されたことを意味します。


これで、順調に API テストを始められました。「これを使ってどのように自分の API をテストできるだろうか?」…というような感想を持っていただけていればいいのですが。なぜなら、これこそ次のトピックだからです。