この書籍は、2021年12月に開催された第28回ソフトウェア工学の基礎ワークショップ (FOSE2021)の予稿集である。
「継続的インテグレーションに影響を及ぼすRinging Test Alarmsに関する実証調査」という論文を読んだ。
Ringing~~って初めて聞いたが、
CI上で同一のテストメソッドが2リビジョン以上連続して失敗している状態をRinging Test Alarms(RTA)と定義する
とのこと。
確かに、CIをやっていると、プロダクトコードにバグがはいったり、テストが古くなったり、あるいはテストのFlakyさに由来してテストが連続で失敗することはある。
本研究では、最終目的として、CIを有効に活用できていない実態とその悪影響を明らかにし、CIを用いた開発におけるガイドラインの整備やアンチパターンの作成を目指す。本稿では、その第一歩として、CI開発を妨げると考えられる”連続してテストが失敗し続けるRinging Test Alarms(RTA)”の現象及び原因について調査を行う
とのこと。
この論文では、調査対象として4つのOSSの開発履歴を分析していた。結果として、
- 全てのプロジェクトでRTAが観測された。ただし、RTAの多寡はプロジェクトによって差がある
- 80%のRTAは3リビジョン以内(日数にすると1日以内)で修正が完了している
- RTAの解消方法としては、プロダクトコードの修正、テストのスキップ(@Ignoreアノテーションの付与)、テストケースの削除などがある
といったことが挙げられていた。
今回はあくまで調査であったのだが、企業での開発でも実際にRTAは発生するし、最終目標が実現されると、僕としてもとても嬉しい。
また、現場あるあるとして「失敗しているのは知っているが修正する時間(タスク的余裕)がないので後回しにしている」という状況もあるため、失敗したテストを自動修正するアイデアがあると嬉しいと思った。
さらに、失敗した時の原因分析(≒プロダクトやテストの修正方針決め)は結構時間と体力を取られることもあるので、これを容易にする方法があると嬉しいなとも思った
。