Better Software Testing

ソフトウェアテストをもっと良くしたい

ソフトウェア工学の基礎 28 を読んだ(その2)

nextpublishing.jp

この書籍は、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は発生するし、最終目標が実現されると、僕としてもとても嬉しい。

また、現場あるあるとして「失敗しているのは知っているが修正する時間(タスク的余裕)がないので後回しにしている」という状況もあるため、失敗したテストを自動修正するアイデアがあると嬉しいと思った。

さらに、失敗した時の原因分析(≒プロダクトやテストの修正方針決め)は結構時間と体力を取られることもあるので、これを容易にする方法があると嬉しいなとも思った