🚀

Launchable Advent Calendar 20日目 - Unhealthy Tests

2022/12/20に公開

Launchableの各機能の利用方法を紹介する Launchable Advent Calendar 20日目です。

はじめに

本日はWeb Appの一機能であるUnhealthy Testsページについて紹介します。(docs)

変更に関係なく時々落ちるテストがいくつかある。そこまで重要ではないがテストの実行に時間がかかっているテストがある。のような問題がありテストのリファクタリングをする必要がある際、何を基準に行いますか?
Unhealthy Testsページはそれらのテストを具体的な数値で可視化し、どのテストから直したら良いか助けるデータを提供します。

Unhealthy Testsページ

左サイドバーの Unhealthy Tests メニューから遷移できます。

Unhealthy TestsページはFlaky TestsとNever Failing Testsの2つの項目から構成されています。

Flaky Tests

Flaky Testとはコードに変更がないにも関わらず実行の結果が変わってしまう不安定なテストのことを指します。

Konboi/launchable-java-exampleにはFlakyなテストがないためdemo用のワークスペースのデータを元に紹介します。

Flaky Testsは過去1週間どのテストがFlaky Testだったのか(TESTCASE)、どのくらいFlakyなのか(FLAKINESS SCORE)、どの程度実行に時間がかかっているのか(TOTAL DURATION)を表示します。

FLAKINESS SCOREは1に近ければ近いほど不安定であることを意味しています。
今回の例だと test_get_org_workspace_no_environment_variables というテストが最も不安定でテストに時間がかかっているため、修正する費用対効果が大きと言えるでしょう。

Flaky Testsのデータはどのテストから直していけば良いのかというのを決めるのに非常に役に立ちます。

OSSのvitessio/vitessでもこのFlaky Testsのデータを活用しFlakyなテストの改善を行っていました。

Never Failing Tests

これは過去1週間で1度も失敗しなかったテストの、テストケース(TEST TARGET)、実行回数(RUNS), 総実行時間(TOTAL DURATION)を表示します。

Konboi/launchable-java-exampleで送っているデータだと、Div, ,Div, Addのテストが1度も失敗してないということが分かります。

Konboi/launchable-java-exampleではテストケースも少なく、1つ1つの実行時間も短いため問題にはなりません。
が、大きなプロジェクトなので既に使ってない機能や、影響が少ないテストケースがあるかもしれません。
そのようなテストケースのリファクタリングをする際に利用できるデータです。

さいごに

今日はプロジェクトのテストの状態を確認できるUnhealthy Testsページについて紹介しました。
明日はテスト実行状況を確認できるTrendページについて紹介します。

Discussion