仕様ファースト自動化ワークフロー
仕様ファーストは、自動テスト コードを実装する前にテスト ケースを設計するというアプローチです。このワークフローでは、まず TestRail でテスト ケースの大枠と設計を作成するため、さまざまなフォーマットでテスト ケースを作成し、レビュー、カテゴリ分け、優先順位付けを行って、自動化するテスト ケースを選択できます。このアプローチは、TestRail ですでに文書化されているテスト ケースを自動化するチーム、より詳細にテスト ケースを文書化する必要がある状況にあるチーム、TestRail を使用して、自動化するテスト ケースやその時期に優先順位を付けたいチームなどに適しています。
コードで直接テスト ケースを作成しており、TestRail にテスト ケースが保存されていない場合は、コードファースト自動化アプローチが参考になるでしょう。
TestRail CLI を使用すると、TestRail のテスト ケースの ID をどのようにテスト自動化フレームワークに追加するかに応じて、 name
または property
値を渡すことで、--case-matcher
オプションを利用できます。
利点:
-
- コードの構造が変化した場合もケースのマッピングが保たれます。
- 自動作成によってテスト ケースが重複する可能性が減ります。
- 詳細なテスト ケースの設計と計画が可能です。
- 整備されたテスト文書が必要なチームに適しています。
欠点:
-
- コードにケース ID が記載されていないテスト ケースは作成されず、結果もサブミットされません。
- 手作業でマッピングする必要があり、面倒でエラーが発生しやすくなります。
テスト ケースのマッピング
TestRail のテスト ケース ID をテスト自動化コードに追加する方法は 2 つあります。
-
--case-matcher "name"
オプションを使用する場合- テスト ケースの ID をテスト名に追加します。そうすると、ケース ID がテスト ケース名の一部として JUnit レポートに表示されます。次のように、さまざまなパターンに従って ID を追加できます。
[C123] test_case_1
,test_case_1 [C123]
,C123 test_case_1
,C123_test_case_1
test_case_1 C123
,test_case_1_C123
-
<testcase classname="tests.LoginTests" name="C123_test_case_1" time="650"> </testcase>
- テスト ケースの ID をテスト名に追加します。そうすると、ケース ID がテスト ケース名の一部として JUnit レポートに表示されます。次のように、さまざまなパターンに従って ID を追加できます。
--case-matcher "property"
を使用する場合- JUnit レポートに
test_id
というプロパティが追加されるように設定する必要があります。 -
<testcase classname="tests.LoginTests" name="test_case_1" time="650"> <properties> <property name="test_id" value="C123"/> </properties> </testcase>
- JUnit レポートに
使用するケース ID は、テスト ケース ページに接頭辞 C 付きで表示される ID です。
TestRail CLI を使用した自動テスト結果のアップロード
TestRail CLI は簡素で効率的であるよう設計されています。仕様ファースト アプローチでは、TestRail CLI をインストールし、TestRail インスタンスを設定したら、コマンド ラインから JUnit 形式の結果ファイルを渡してすばやくランを作成し、テスト自動化プロジェクトのテスト ケースのテスト結果を追加できます。
下のサンプルは、テスト名にテスト ケース ID を含む JUnit XML の例です。この場合、--case-matcher "name"
オプションを使用して TestRail のテスト ケースと比較しますが、後の手順は --case-matcher "property"
オプションを使用する場合も同じです。下記のような簡単なコマンドを実行し、テスト結果を TestRail に送信できます。
仕様ファースト アプローチを採用する場合は、-n
オプションを使用して自動テスト作成をスキップすることを推奨します。それでも、コードに ID が含まれていないテストを作成したい場合は、-y
オプションを使用できます。ただし、後でコード内で ID をマッピングしなかった場合、次に 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="C2647_test_case_1" time="159"> <skipped type="pytest.skip" message="Please skip"> skipped by user </skipped> </testcase> <testcase classname="tests.LoginTests" name="C2645_test_case_2" time="650"> </testcase> <testcase classname="tests.LoginTests" name="C2648_test_case_3" time="159"> <failure type="pytest.failure" message="Fail due to..."> failed due to… </failure> </testcase> </testsuite> </testsuites>
TestRail CLI コマンド:
$ trcli -n \ > -h https://INSTANCE-NAME.testrail.io \ > --project "TRCLI Test" \ > --username user@domain.com \ > --password passwordORapikey \ > parse_junit \ > --case-matcher "name" \ > --title "Automated Tests Run" \ > -f results.xml Parsing JUnit report. Processed 3 test cases in 1 sections. Checking project. 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 5.5 secs.
プロセスが終了した後、テスト ランおよびテスト結果ページに移動すると、TRCLI Test プロジェクトに Automated Tests Run という名前の新しいランが表示されます。TestRail CLI が TestRail のテスト ランへの直接リンクを出力していることにも注目してください。
テスト ランを開くと、各テスト ケースの結果が表示されます。失敗したテスト ケースをドリル ダウンし、JUnit レポートから直接インポートされたエラー メッセージを確認できます。これはテスト中に起きた問題の概要をすばやく把握するのに便利です。