テストレポートとは?
テストレポートは、テスト実行の構造化された要約で、どのテストが合格・失敗・スキップされたか、そしてその理由を記録します。
スイートの実行後、誰か、あるいは何らかのシステムが、何が起きたかを知る必要があります。テストレポートはそれを捉えます。集計、エラーメッセージ付きの失敗、時間、スキップです。CIでは、レポートこそが生の実行をpull request上の読みやすいシグナルに変えるものです。
レポートに含まれるもの
- 実行・合格・失敗・スキップされたテストの合計。
- 各失敗について、アサーションとエラーメッセージ。
- テストごとおよび合計の所要時間。
- 多くの場合、各テストが属するスイートやファイル。
人間向けと機械向けのレポート
レポートには二つの読み手がいます。コンソール出力はターミナルを読む人間向けです。JUnit XMLやJSONのような構造化フォーマットは機械向けです。CIシステムがそれをパースして結果を表示し、傾向を追跡し、失敗した具体的なテストでpull requestに注釈を付けます。
一般的なフォーマット
JUnit XMLは、名前はframework非依存であるにもかかわらず、ほとんどのCIシステムが理解する事実上の標準です。他のフォーマットにはTAP、JSON reporter、ツール固有のHTMLレポートがあります。多くのrunnerは複数を一度に生成できます。
簡単な例
runnerは通常、構造化レポートをどこにどのフォーマットで書き出すかをCIが取り込めるよう伝えるflagを受け取ります。
Producing a structured report
pytest --junitxml=report.xml
jest --reporters=jest-junitCIにおけるテストレポート
CIはレポートを取り込み、テストごとの内訳を表示し、しばしば失敗をpull requestに直接コメントするため、開発者は生のログを読まずに何が壊れたかを正確に見られます。レポートの生成に要する時間はごくわずかで、高速runnerが実行全体を素早く保つため、レポートが迅速に届きます。
重要なポイント
- テストレポートは、どのテストが合格・失敗・スキップされたかを要約します。
- JUnit XMLのような機械フォーマットにより、CIが結果を表示し追跡できます。
- CIはレポートをpull requestに表示し、失敗を明白にします。
関連ガイド
What Is a JUnit XML Report?JUnit XML reports explained: the de facto test-result format CI tools understand, its structure, why it is fr…
What Is a Test Runner?Test runners explained: the tool that discovers, executes, and reports on your tests, what features they prov…
What Is Continuous Testing?Continuous testing explained: running automated tests throughout the delivery pipeline for constant feedback,…
What Is Test Coverage?Test coverage explained: what it measures, why high coverage is not the same as good tests, how to use it wel…