短縮された時間
実行のたびに、どれだけのテスト時間を短縮したかが表示されます。数値は CI の中にとどまるため、1 か月分の合計も数行のスクリプトで出せます。信用するしかないダッシュボードは必要ありません。
実行ごと
カバレッジマップには、各テストクラスにかかった時間が記録されています。TestDetta は何かを実行する前に、テストスイート全体と、選択したクラスの記録時間をそれぞれ合計します。
Recorded test time: 0.6 s of 3.4 s (83% saved).
同じ行が GitHub のジョブサマリーにも、ほかの CI システム向けに --summary-file が書き込む Markdown にも含まれます。数えているのはテスト時間だけです。ビルドと復元はどちらの場合も行われます。ただし、丸ごとスキップされたテストプロジェクトはビルドもされないため、実際の短縮はこの行に示される以上になります。
まだマップが記録されていないなどの理由で所要時間がわからないプロジェクトは、どちらの数値からも除外されます。JSON では projectsWithoutTimings に一覧表示されます。
JSON
td affected --format json は、スクリプト向けに同じ数値を、実行全体とテストプロジェクトごとに出力します。
{
"estimate": {
"fullSeconds": 3.4,
"selectedSeconds": 0.6,
"savedSeconds": 2.8,
"projectsWithoutTimings": []
}
}
合計する
プルリクエストの実行ごとに JSON をビルド成果物として保存しておきます。任意の期間の savedSeconds を合計すれば、短縮されたテスト時間がわかります。何も CI の外に出ることはありません。
td affected --format json > testdetta.json # in each pull request run
# later, over the files of a month:
jq -s 'map(.estimate.savedSeconds // 0) | add / 3600' runs/*.json # hours saved
テストを実行する並列ジョブの数(OS やフレームワークのマトリックス)を掛ければランナーの稼働時間に、さらにランナーの 1 分あたりの料金を掛ければコストになります。節約額の計算ツールは、同じ計算を推定値で行います。
数値の意味
- 時間は記録時の実行から取得しています。記録ではテストをカバレッジ付きで 1 つずつ実行するため、通常の実行での絶対的な時間はたいていこれより短くなります。そのまま当てはまるのは短縮された割合です。
- ビルドファイルが変更された後など、丸ごと実行されるテストプロジェクトでは何も短縮されず、この行にもそのように表示されます。