Apidog Docs
🇯🇵 日本語
  • 🇺🇸 English
  • 🇯🇵 日本語
HomeLearning CenterSupport CenterAPI References
HomeLearning CenterSupport CenterAPI References
Discord Community
Slack Community
X / Twitter
🇯🇵 日本語
  • 🇺🇸 English
  • 🇯🇵 日本語
  1. テストシナリオ
  • Apidog学習センター
  • はじめに
    • Apidog紹介
    • Apidog基本操作
      • 概要
      • 新しい APIを作成
      • APIにリクエストを送信
      • アサーションを追加
      • テストシナリオを作成
      • APIドキュメントを共有
      • さらなる探究
      • リクエストを送信してAPIとして保存
    • Apidog基本知識
      • Apidog操作方法
      • Apidogの基本概念
    • 移行
      • 概要
      • 手動インポート
      • 定期インポート
      • インポートオプション
      • データのエクスポート
      • Import from...
        • Postman からインポート
        • OpenAPI(Swagger)仕様のインポート
        • cURLのインポート
        • Markdownのインポート
        • Insomniaからのインポート
        • apiDocからのインポート
        • .harファイルのインポート
        • WSDLのインポート
  • API設計
    • 概要
    • コンポーネント
    • 常用フィールド
    • グローバルパラメータ
    • API変更履歴
    • プロジェクトの作成
    • 一括API管理
    • APIの基本
    • 複数のリクエストボディ例の設定
    • Schemas
      • 概要
      • 新規Schemaの作成
      • スキーマを構築する
      • JSONなどからのSchema生成
    • Security schemes
      • 概要
      • Security Schemeの作成
      • Security Schemeの使用
      • オンラインドキュメントにおけるSecurity Scheme
    • 高度な機能
      • APIをテストステップとしてインポート
      • パラメータリストの表示形式
      • APIのカスタムフィールド
      • APIのステータス
      • API固有識別子
  • API開発とデバッグ
    • 概要
    • リクエストの生成
    • リクエストの送信
    • コード生成機能
    • APIケース
    • 動的な値
    • レスポンスの検証
    • 設計優先 & リクエスト優先
    • 環境 & 変数
      • 概要
      • 環境とサービス
      • 変数の使い方
    • Vault secrets
      • 概要
      • AWS Secrets Manager
      • Azure Key Vault
      • HashiCorp Vault
    • 前/後処理
      • 概要
      • Wait
      • 変数の抽出
      • アサーション
      • データベース操作
        • 概要
        • MongoDB
        • Redis
        • Oracle クライアント
      • スクリプト利用
        • 概要
        • 前処理スクリプト
        • 後処理スクリプト
        • Postmanスクリプトリファレンス
        • 共通スクリプト
        • 他のプログラミング言語の呼び出し
        • JSライブラリの使用
        • レスポンスの可視化
        • スクリプトの例
          • その他の例
          • スクリプトを使用したリクエストメッセージの変更
          • スクリプトでの変数の使用
          • アサーションスクリプト
    • 動的値モジュール
  • APIモック
    • 概要
    • スマートMock
    • カスタムMock
    • Mockの優先順位
    • Mockスクリプト
    • クラウドMock
    • セルフホストランナーMock
    • Mock言語 (ロケール)
  • 自動テスト
    • 概要
    • テストレポート
    • テストシナリオ
      • テストシナリオの作成
      • 他のプロジェクトからAPI/APIケースをインポートする
      • リクエスト間でデータを渡す
      • API/APIケースからのデータ同期
      • フロー制御条件
      • テストシナリオのエクスポート
    • テストシナリオ実行
      • データ駆動型テスト
      • スケジュールタスク
      • テストシナリオを一括実行する
      • 他のプロジェクトのAPIの実行環境を管理する
      • テストシナリオを実行する
    • APIテスト
      • 統合テスト
      • 回帰テスト
      • エンドツーエンド(E2E)テスト
      • パフォーマンステスト
    • Apidog CLI
      • 概要
      • Apidog CLIのインストールと実行
      • Apidog CLI オプション
    • CI/CD
      • 概要
      • Jenkinsとの連携
      • Gitlabとの統合
  • APIドキュメント公開
    • 概要
    • Google AnalyticsとDoc Sitesの連携
    • CORS プロキシ
    • クイック共有
    • 可視性設定
    • ドキュメントURLに値を埋め込む
    • APIドキュメントを表示する
    • フォルダツリー設定
    • API SEO設定
    • カスタムレイアウト
    • ドキュメント検索
    • カスタムドメイン
    • ドキュメントサイトの公開
    • APIバージョン
      • 概要
      • APIバージョンの作成
      • APIバージョンの公開
      • APIバージョンごとにAPIの共有
  • リクエスト送信
    • 概要
    • GraphQL
    • gRPC
    • WebSocket
    • SSEデバッグ
    • SOAP/Webサービス
    • デバッグ用のリクエストプロキシエージェントを使用する
    • Socket.IO
    • リクエスト作成
      • リクエストの基本
      • パラメータとボディ
      • リクエストヘッダー
      • リクエスト設定
      • HTTP/2
      • リクエスト履歴
    • 認証と認可
      • 概要
      • CAとクライアント証明書
      • Apidogがサポートする認可タイプ
      • Digest Auth
      • OAuth 1.0
      • OAuth 2.0
      • Hawk Authentication
      • Kerberos
      • NTLM
      • Akamai EdgeGrid
    • レスポンスとクッキー
      • 概要
      • ApidogのAPIレスポンス
      • Cookieの作成と送信
      • リクエストのデバッグ
      • リクエストをAPIとして保存
  • ブランチ管理
    • 概要
    • 新しいスプリントブランチの作成
    • スプリントブランチの管理
    • ブランチ内でのAPIテスト
    • ブランチでAPIの設計
    • スプリントブランチのマージ
  • Apidog MCP Server
    • 概要
    • Apidogプロジェクト内のAPI仕様をApidog MCPサーバー経由でAIに接続する
    • Apidogが公開したオンラインAPIドキュメントをApidog MCPサーバー経由でAIに接続する
    • Apidog MCPサーバーを介してOpenAPIファイルをAIに接続する
  • ベストプラクティス
    • ガイド:ChatGPT APIのトークンとコスト計算
    • Apidog コラボレーションワークフロー
    • API署名の取り扱い方法
    • Apidogでの認証状態の管理
    • OAuth 2.0で保護されたAPIにアクセスする方法
  • 管理
    • オンボーディングチェックリスト
      • 基本概念
      • Apidogスタートアップガイド
    • チーム管理
      • チーム管理
      • チームメンバーの管理
      • メンバーの役割と権限設定
      • チーム活動
      • チームリソース
        • 一般ランナー
        • チーム変数
        • リクエストプロキシエージェント
        • データベース接続
      • リアルタイムコラボレーション
        • チームコラボレーション
    • プロジェクト管理
      • プロジェクト管理
      • プロジェクトメンバーの管理
      • 通知設定
    • 組織管理
      • シングルサインオン(SSO)
        • 概要
        • Microsoft Entra IDの設定
        • Okta設定
        • 組織のSSOを設定する
        • チームへのグループのマッピング
        • ユーザーアカウントの管理
      • SCIMプロビジョニング
        • SCIMプロビジョニング入門
        • Microsoft Entra ID
        • Okta
      • 組織リソース
        • セルフホストランナー
  • 請求情報
    • 概要
    • プランのアップグレード
    • クレジット
    • クレジットカードが使えない?
    • サブスクリプションの管理
  • アドオン
    • API Hub
    • Apidog IntelliJ IDEA プラグイン
    • リクエストプロキシ
      • Apidogウェブでのリクエストプロキシ
      • 共有ドキュメントでのリクエストプロキシ
      • Apidogクライアントでのリクエストプロキシ
    • ブラウザ拡張機能
      • Microsoft Edge
      • Chrome
  • アカウント & 設定
    • アカウント設定
    • 言語設定
    • データバックアップ
    • ネットワークプロキシ設定
    • ホットキー
    • Apidogの更新
    • OpenAPIアクセストークンの生成
    • アカウント削除
  • 参考資料
    • Swagger拡張機能
    • Socket通信:パケットの分断と結合
    • 用語の説明
    • よくある質問
    • API-デザインファーストアプローチ
    • Apidog OpenAPI/Swagger仕様拡張
    • JSONPath
    • XPath
    • 正規表現
    • JSONスキーマ
    • CSVファイルフォーマット
    • Java環境のインストール
    • ランナーのデプロイ環境
    • ApidogフレーバーMarkdown
  1. テストシナリオ

フロー制御条件

テストシナリオにフロー制御条件(ループ、条件、待機、グループ化など)を追加することで、より複雑なテストシナリオやプロセス構成の活用が可能になります。これにより、自動テスト機能を通じて複雑なシナリオのテスト課題を解決することができます。
image.png

Forループ#

単一のリクエストを連続して複数回送信する必要がある場合、forループを使用するのが効率的です。以下は、Apidogのテストシナリオでforループを効果的に使用する方法です:
反復回数の設定: ループを何回実行するかを決定します。これは固定数値または{{variable}}を使用できます。
リクエストの追加: forループ内に1つ以上のリクエストや他のループや条件分岐を追加できます。これにより、複数のアクションを順番にテストする複雑なテストシナリオが可能になります。
Break If条件: forループにBreak if条件を追加できます。これにより、条件が満たされた場合にループが即座に終了します。Break ifの位置をドラッグして調整したり、複数のBreak if条件を追加して異なるシナリオを処理することもできます。
On Error処理: ループにOn Error条件を追加してエラーを管理します。エラーが発生した場合、指定されたアクションがトリガーされます:
無視: ループは次のリクエストを続行します。
続行: 現在のサイクルの残りのリクエストをスキップし、次の反復に進みます。
実行中断: ループを停止し、ループ外の後続のリクエストに進みます。
実行終了: テストシナリオ全体を完全に停止します。
On Error条件はループの開始時に固定され、移動できません。

リクエスト内でのループインデックスの使用#

ループの現在のインデックスは、リクエスト内でローカル変数として使用でき、パラメータやリクエストボディを動的に調整できます。これを使用するには:
1
forループを追加し、ループ内にリクエストを含めます。
2
リクエストパラメータの魔法の杖アイコン🪄をクリックし、「前ステップのデータを取得」を選択します。
「前ステップのデータを取得」機能は「Tests」モジュールでのみ利用可能で、「APIs」モジュールでは利用できません。
「前ステップのデータを取得」を使用する場合、値はテストシナリオ全体を一緒に実行した場合にのみ取得可能で、個別のステップを実行した場合にはアクセスできません。
3
ループオプションを選択します。通常、「Loop n times」と表示されます。
4
「Current loop index」を選択します。
5
{{$.5.index}}のような動的変数を取得します。「挿入」をクリックすると、実行時に現在のループのインデックス(例:0や5)に置き換えられます。
ループのインデックスは常に0から始まります。

ForEachループ#

複数の要素を含む配列(特定の内容のリストや前のステップから取得したリスト)があり、リスト内の各アイテムに対して同じ操作を実行する必要がある場合(例:最初に製品リストを取得し、リスト内の各製品をショッピングカートに追加する)、ForEachループを使用する必要があります。
ForEachループでは、ループ内の操作が配列の各要素に対して実行されます。
Forループとの違いは、反復回数を気にする必要がなく、ループ配列の内容にのみ焦点を当てることができる点です。
ループ配列の設定: ForEachループでは、ループオブジェクトとして配列を設定する必要があります。変数を使用するか、手動で配列を入力できます(例:["a","b","c"])。
リクエストの追加: ForEachループ内に1つ以上のリクエストを追加したり、他のループや条件分岐を追加したりできます。
Break If条件とOn Error処理: ForEachループにBreak ifとOn errorを追加できます。前述のforループと同様です。
TIP
ForEachループの詳細設定では、Break IfとOn Errorの例外処理オプションをカスタマイズできます。詳細は「判定ルール」を参照してください。

ForEach使用例#

ペット情報のリストを取得するAPIと、単一のペットの詳細を取得するAPIがあるとします。リストに最近追加されたペットの詳細を取得する必要がある場合、自動テストでForEachループを使用してこのシナリオを設定できます。
1.
ForEachループの外側の最初のステップで、ペット情報リストAPIをリクエストして実際のリストデータを取得します。通常、このAPIのレスポンスには、複数のペットの基本情報(ペットIDや名前など)を含む配列が含まれています。
2.
前のステップのレスポンスから取得したペット配列のサブセットをソース配列としてForEachループを設定します。
3.
ループ内で「ペット情報取得」APIをリクエストし、ForEachループの要素値を使用してこのリクエストのIDパラメータを設定します。

リクエスト内でのループ要素の使用#

ループの現在の要素/インデックスは、リクエスト内でローカル変数として使用でき、パラメータやリクエストボディを動的に調整できます。これを使用するには:
1
ForEachループを追加し、ループ内にリクエストを含めます。
2
リクエストパラメータの 魔法の杖アイコンをクリックし、「前ステップのデータを取得」を選択します。
3
ループオプションを選択します。通常、「Loop each element in {{array}}」と表示されます。
4
「Current loop element」を選択します。要素のプロパティを抽出するためにJSONPathを使用できます。
5
{{$.17.element}}のような動的変数を取得します。「挿入」をクリックすると、実行時に現在のループの要素(ループ配列の要素)に置き換えられます。
TIP
Current Loop Element: システムはForEachループで指定された配列から要素を自動的に抽出し、指定された変数に保存します。各反復の開始時に、この変数は配列の現在の要素の値で更新されます。要素がオブジェクトの場合、JSONPathを使用して特定のサブフィールド(例:{{$.1.element.data.name}})を抽出できます。
Current Loop Index: 現在のループのインデックスがこの変数に保存されます。インデックスは0から始まり、各反復の開始時に1ずつ増加します。

If#

異なるシナリオに基づいて異なるリクエストを送信する必要がある場合、Ifステートメントを使用して条件分岐を追加できます。指定された条件が満たされた場合、対応するステップが実行されます。それ以外の場合はスキップされます。詳細は「判定ルール」を参照してください。
Ifステートメントの設定: Ifステートメントは、等しい、等しくない、含む、含まないなど、さまざまな条件をサポートします。条件の両側に定数や変数を使用できます。
リクエストの追加: 条件分岐内に複数のリクエストを追加したり、他のループや条件分岐を追加したりできます。
条件分岐の実行: 設定された条件が満たされた場合、テストステップが実行されます。それ以外の場合はスキップされます。
Elseステートメント: 条件分岐内にElseステートメントを追加して、If条件が満たされない場合のシナリオを処理できます。

If使用例#

ペットショップのオーナーが、前日のペットの販売状況に基づいて、ペットの販売ステータスを「Sold」に変更する必要がある場合。販売されていない場合は(else)、販売中のペットのリストを確認する必要があります。
1.
下部の「ステップを追加」ボタンをクリックし、「条件分岐」を選択します。
2.
APIリクエストのレスポンスから取得した変数saleStatusを「If」の後の入力ボックスに入力し、条件として「equals」を選択します。最後に比較値としてtrueを入力します。
3.
条件分岐操作にカーソルを合わせると「 + Else」オプションが表示されます。クリックして「販売中のペットリスト」ステップを追加します(条件が満たされない場合、つまり販売中のペットリストを確認する場合)。

判定ルール#

テストシナリオでIfステートメントを使用する場合、条件ルールを定義してテストの実行を制御できます。条件が満たされた場合、対応するステップが実行されます。それ以外の場合はスキップされます。同様に、ForEachおよびForループのBreak If設定では、判定ルールを設定して実行フローをより柔軟に制御できます。
ルール説明
等しい2つの値が等しいかどうかを確認します。
等しくない2つの値が等しくないかどうかを確認します。
存在するフィールドまたは変数が存在するかどうかを確認します。
存在しないフィールドまたは変数が存在しないかどうかを確認します。
より小さい1つの値がもう1つの値より小さいかどうかを確認します。
以下1つの値がもう1つの値以下かどうかを確認します。
より大きい1つの値がもう1つの値より大きいかどうかを確認します。
以上1つの値がもう1つの値以上かどうかを確認します。
正規表現に一致文字列が指定された正規表現に一致するかどうかを確認します。
含む文字列または配列が指定された値を含むかどうかを確認します。
含まない文字列または配列が指定された値を含まないかどうかを確認します。
空であるフィールド、配列、または変数が空かどうかを確認します。
空でないフィールド、配列、または変数が空でないかどうかを確認します。
リストに含まれる値が指定されたリストに属するかどうかを確認します。
リストに含まれない値が指定されたリストに属さないかどうかを確認します。
条件チェック(より大きい、以上、等しい、等しくないなど)を実行する場合、比較される値が整数または文字列の場合、システムは文字列を自動的に数値に変換して正確な比較を行います。例えば、文字列"18"と数値18を比較する場合、システムは文字列"18"を数値18に変換してから比較します。

等しい#

2つの値が等しいかどうかを確認します。等しい場合、条件が満たされ、テストステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出したユーザーの年齢が18歳かどうかを確認します。
条件例: {{$.5.response.body.data.age}} 等しい 18
実際の実行効果: 前ステップから抽出した年齢値が18(文字列は自動的に数値に変換されます)の場合、ステップが実行されます(例:特定の情報を表示する、特定のアクションを実行する)。

等しくない#

2つの値が等しくないかどうかを確認します。等しくない場合、条件が満たされ、テストステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出した注文ステータスが「Paid」でないかどうかを確認します。
条件例: {{$.4.response.body.data.status}} 等しくない Paid
実際の実行効果: 前ステップから抽出した注文ステータスが他の値(例:「Pending」や「Shipped」)の場合、ステップが実行されます。

存在する#

特定のフィールドまたは変数が存在するかどうかを確認します。存在する場合、条件が満たされ、ステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出したユーザーデータにemailフィールドが存在するかどうかを確認します。
条件例: {{$.3.response.body.data.email}} 存在する
実際の実行効果: 前ステップから抽出したユーザーデータにemailフィールドが存在する場合、ステップが実行されます。

存在しない#

特定のフィールドまたは変数が存在しないかどうかを確認します。存在しない場合、条件が満たされ、ステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出したユーザーデータにphoneフィールドが存在しないかどうかを確認します。
条件例: {{$.2.response.body.data.phone}} 存在しない
実際の実行効果: 前ステップから抽出したユーザーデータにphoneフィールドが存在しない場合、ステップが実行されます。

より小さい#

1つの値がもう1つの値より小さいかどうかを確認します。小さい場合、条件が満たされ、ステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出した製品の在庫が10より小さいかどうかを確認します。
条件例: {{$.1.response.body.data.stock}} より小さい 10
実際の実行効果: 前ステップから抽出した在庫値が8の場合、条件が満たされ、ステップが実行されます。

以下#

1つの値がもう1つの値以下かどうかを確認します。以下の場合、条件が満たされ、ステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出した年齢が12以下かどうかを確認します。
条件例: {{$.2.response.body.data.age}} 以下 12
実際の実行効果: 前ステップから抽出した年齢値が10の場合,条件が満たされ,ステップが実行されます。

より大きい#

1つの値がもう1つの値より大きいかどうかを確認します。大きい場合,条件が満たされ,ステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出した注文金額が1000より大きいかどうかを確認します。
条件例: {{$.1.response.body.data.amount}} より大きい 1000
実際の実行効果: 前ステップから抽出した注文金額値が1105の場合,条件が満たされ,ステップが実行されます。

以上#

1つの値がもう1つの値以上かどうかを確認します。以上の場合,条件が満たされ,ステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出したユーザーのポイントが500以上かどうかを確認します。
条件例: {{$.3.response.body.data.points}} 以上 500
実際の実行効果: 前ステップから抽出したポイント値が600の場合,条件が満たされ,ステップが実行されます。

正規表現に一致#

文字列が指定された正規表現に一致するかどうかを確認します。一致する場合,条件が満たされ,ステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出したメール形式が正しいかどうかを確認します。
条件例: {{$.2.response.body.data.email}} 正規表現に一致 /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/i
実際の実行効果: 前ステップ

含む#

文字列または配列が指定された値を含むかどうかを確認します。含む場合,条件が満たされ,ステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出したユーザーの役割リストに「admin」役割が含まれているかどうかを確認します。
条件例: {{$.3.response.body.data.roles}} 含む admin
実際の実行効果: 前ステップから抽出した役割リストに「admin」が含まれている場合,ステップが実行されます。

含まない#

文字列または配列が指定された値を含まないかどうかを確認します。含まない場合,条件が満たされ,ステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出したユーザーのショッピングカートに特定の製品が含まれていないかどうかを確認します。
条件例: {{$.4.response.body.data.cartItems}} 含まない productId123
実際の実行効果: 前ステップから抽出したカート配列に製品productId123が含まれていない場合,ステップが実行されます。

空である#

フィールド、配列、または変数が空かどうかを確認します。空の場合,条件が満たされ,ステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出した備考フィールドが空かどうかを確認します。
条件例: {{$.2.response.body.data.remarks}} 空である
実際の実行効果: 前ステップから抽出した備考フィールドが空の場合,ステップが実行されます。

空でない#

フィールド、配列、または変数が空でないかどうかを確認します。空でない場合,条件が満たされ,ステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出した注文備考が記入されているかどうかを確認します。
条件例: {{$.1.response.body.data.orderRemarks}} 空でない
実際の実行効果: 前ステップから抽出した注文備考が空でない場合,ステップが実行されます。

リストに含まれる#

値が指定されたリストに属するかどうかを確認します。属する場合,条件が満たされ,ステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出したユーザーが選択した製品が推奨製品リストに含まれているかどうかを確認します。
条件例: {{$.3.response.body.data.productId}} リストに含まれる ["prod123", "prod456", "prod789"]
実際の実行効果: 前ステップから抽出した製品IDが「prod456」の場合,ステップが実行されます。
TIP
Apidogでリストを入力する場合,各要素を個別に入力し,Enterキーで区切ります。

リストに含まれない#

値が指定されたリストに属さないかどうかを確認します。属さない場合,条件が満たされ,ステップが実行されます。それ以外の場合はスキップされます。
例:
シナリオ: 前ステップから抽出したユーザーが入力したプロモーションコードが使用済みプロモーションコードリストに含まれていないかどうかを確認します。
条件例: {{$.4.response.body.data.promoCode}} リストに含まれない ["usedCode1", "usedCode2"]
実際の実行効果: 前ステップから抽出したプロモーションコードが「newPromo」の場合,条件が満たされ,ステップが実行されます。それ以外の場合はスキップされます。

グループ化#

テストプロセス内の複数のステップが相互に関連している場合,それらを分類するためにグループ化できます。テストステップをグループ化することで,テストシナリオの可読性と操作性が向上します。

待機#

テストプロセス内の特定のステップが実行前に一定時間待機する必要がある場合,待機条件を追加してこれを解決できます。

待機使用例#

ユーザーがペットの詳細を閲覧し,1000ms後にペット情報の閲覧ステータスを更新するシナリオをシミュレートします。
1.
下部の「ステップを追加」ボタンをクリックし,「待機」を選択します。
2.
待機時間として1000(ミリ秒)を入力します。
テストフロー制御を使用する場合,テストレポートにはIfやforなどのステップは表示されず,実際に実行されたリクエストのみが実行順に線形に表示されます。
Previous
API/APIケースからのデータ同期
Next
テストシナリオのエクスポート
Built with