今日読んだのはこちら。

Shi, August, Peiyuan Zhao, and Darko Marinov. 2019. “Understanding and Improving Regression Test Selection in Continuous Integration.” In 2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE). IEEE. https://doi.org/10.1109/issre.2019.00031.

読もうと思ったきっかけ、参照していたもの

A Survey of Flaky Tests | ACM Transactions on Software Engineering and Methodologyを先に読み始めて、参照されていたので気になった。

※他でも参照してたはずなんだけど忘れてしまった

メモ

論文の概要

  • 回帰テストは広く用いられるが、実行コストがかかる場合がある
  • これを削減するため、Regression Test Selection(回帰テスト選択、RTS)という手法がある
  • TravisCIにおいて、2つのRTS、モジュールレベルとクラスレベルを比較し、両者のハイブリッドRTSを開発・評価した
  • 結果、RTSはテストの実行時間短縮だけでなくFlakyテスト回避にも効果があった

背景

  • 回帰テストは広く用いられているが、以下課題がある
    • コードに変更を加えるたびにすべて実行(RetestAll)していると時間がかかる
    • これをクラウド上で実行すると、クラウドリソースがかかる(すなわち金銭的コストがかかる)
    • Flakyになる場合がある
  • RTSという技術がある。これは、回帰テストのうち、その時点のコード変更で影響をうけるテストのみを実行する手法。
  • 開発現場と研究の現場ではRTSの粒度にギャップがある。
    • 開発現場では、都度全テストを実行する(RetestAll)か、モジュールレベルでの依存関係を調べて関係箇所を実行することが多い
      • ここで言っているモジュールはmavenの文脈でのモジュール。クラスやパッケージよりも大きな規模の概念。

手法

  • 以下のRTSを比較した
    • モジュールレベルのRTS(ツール名GIB)
    • クラスレベルのRTS(ツール名Ekstazi)
    • 本研究で新しく提案する、ハイブリッドのRTS(ツール名GIBstazi)
  • GitHubからOSSのJavaプロジェクトをもってきて(スター数やプロジェクト規模などを加味)各RTS手法の効率などを分析

結果

ResearchQuestionは以下

  • RQ1:それぞれのRTSについて、選択したテスト、テスト実行時間、CIの総ビルド時間を比較するとどんな結果になるか
  • RQ2:RTSはCIで失敗したテストをどの程度選ぶか

RQ1については以下の通り

全体として、GIB、Ekstazi、GIBstaziはそれぞれ59.1%、35.2%、42.8%のテストを選択し、86.6%、65.5%、 59.4%のテスト時間を取り、77.3%、77.9%、72.2%の時間を要しています。意外なことに、GIBstaziは当初の予想とは異なり、 最も高速な手法であるように見えます。しかし、ある手法では 多くのジョブが合格し、対応するジョブはRetestAllでは失敗し ていることがわかります。

基本的に、GIBは絞り込みが荒いので対象となるテストも多くなるし、Ekstaziは絞り込みが細かいので対象テストも少なくなる。そしてハイブリッドなGIBstaziはその中間。この予想は結果に現れていた。ただ、ビルド時間のみは予想に反してハイブリッドなRTSが最も高速となった。

RQ2については、FlakyでないFail(=バグかもしれないもの)を見逃さなかった、という結果になっている。

※ただ、ここの理解が正直甘いので、RTSがFlakyそうなテストを対象としないこと、その精度が高いことは本当にいいのか?Flakyが見つかるのが遅くなるのでは?と思ったりする。他の論文も合わせて多方面から理解を高めたい。

感想

回帰テストのケースを絞る手法は前々から興味があったので、この論文ではさわりの部分しか理解できなかったけれども、もう少し深掘りしたい。たぶん仕事の現場でも使えるポイントがあるはず。

次に気になっているもの

ということで、次はもうひとつRTSがらみのを読んでみる。

Regression test selection for Java software | ACM SIGPLAN Notices