LoginSignup
3
1

More than 1 year has passed since last update.

MagicPodとQualityForwardでテスト実行から結果投入まで連携する・改

Last updated at Posted at 2022-02-19

はじめに

自動テストツールのテスト結果をテスト管理ツールに自動投入したい場合、それぞれのAPIを利用して連携する方法があります。今回は、MagicPodの自動テスト結果をQualityForward(以降QF)に投入する方法を説明します。

前回の記事では、MagicPod WebAPIでテストケースごとの結果を取得できず、制約を設けた結果連携でした。バージョン0.95.0で各テストケースの結果を取得できるようになったため、より詳細なテスト結果の連携を行います。

今回、具体的なサンプルコードは前回記事と殆ど同じなので割愛しています。

使用するツールと全体像

20220131172926.png

処理の流れ

image.png

連携までの流れ

次の流れに沿って説明していきます。

1. 準備
  1-1. QFの準備
    - テストスイートの作成
    - テストフェーズの作成
    - 環境変数の設定
  1-2. MagicPodの準備
    - 自動テストの作成
    - 環境変数の設定
2. 連携スクリプトの作成
  2-1. QF連携スクリプト
  2-2. MagicPod連携スクリプト
3. 実行

1. 準備

1-1. QFの準備

テストスイートの作成

テストスイートを新規作成し、連携に必要な次の項目を設定します。

テスト定義項目

20220203162821.png

項目名 内容
識別ID QF上のテストケース番号
優先度 本来の優先度ではなくA:自動/B:手動/C:未実装の区分で使用
テストメソッド名 テストケースの名前
MagicPodテストケースID MagicPod上のテストケースID
MagicPodデータパターンID MagicPod上のデータパターンID

テスト結果項目

20220203163742.png

項目名 内容
テスト実施者 自動テスト作成者のQFユーザID
テスト実施日 自動テスト実行開始日
テスト結果 PASS, FAIL, SKIP, CUT, BLOCK, N/A, Q&A
started_at テスト開始日時
ended_at テスト終了日時
message MagicPodのテスト結果URL

テストフェーズの作成

作成したテストケースを紐づけて、テストフェーズを作成します。

20220203164323.png

1-2. MagicPodの準備

自動テストの作成

MagicPodでテストケースを作成し、一括実行における実行設定を決めます。今回はテストケースごとに付与できる「ラベル」を使い、プロジェクト内で「SimpleList(サンプルアプリの名前)」のラベルを含むテストケースのみを実行しました。その他の接続設定は以下の通り。

 

この設定はMagicPod連携スクリプト内に記述します。同様の設定で想定通りに実行できるか、MagicPodのGUIを使ってあらかじめ確認しておくとよいでしょう。

環境変数の設定

MagicPod Web APIに必要なパラメータを設定します。組織名とプロジェクト名はプロジェクト画面のURLを参照すると分かりやすいです。

  • base_url
    • https://magic-pod.com/api/v1.0/
  • api_key
    • ユーザメニューの「APIトークン」から取得
  • organization_name
    • 組織名。例の場合、VeriServe
  • project_name
    • プロジェクト名。例の場合、Sandbox

2. 連携スクリプトの準備

2-1. QF連携スクリプト

前回の記事と同様に、QualityForward Blogで公開されている連携スクリプトを参考しています。具体的なスクリプトや解説は参考先に譲りますが、次の処理をメソッド化して使用するとよいでしょう。

QFのテストサイクルの作成

MagicPodのテスト実行のタイミングでテストサイクルを自動生成します。

タイミングを固定したい場合は、テストフェーズの設定で「テストサイクルの自動生成」をONにし、フェーズ作成日を開始日として2週間で自動生成することもできます。

POST /api/v2/test_phases/:test_phase_id/test_suite_assignments/:test_suite_assignment_id/test_cycles.json

QF上のテストケース一覧を取得

MagicPodのテストケースと突合するために、QF上のテストケース一覧を取得します。

GET /api/v2/test_suites/:test_suite_id/test_suite_versions/:test_suite_version_id/test_cases.json

QF上のテストケースとテスト結果のマッチング

QFのテストケースとMagicPodのテストケースを突合し、QFのテストケース番号(識別ID)を取得します。参考先では自動テストの1メソッドがQF上の1識別IDに対応していますが、ここではMagicPodの1テストケース内の1データパターンがQFのテストケース番号に対応するように突合しています。

for each <MagicPodテスト結果>:
  for each <QFテストケース>:
    if <MagicPodテスト結果中のテストケースIDとデータパターンIDの組合せ> in <QFテストケース中の識別子列>:
      return <QFテストケース番号>

QFへのテスト結果投入

POST /api/v2/test_phases/:test_phase_id/test_suite_assignments/:test_suite_assignment_id/test_cycles/:test_cycle_id/test_results.json

※1秒間に1リクエストを超えないように設計

2-2. MagicPod連携スクリプト

連携に必要なAPI3種類と、テスト結果のパースをメソッド化するとよいでしょう。

MagicPodの自動テストを一括実行

1-2のMagicPodの準備で決めた実行設定をスクリプトに反映します。レスポンス内のbatch_run_numberは一括実行ごとに付与される番号で、テスト結果の取得に利用します。

POST /v1.0/{organization_name}/{project_name}/batch-run/

# 実行設定: 必要に応じて項目を追加
post_data = {
    "environment": "magic_pod",
    "os": "ios",
    "device_type": "simulator",
    "version": "14.4",
    "model": "iPhone 12",
    "app_type": "app_file",
    "app_file_number": 1,
    "send_mail": "false",
    "included_test_case_labels": ["SimpleList"],  # ラベル指定
}

MagicPodのテスト結果を取得

timeモジュール等を使って「レスポンス内のstatusrunningの間待機する」処理を入れると、テスト実行完了後にテスト結果を取得することができます。

GET /v1.0/{organization_name}/{project_name}/batch-run/{batch_run_number}/

使用するレスポンスの項目は以下の通り。項目を追加したい場合は、QFのテスト結果定義列も一緒に追加します。

▼ MagicPod Web APIより
image.png

MagicPodのテスト結果をパース

QFのテスト結果定義に合わせるため、MagicPodのテスト結果をパースします。利用する項目と対応するQFの項目は次の通り。

data = {
    "test_result[test_case_no]": QFのテストケース番号
    "test_result[result]": `results`内の`status`,
    "test_result[user_id]": QFのユーザID
    "test_result[executed_at]": データ投入時の時間,
    "test_result[content1]": `results`内の`started_at`,
    "test_result[content2]": `result`内の`finished_at`,
    "test_result[content3]": `result`内の`url`+`order`,
}

3. 実行

連携スクリプトを使って、処理の流れに沿ってMagicPodの実行からQFへのテスト結果投入までを実装します。

さらに連携スクリプトをCIツールに組み込むことで、定期実行やソースコミットなどトリガーを指定した自動実行が可能になります。

  • MagicPodの自動テストを一括実行
  • MagicPodのテスト結果を取得(実行終了まで待機)
  • MagicPodのテスト結果をパース
  • QFのテストサイクルの作成
  • QF上のテストケースとテスト結果のマッチング
  • QFへのテスト結果投入

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1