ページを選択

自動化ワークフロー (コードファースト)

コードファースト ワークフロー

コードファーストは、通常、コードで直接テスト設計を行うチームが採用するアプローチです。つまり、チームはテスト コードで直接テスト ケースを設計し、テスト スクリプトを実装し、テスト管理ツールの外で実行を管理します。そのようなチームは、コードの外でテスト ケースを作成し、管理するという負担が増えることを望みませんが、テスト結果を可視化し、結果に基づいてレポートを生成できることは、依然として重要です。

すでに TestRail にあるテスト ケースに基づいて自動化テストを作成する場合、仕様ファースト自動化アプローチが参考になるでしょう。

コードファーストは、TestRail CLI がサポートするデフォルトのアプローチです。このアプローチは、--case-matcher auto オプションを使用して自動的にテスト ケースを作成し、結果を TestRail に追加します。

利点:

    •   テスト ケースの自動生成
    •   テスト ケースの自動マッピング
    •   コードでだけテスト ケースを管理
    •   コードで直接テスト設計を行う、より技術的なチームに最適

欠点:

    •   マッピングが壊れやすく、自動化プロジェクトの構造やテスト名が変更されると、壊れる可能性があります。
    •   あまり経験がないチームでは、テスト ケースが重複する可能性があります。
    •   TestRail に既存のテスト ケースがある場合、マッピングを作成するのは困難で面倒です。

TestRail インスタンスの設定

コードファースト アプローチを採用する場合、まず、TestRail インスタンスに automation_id というカスタム ケース フィールドを追加します。このフィールドは、自動化テスト コードと TestRail のテスト ケース間のマッピングを保持し、テスト ケースを複製したり、テスト自動化コードに TestRail のケース ID を記入したりせずにテスト結果を TestRail にアップロードすることを可能にします。

新規カスタム フィールドを作成するには、[管理] > [カスタマイズ] にアクセスして [フィールドの追加] をクリックします。フィールド作成画面に移動したら、下の図に示すように、下記の 2 つの要件に従ってフィールドを作成します。詳細についてはカスタム フィールドの設定ページを参照してください。

    • システム名は automation_id 
    • タイプは String

TestRail CLI を使用した自動テスト結果のアップロード

TestRail CLI は簡素で効率的であるよう設計されています。コードファースト アプローチでは、TestRail CLI をインストールし、TestRail インスタンスを設定したら、コマンド ラインから JUnit 形式の結果ファイルを渡してすばやくランを作成し、テスト結果を追加し、さらに、まだ TestRail に自動テスト用のテスト ケースが存在しない場合は、自動的にケースを生成することもできます。

下記の JUnit 形式 XML レポートのサンプルを使用して次のような簡単なコマンドを実行し、テスト結果を TestRail に送信できます。コマンドの -y オプションに注目してください。このオプションは、プロンプトをスキップして自動的に新規テストを作成します。これは、CI ツールから TestRail CLI を実行する場合に便利です。

JUnit 形式 XML レポートのサンプル:

<testsuites name="test suites root">
  <testsuite failures="0" errors="0" skipped="1" tests="1" time="0.05" name="tests.LoginTests">
    <properties>
      <property name="setting1" value="True"/>
    </properties>
    <testcase classname="tests.LoginTests" name="test_case_1" time="159">
      <skipped type="pytest.skip" message="Please skip">
        skipped by user
      </skipped>
    </testcase>
    <testcase classname="tests.LoginTests" name="test_case_2" time="650">
    </testcase>
    <testcase classname="tests.LoginTests" name="test_case_3" time="159">
      <failure type="pytest.failure" message="Fail due to...">
        failed due to…
      </failure>
    </testcase>
  </testsuite>
</testsuites>

TestRail CLI の実行:

$ trcli -y \
>    -h https://INSTANCE-NAME.testrail.io \
>    --project "TRCLI Test" \
>    --username user@domain.com \
>    --password passwordORapikey \
>    parse_junit \
>    --title "Automated Tests Run" \
>    -f results.xml

Parsing JUnit report.
Processed 3 test cases in 1 sections.
Checking project. Done.
Found 3 test cases not matching any TestRail case.
Adding missing sections to the suite.
Adding missing test cases to the suite.
Adding test cases: 3/3, Done.
Creating test run. Run created: https://INSTANCE-NAME.testrail.io/index.php?/runs/view/123
Adding results: 3/3, Done.
Submitted 3 test results in 8.9 secs.

インポート処理が完了した後、TestRail プロジェクトのテスト ケース ページに移動すると、テスト結果レポートに含まれていたテストに対応するテスト ケースが TestRail に自動的に作成されていることがわかるでしょう。JUnit レポートのテストごとに classname.name というパターンを使用し、classname および name 属性を組み合わせて一意の Automation ID を追加していることに注目してください。この Automation ID を使用して自動化コードのテストと TestRail のテスト ケースをマッピングします。つまり、TestRail CLI を実行するたびに、TestRail の既存のテスト ケースと比較し、該当する Automation ID を持つテスト ケースがない場合にだけ新しいテスト ケースを作成します。

例:

自動テスト結果ファイルのテスト結果 TestRail の Automation ID
<testcase
classname=”tests.LoginTests”  name=”test_case_1″  time=”159″>
</testcase>

tests.LoginTests.test_case_1

テスト ケースのマッピングが適切に行われるよう、以下のことに注意してください。

    • TestRail にすでに存在するテスト ケースに自動テストの結果をアップロードする場合、自動テストの結果をアップロードする前に、必ずテスト ケースの automation_id を更新します。
    • 後で自動テスト スイートのテスト名または場所を変更した場合、TestRail のテスト ケースの automation_id フィールドを更新しないかぎり、TestRail に新しいテスト ケースが作成されます。

テスト ランおよびテスト結果ページに移動すると、TRCLI Test プロジェクトに Automated Tests Run という名前の新しいランが表示されます。

テスト ランを開くと、各テスト ケースの結果が表示されます。失敗したテスト ケースをドリル ダウンし、JUnit レポートから直接インポートされたエラー メッセージを確認できます。これはテスト中に起きた問題の概要をすばやく把握するのに便利です。