CNDT 2022、Jenkinsのクリエイターが語るテスト自動化の未来

2023年5月12日(金)
松下 康之 - Yasuyuki Matsushita
CNDT 2022からLaunchableの共同創業者である川口耕介氏のセッションを紹介する。

川口耕介氏といえばJenkinsの産みの親として日本だけではなくシリコンバレーにおいてもアントレプレナーとして著名なエンジニアだ。CNDT 2022において川口氏が行った「Future of CI/CD: testing.next」という20分の短いセッションを紹介する。

ソフトウェアテストに関する最新情報を紹介するセッション

ソフトウェアテストに関する最新情報を紹介するセッション

●動画:Future of CI/CD: testing.next

川口氏は現在CloudBeesのアドバイザーとなっており、新たに創業したLaunchableの共同CEOというのが現在の肩書きである。川口氏は、ソフトウェア開発が進む中で機能の追加などのコードの変更とそのテストにかかる工数が増大していることを指摘し、機能が増えれば増えるほどビルドからテストにかかる時間が掛け算的に増えてしまうことがインテグレーションのプロセスに大きな負担となっていることを指摘した。

ブラックボックス化してしまったビルドとテストの中身を解説

ブラックボックス化してしまったビルドとテストの中身を解説

その上で、デベロッパーにとってはCIの中身がブラックボックス化しており、コストと時間がかかる必要悪とでも言える存在になってしまっていることから、ビルド~テストに至るプロセスに新しいイノベーションが起こっていることを紹介した。

テスト自動化は必須だが、始めるのが難しい

テスト自動化は必須だが、始めるのが難しい

特にテストしたい部分とテストが可能な部分のズレ、最初に組織内でテストの自動化を行う場合のハードルなどがテスト自動化を実現できない原因であることを解説。ここでも必要だとはわかってはいても始められないというジレンマに触れて、テスト自動化が難しい一面を説明している。

またビルドからテストのコストが高いという点については複数の変更がマージされ、それをすべて順列にテストを行おうとするとビルドからテストにかけて大きな計算のためのコストが発生することも指摘。時間の短縮のためには並列化や分散が必要となるが、その場合でもメモリーやCPUなどのコストは下がらないことを説明した。

テストに時間がかかる問題は並列化と分散で対応

テストに時間がかかる問題は並列化と分散で対応

そして順列にコード変更のリクエストを処理するCIではコストが高くなってしまうためにリクエストをキューとして処理し、より失敗しそうなリクエストを先に実行して処理時間を短縮する手法や、新機能とプラットフォームのマトリクスをすべてテストするのではなく効率的な組み合わせを編み出して、無駄なテストを減らす方法などについても解説を行った。

テストしたい機能とプラットフォームのマトリクスを効率的にテスト

テストしたい機能とプラットフォームのマトリクスを効率的にテスト

より効果的なテスト方法の例として、Googleがオープンソースで公開したBazelが採用するインクリメンタルなビルドとテストについても解説し、コードの依存関係を理解した上で不要なビルドとテストを行わない方法などを解説した。これはソースコードの依存関係を詳しく分析して変更があったコードに依存する部分だけをテストし、依存しない部分のコードは過去のテストの結果(イメージ)をキャッシュから持ってきて使うというものだ。

これによって変更部分に関連するコードだけをテストすることで処理負荷が減るが、これでは全体の結合テストのコストは変わらない。それを解決する方法としてPredictive Test Selectionという技術を解説した。これは変更されたコードの依存関係を調べて、どのテストが一番失敗しそうかを判定してからそのテストを実行するというやり方だ。これだと失敗を高い確率で当てられるので他の成功するテストを実行するコストをなくすことができる。

最もテストが効果を出す部分だけを選択してテストする方法

最もテストが効果を出す部分だけを選択してテストする方法

また失敗する確率が高いテストを優先的に実施することで、テストの結果を最も素早く出せる並べ替えにも言及している。

複数のテストが実行される場合に最も失敗するテストから先に実行する方法

複数のテストが実行される場合に最も失敗するテストから先に実行する方法

この方法は川口氏のLaunchableのWebサイトでも解説されている方法論であり、SaaSとして提供されるLaunchableのソリューションでも提供されている機能となる。

LaunchableのWebサイトからの引用

LaunchableのWebサイトからの引用

他にもフレーキーテスト(コードは変更されていないのに成功と失敗がランダムに起こるテスト)についても解説。ここではテスト自体を回避しつつも傾向を分析する必要性などにも触れ、テストに関する最新の状況について説明を行った。

約20分という短い時間の中でテストの最新情報を提供するというスタイルのセッションとなったが、これらの問題を機械学習で解決すると謳っているLaunchableのソリューションについても、より踏み込んだ説明が聴きたくなる内容となった。

このセッションで川口氏は最新のテストにまつわる動向だけを紹介しているが、氏が創業したLaunchableはテストを機械学習によって進化させるソリューションを提供しており、Jenkinsを始めGitHub Actions、Travis CIなどのCIツールの外部ソリューションとして連携することが可能になっている。

●参考:Launch fearlessly for engineering teams

川口氏としては最新のテストツールの動向を解説しながら、自身が創業した新しいテストソリューションに誘導したかったのだろうが、そこはエンジニアらしく抑制を効かせたといったところだろう。

開発組織におけるテストの必要性についての考察は以下のプレゼンテーションが参考になるだろう。

●参考(PDF):組織にテストを書く文化を根付かせる戦略と戦術

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

クラウドイベント
第16回

CNDT 2022、ChatworkのSREがコンテナセキュリティのための新しいツールを紹介

2023/6/23
ChatworkのSREがOPAを使ったコンテナセキュリティの実装例を解説したセッションを紹介する。
ストレージイベント
第15回

CNDT 2022、サイボウズのストレージアーキテクトが企業からOSSへの貢献を継続する仕組みを解説

2023/6/22
サイボウズのアーキテクトがRook/Cephのメンテナー経験を活かしてOSSへの貢献を継続する秘訣を解説したセッションを紹介する。
クラウドイベント
第14回

CNDT 2022、ArgoCDとGitHub Actionsの導入でリリース時間を1/4に削減した事例を紹介

2023/6/19
ChatworkのエンジニアがJenkinsからArgoCD/GitHub Actionsに移行してリリース時間を削減した事例を解説したセッションを紹介する。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています