概要

API テストは、最も重要なサービスがいつでもどこからでも利用できることをプロアクティブに監視します。シングル API テストには、システムのさまざまなネットワーク層 (HTTPSSLDNSWebSocketTCPUDPICMPgRPC) でリクエストを起動できる 8 つのサブタイプがあります。マルチステップ API テストでは、API テストを順番に実行して、API レベルで主要なジャーニーのアップタイムを監視できます。

単一の API テストを作成する

HTTP テストは、API エンドポイントを監視し、レスポンス遅延が大きい場合や、期待される HTTP ステータスコード、レスポンスヘッダー、レスポンス本文の内容など、定義した条件を満たさない場合に警告を発します。

以下の例では、シングル API テストのサブタイプである HTTP テストを作成する方法を示しています。

  1. Datadog サイトで、Digital Experience にカーソルを合わせ、Tests (Synthetic Monitoring & Testing の下) を選択します。

  2. New Test > New API test をクリックします。

  3. テストを作成するには、以下のいずれかのオプションを使用できます。

    • テンプレートからテストを作成する:

      1. あらかじめ用意されたテンプレートの上にマウスカーソルを置き、View Template をクリックします。すると、「Test Details」「Request Details」「Assertions」「Alert Conditions」「Monitor Settings」など、あらかじめ設定された構成情報が表示されるサイドパネルが開きます。
      2. +Create Test をクリックして Define Request ページを開き、あらかじめ設定された構成オプションを確認および編集します。ここで提示されるフィールドは、テストを一から作成する場合と同じです。
      3. Save Details をクリックして、API テストを送信します。

    • テストを一から作成する:

      1. テストを一から作成するには、+ Start from scratch テンプレートをクリックし、HTTP リクエストタイプを選択します。

      2. 監視対象のエンドポイントの URL を追加します。何から始めればよいかわからない場合は、テスト用の e コマース Web アプリケーションである https://www.shopist.io/ を使用できます。Shopist のテスト URL を使用すると、テスト名が自動的に Test on shopist.io と入力されます。

      3. オプションとして、Advanced Options を選択してカスタムリクエストオプションを設定したり、証明書や認証情報を追加したり、動的入力用の安全な global variableslocal variables を作成したりできます。

        : 任意のフィールドで {{ と入力して変数を選択し、その値をテストオプションに挿入できます。

      4. テストでは、env:prodapp:shopist などのタグをオプションで設定できます。タグを使用すると、テストスイートを整理し、ホームページで興味のあるテストをすばやく見つけることができます。

      5. Send をクリックして、サンプルのテスト実行をトリガーします。

        API テスト構成
      6. Create Test をクリックして、API テストを送信します。

アサーションを定義する

Send をクリックすると、エンドポイントの応答に関する基本的なアサーションが自動的に入力されます。アサーションは、成功したテスト実行が何であるかを定義します。

この例では、サンプルのテスト実行をトリガーした後、3 つのデフォルトのアサーションが設定されます。

デフォルトアサーション

アサーションは完全にカスタマイズ可能です。カスタムアサーションを追加するには、ヘッダーなどの応答プレビューの要素をクリックするか、New Assertion をクリックして新しいアサーションを最初から定義します。

ロケーションを選択する

テストを実行する 1 つ以上の Managed Locations または Private Locations を選択します。Datadog’s out-of-the-box managed locations allow you to test public-facing websites and endpoints from regions where your customers are located.

AWS:

AmericasAsia PacificEMEA
Canada CentralHong KongBahrain
Northern CaliforniaJakartaCape Town
Northern VirginiaMumbaiFrankfurt
OhioOsakaIreland
OregonSeoulLondon
São PauloSingaporeMilan
SydneyParis
TokyoStockholm

GCP:

AmericasAsia PacificEMEA
DallasTokyoFrankfurt
Los Angeles
Oregon
Virginia

Azure:

RegionLocation
AmericasVirginia

The Datadog for Government site (US1-FED) uses the following managed location:

RegionLocation
AmericasUS-West

Shopist アプリケーションは https://www.shopist.io/ で公開されているので、管理された任意の場所からテストを実行することができます。内部アプリケーションのテストや、地理的に離れた場所でのユーザーの行動をシミュレートするには、代わりにプライベートロケーションを使ってください。

テストの頻度を指定する

テストを実行する頻度を選択します。デフォルトの頻度である 1 分のままでも構いません。

スケジュールに従って Synthetic テストを実行することに加えて、CI/CD パイプラインから手動または直接トリガーすることができます。

アラート条件を定義する

アラート条件を定義して、散発的なネットワークブリップなどのテストがトリガーされないようにすることができます。これにより、エンドポイントに実際の問題が発生した場合にのみアラートが送信されます。

ロケーションが失敗したと見なす前に発生する必要がある連続した失敗の数を指定できます。

Retry test 2 times after 300 ms in case of failure

エンドポイントが特定の時間とロケーションの数だけダウンしたときにのみ通知をトリガーするようにテストを構成することもできます。次の例では、2 つの異なるロケーションでテストが 3 分間失敗した場合に、アラートルールが通知を送信するように設定されています。

An alert is triggered if your test fails for 3 minutes from any 2 of 13 locations

テストモニターを構成する

アラートメッセージを設計し、テストでアラートを送信するメールアドレスを追加します。Slack、PagerDuty、Microsoft Teams、Webhook などの通知インテグレーションを使用することもできます。これらの通知ツールへの Synthetic アラートをトリガーするには、最初に対応するインテグレーションを設定する必要があります。

テストの構成とモニターを保存する準備ができたら、Create をクリックします。

マルチステップ API テストを作成する

マルチステップ API テストでは、主要なビジネストランザクションを API レベルで監視することができます。

マルチステップ Synthetics API テストの概要

API テストと同様に、マルチステップ API テストは、エンドポイントが遅くなりすぎたり、定義した条件を満たせなくなったりしたときに警告を発します。個々のステップ応答から変数を作成し、後続のステップでそれらの値を再注入して、アプリケーションまたはサービスの動作を模倣する方法でステップをチェーン化することもできます。

以下のテスト例は、カートへのアイテムの追加を監視するマルチステップ API テストの作成を示しています。このテストには、次の 3 つのステップが含まれます。

  • カートを取得する
  • 商品を取得する
  • カートに商品を追加する

マルチステップ API テストを作成する API エンドポイントがわからない場合は、以下のエンドポイントの例を使用してください。

新しいマルチステップ API テストを作成するには、New Test > Multistep API test をクリックします。カートに商品を追加する などのテスト名を追加し、タグを含め、ロケーションを選択します。

カートを取得する

  1. Define steps で、Create Your First Step をクリックします。

  2. ステップに名前を追加します。例: カートを取得する

  3. クエリする HTTP メソッドと URL を指定します。POSThttps://api.shopist.io/carts を入力できます。

  4. Test URL をクリックします。これにより、Shopist アプリケーションのバックエンドにカートアイテムが作成されます。

  5. デフォルトのアサーションのままにするか、変更します。

  6. オプションで、実行パラメーターを定義します。

    Continue with test if this step fails (このステップが失敗した場合はテストを続行) を選択すると、前のステップの成功または失敗に関係なく、エンドポイントコレクション全体がテストされていること、または最後のクリーンアップステップが実行されていることを確認できます。Retry ステップ機能は、API エンドポイントが応答するまでに時間がかかることがわかっている場合に便利です。

    この例では、特定の実行パラメーターは必要ありません。

  7. location ヘッダーの最後にあるカート ID の値から変数を作成するには

    • Extract a variable from response content (応答コンテンツから変数を抽出する) をクリックします。
    • 変数に CART_ID という名前を付けます。
    • Response Header で、location を選択します。
    • Parsing Regex フィールドに、(?:[^\\/](?!(\\|/)))+$ などの正規表現を追加します。
    応答コンテンツから抽出された変数
  8. Save Variable をクリックします。

  9. このテストステップの作成が完了したら、Save Step をクリックします。

商品を取得する

  1. Define another step (別のステップを定義する) で、Add Another Step (別のステップを追加する) をクリックします。デフォルトでは、最大 10 個のステップを作成できます。
  2. ステップに名前を追加します。例: 商品を取得する
  3. クエリする HTTP メソッドと URL を指定します。 ここでは、GEThttps://api.shopist.io/products.json を追加できます。
  4. Test URL をクリックします。これにより、Shopist アプリケーションで購入できる商品のリストが取得されます。
  5. デフォルトのアサーションのままにするか、変更します。
  6. オプションで、実行パラメーターを定義します。この例では、特定の実行パラメーターは必要ありません。
  7. 応答本文にある商品 ID から変数を作成するには、次のようにします。
    • Extract a variable from response content (応答コンテンツから変数を抽出する) をクリックします。
    • 変数に PRODUCT_ID という名前を付けます。
    • Response Body タブをクリックします。
    • 商品の $oid キーをクリックして、$[0].id['$oid'] などの JSON パスを生成します。
  8. Save Variable をクリックします。
  9. このテストステップの作成が完了したら、Save Step をクリックします。

カートに商品を追加する

  1. Add Another Step をクリックして、商品のカートへの追加という最後のステップを追加します。

  2. ステップに名前を追加します。例: カートに商品を追加する

  3. クエリする HTTP メソッドと URL を指定します。 ここでは、POSThttps://api.shopist.io/add_item.json を追加できます。

  4. Request Body タブで、application/json 本文タイプを選択し、以下を挿入します。

        {
          "cart_item": {
            "product_id": "{{ PRODUCT_ID }}",
            "amount_paid": 500,
            "quantity": 1
          },
          "cart_id": "{{ CART_ID }}"
        } 
        
  5. Test URL をクリックします。これにより、ステップ 2 で抽出した商品が、ステップ 1 で作成したカートに追加され、チェックアウト URL が返されます。

  6. Add assertions (optional) で、Response Body をクリックし、url キーをクリックして、チェックアウト URL を含む応答でジャーニーが終了したことをテストにアサートさせます。

  7. この最後のステップでは、実行パラメーターや変数の抽出は必要ありません。

  8. このテストステップの作成が完了したら、Save Step をクリックします。

作成されたテストステップ

その後、テスト頻度やアラート条件など、残りのテスト条件やテストモニターを構成します。テストの構成とモニターを保存する準備ができたら、Create をクリックします。

詳しくは、Synthetic テストモニターの使用をご覧ください。

テスト結果を確認する

API testMultistep API test detail ページには、テストコンフィギュレーションの概要、ロケーションごとにテストされたエンドポイントに関連付けられたグローバル稼働時間、応答時間とネットワークタイミングに関するグラフ、およびテスト結果とイベントのリストが表示されます。

失敗したテストのトラブルシューティングを行うには、Test Results まで下にスクロールして、失敗したテスト結果をクリックします。失敗したアサーションと、ステータスコード、応答時間、関連するヘッダーと本文などの応答の詳細を確認して、問題を診断します。

API テストの失敗

Datadog の APM と Synthetic モニタリングのインテグレーションを使用して、Traces タブでテスト実行から生成されたトレースを確認して、失敗したテスト実行の根本原因にアクセスします。

その他の参考資料

PREVIEWING: bryce/soar-blog