テストケース管理のインテグレーション

mablでは、既存のmablテストを、任意のテストケース管理 (TCM) ツールの関連するテストケースと関連付けることができます。mablをこれらのツールと直接統合することはできませんが、これらの結果を簡単に取り出して、チームが現在使用している任意のツールを更新する方法が用意されています。

ユースケース

外部のTCMツールと統合するための主要なユースケースの1つは、すべてのレポートを1か所で一元管理することです。これには、手動テストケース、APIテストケース、さらにはその他の自動化も含まれる場合があります。テストケースの数が多ければ、選択するツールの数も同じくらい多くなります。当社のソリューションでは、1つのツールのみをサポートするのではなく、ほとんどのツール内のテストケースを簡単に更新できます。

外部テストケースをmablテストに関連付ける

外部のテストケースを関連付けるための最初のステップは、TCMツール内で関連するテストケースを見つけることです。これ以降は、このZephyr、TM4J、XRayなどのテストケースを「TCMテストケース」と呼びます。このTCMテストケースを見つけたら、単にそのIDをコピーします。

IDをコピーしたら、mablに移動して、関連付けの対象とする関連するmablテストを見つけます。名前を編集したり、ラベルを追加したりするのと同じように、詳細ページでmablテストを編集します。[Test case ID(s)] セクションを見つけて、TCMテストケースのIDをフィールドに貼り付け、[Save] をクリックします。

1058

多くの手動テストが1つのエンドツーエンド自動化テストを構成している場合があるため、複数のTCMテストケースを1つのmablテストに関連付ける場合、上記の手順に従って、上の画像のように各IDを「,」とスペースで区切ります。

🚧

新しいmablテストをトレーニングするときのTCMテストケースの関連付け

現時点では、既存のmablテストとTCMテストケースの関連付けのみがサポートされています。つまり、mablテストを初めてトレーニングするときは、TCMテストケースIDをテストに追加することはできません。mablテストを保存したら、上記の手順に従ってください。

テスト結果の取得

TCMツールとの統合に使用するために、mablからテスト結果を取得する方法は主に3つあります。そのうち2つの方法は、テスト実行に関する詳細な仕様を記載したJSONを処理する方法で、もう1つの方法は、Jenkinsなどのネイティブプラグインを介してCI/CDパイプラインにmablを統合する方法です。

📘

JSONの処理

ほとんどのTCMソリューションは、APIからのJSONレスポンスの全体は処理しないため、結果を変更して読み取り可能な方法でTCMツールに直接送信するプロセスをスクリプトに含める必要があります。TCMツールはそれぞれ異なりますが、以下のような共通するものをいくつか取得して送信する必要があります。

  • success: trueまたはfalse
  • test_cases: 以前にテストに保存したテストケースID

API経由

Deployment Events APIExecution Results APIを使用すると、mablのデプロイメントをトリガーし、その結果をプログラムでJSON形式で取得できます。注: この方法では、デプロイ時にトリガーされたテスト結果のみが更新され、アドホックな結果やスケジュールに従って実行されているプランは更新されません。

上記の手順に従ってmablテストとTCMテストケースを統合すると、上記のExecution Results APIのレスポンスにtest_caseメタデータが表示されるようになります。このサンプルスクリプトのようなカスタムスクリプトを使用すると、簡単にデプロイメントをトリガーして、結果に対してクエリを実行できます。以下にレスポンス例を示します。

{
  "plan_execution_metrics": {
    "total": 1,
    "passed": 1,
    "failed": 0
  },
  "journey_execution_metrics": {
    "total": 1,
    "passed": 1,
    "failed": 0
  },
  "executions": [
    {
      "status": "succeeded",
      "success": true,
      "plan": {
        "id": "c953e3e3-a195-4b36-bdf8-49ec73ee3d35",
        "name": "Verify home page load and login",
        "label": "regression",
        "href": "https://api.mabl.com/schedule/runPolicy/c953e3e3-a195-4b36-bdf8-49ec73ee3d35",
        "app_href": "https://app.mabl.com/workspaces/5bf0ebb1-f158-4c02-9e71-1be9f6ce7d17/test/plans/c953e3e3-a195-4b36-bdf8-49ec73ee3d35"
      },
      "plan_execution": {
        "id": "I9wjeolJE-iuvOmCSF28Lw-pe",
        "status": "succeeded",
        "href": "https://api.mabl.com/execution/runPolicyExecution/c953e3e3-a195-4b36-bdf8-49ec73ee3d35"
      },
      "journeys": [
        {
          "id": "6b194f04-1ea0-45f1-8a1a-04c9338067d9:0",
          "name": "Visit home page",
          "href": "https://api.mabl.com/execution/runPolicyExecution/I9wjeolJE-iuvOmCSF28Lw-pe/testScriptExecution/6b194f04-1ea0-45f1-8a1a-04c9338067d9:0",
          "app_href": "https://app.mabl.com/workspaces/5bf0ebb1-f158-4c02-9e71-1be9f6ce7d17/test/plan-executions/I9wjeolJE-iuvOmCSF28Lw-pe/journeys/6b194f04-1ea0-45f1-8a1a-04c9338067d9:0"
        }
      ],
      "journey_executions": [
        {
          "journey_id": "6b194f04-1ea0-45f1-8a1a-04c9338067d9:0",
          "journey_execution_id": "6b194f04-1ea0-45f1-8a1a-04c9338067d9:0",
          "status": "completed",
          "success": true,
          "href": "https://api.mabl.com/test/journey/6b194f04-1ea0-45f1-8a1a-04c9338067d9:0",
          "app_href": "https://app.mabl.com/workspaces/5bf0ebb1-f158-4c02-9e71-1be9f6ce7d17/train/journeys/6b194f04-1ea0-45f1-8a1a-04c9338067d9:0",
          "test_cases": [
            {
              "id": "MABL-1234"
            },
            {
              "id": "MABL-999"
            }
          ]
        }
      ],
      "start_time": 1522777753987,
      "stop_time": 1522777997841
    }
  ]
}

📘

テストサイクル

ZephyrやTM4Jなど、一部のテストケース管理ツールには、「テストサイクル」という概念があります。実行対象のテストを定義するという点でmablのプランに似ていますが、まったく同じではありません。

TCMツールでテストサイクルを指定する必要がある場合は、カスタムスクリプトを修正して、regressionsmokeend-to-endなど、mabl内で設定したプランラベルに基づいてテストサイクルを設定することをお勧めします。プランのlabelは上記のJSONで確認できます。

これにより、プランに関連付けられているラベルを変更した場合でも、結果が毎回正しいテストサイクルに割り当てられていることを確認できます。

Webhook経由

実行後のWebhookを使用すると、テスト実行ごとに、関連するテストケースIDを持つテスト結果を簡単に送信できます。ペイロードを送信するにはターゲットURLが必要です。具体的には、以下に示すJSONペイロードでmablが呼び出すURLです。

上記の手順に従ってmablテストとTCMテストケースを統合すると、下記の実行後のWebhookペイロードにtest_caseメタデータが表示されるようになります。

{
  "status": "succeeded",
  "status_cause": null,
  "success": true,
  "plan": {
    "id": "4ba4550d-df2b-4df2-8799-46c44dbb4b9e",
    "name": "Print click and assert Plan",
    "labels": [ "apple", "zebra"],
    "href": "https://api.mabl.com/v1/schedule/runPolicy/4ba4550d-df2b-4df2-8799-46c44dbb4b9e",
    "tags": []
  },
  "plan_execution": {
    "status": "succeeded",
    "status_cause": null,
    "id": "d5b96d02-c45d-4d08-8684-de55411bcede",
    "href": "https://api.mabl.com/v1/execution/runPolicyExecution/d5b96d02-c45d-4d08-8684-de55411bcede"
  },
  "journeys": [
    {
      "id": "c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "name": "Print, then assert",
      "labels": [ "apple", "zebra"],
      "href": "https://api.mabl.com/v1/test/journey/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "tags": [
        "training"
      ]
    }
  ],
  "journey_executions": [
    {
      "status": "completed",
      "status_cause": null,
      "success": true,
      "name": "Print, then assert",
      "journey_id": "c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "journey_execution_id": "c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "start_time": 1517612117504,
      "stop_time": 1517612146280,
      "href": "https://api.mabl.com/v1/execution/runPolicyExecution/4ba4550d-df2b-4df2-8799-46c44dbb4b9e/testScriptExecution/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "results_href": "https://app.mabl.com/workspaces/3627972b-a762-4a87-a3fb-97cde3e9c414/test/plan-executions/d5b96d02-c45d-4d08-8684-de55411bcede/journeys/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
      "test_cases": [
        {
          "id": "MABL-1234"
        },
        {
          "id": "MABL-999"
        }
      ]
    }
  ],
  "start_time": 1517612110113,
  "stop_time": 1517612146368,
  "tags": [],
  "results": [
    {
      "success": true,
      "name": "Print, then assert",
      "results_href": "https://app.mabl.com/workspaces/3627972b-a762-4a87-a3fb-97cde3e9c414/test/plan-executions/d5b96d02-c45d-4d08-8684-de55411bcede/journeys/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0"
    }
  ],
  "message_version": "1.0.0"
}

CI/CDインテグレーション経由

JenkinsとBambooのインテグレーションにより、特定のテスト実行に関連付けられたテストケースの情報で、標準のJUnitレポートが強化されます。

JUnitレポートのテストケースID

レポートファイルには、テストケースIDが含まれるようになった2つのセクションがあります。

TestSuite要素内のProperties要素セクションには、以下のプロパティ名/値ペアのいずれかを含めることができます。

プロパティ名プロパティ値
completed-test-casesmablで成功したテストに関連付けられているテストケースIDのコンマ区切りのリスト。
failed-test-casesmablで失敗したテストに関連付けられているテストケースIDのコンマ区切りのリスト。
skipped-test-casesmablでスキップされたテストに関連付けられているテストケースIDのコンマ区切りのリスト。依存するテストが失敗した場合、テストはスキップされる場合があります。

さらに、各TestCase要素には、requirementキーを持つ非標準のProperties要素が含まれるようになりました。このキーの値は、テストケースIDのコンマ区切りのリストです。これは、XRayアプリケーションで受け入れられる形式です。

🚧

追加のCI/CDインテグレーション

現在のところ、上記の2つの方法以外に、結果からTCMテストケースIDを取得する方法はありません。当社では、このデータにアクセスできるように、CircleCIなどのインテグレーションのサポートを拡大していく予定です。