BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース CIシステムを製品として扱って、高速で高品質なフィードバックサイクルを実現しよう

CIシステムを製品として扱って、高速で高品質なフィードバックサイクルを実現しよう

原文リンク(2023-06-22)
継続的インテグレーション(CI)システムのフィードバック時間を改善し、テスト手法とクラスを最適化することで、開発チームにとってより効果的なフィードバックが得られるようになった。Tobias Geyer氏によると、CIシステムは開発プロセスの重要な一部であり、そのように扱われるべきだという。

Tobias Geyer氏は、ルーマニア・テスト会議2023で、テスターとして継続的インテグレーション・システムの改善について講演した。

Geyer氏が同社に入社したとき、継続的インテグレーション(CI)・システムは、机の下に置かれた古い開発者用PCであった。処理が非常に遅かったため、フィードバック・サイクルが長くなり、開発者はCIシステムからのフィードバックを完全に無視してしまっていた、と彼は言う。

彼はフィードバックにかかる時間を改善するために、営業時間中のビルドステップのうち、常に必要とされるものではないものをスキップし、夜間のビルドに限定した。

修正に手間がかかった問題は、ディスクI/Oの問題だった。ハードディスクが追いつかないほど多くのデータを読み書きしていたのだ。Geyer氏は、IT部門と連絡を取り、CIシステムを開発者用PCからデータセンター内の仮想マシンに移した。これにより、ディスクI/Oの問題を解決し、システムを2台のマシンに拡張ができ、多くのビルドを並行に実行できるようになった。

どのテストが高速で、どのテストが低速かを把握した後、それらをカテゴリーに分け、高速フィードバックCIビルドの一部としてテストのサブセットのみを実行した。遅いテストは、実行頻度の低い専用ビルドに移した。そうすることで、完全なフィードバックは得られるが、その大部分は以前よりもずっと早く得られるようになった、とGeyer氏は説明した。

Geyer氏は、テストメソッドとクラスをどのように最適化したかを説明した。

どのテストが遅いかを特定したら、それを技術的負債と同じように扱った。テストを改善するために、開発者のために "テスト負債予算 "を作った。

1.テストデータを切り捨て、関連するデータだけを残すようにし、テストのセットアップ時間を短縮した。

2.テストにモックが導入され、そもそもテストデータをロードする必要がなくなった。

3.製品コードをよりテストしやすくし、同じチェックを統合テストではなく単体テストとして行えるようにした。

Geyer氏は、影響を与えるために技術面を深く理解する必要はないと結論づけた。

たとえ他の誰かが実際の実装作業をしなければならないとしても、私は、より良い変化を起こすために、測定、実験、共同作業といったテストのスキルを使うことができる。

InfoQは、CIシステムの改善についてTobias Geyer氏にインタビューした。

InfoQ: 省略されたビルドステップの 例を教えてください

Tobias Geyer氏: もっとも顕著な例は、製品の難読化(obfuscation)だ。各製品のアーティファクトは、顧客に納品される前に難読化され、明らかに難読化された製品はテストされる必要がある。残念ながら、難読化には少なくとも30分はかかる。私たちは日中は難読化作業を避けて、夜間に難読化された製品をテストしている。

InfoQ: ビルド・プロセスとプラットフォームについて、どのような大きな変更を行なったのでしょうか?

Geyer氏: ビルドシステムをAntとWindowsバッチファイルからGradleに移行した。これは私のチームの開発者がほとんど行い、私はテストの実行に関わる部分をすべて担当した。

テストCIシステムを導入することで、明白だが重要な変更を行った。これにより、通常の開発フローを中断することなく、CIシステムへの変更(プラグインのアップデートや新しいビルドノードなど)を準備し、テストができるようになった。

InfoQ: 継続的インテグレーションに関する知識の共有を、異なるチーム間でどのように促したのでしょうか?

Geyer氏: 社内の他の部署で、CIシステムと一緒に、あるいはCIシステムを使って仕事をしていて、同じような技術スタックを持っている人を探した。定期的にミーティングを開き、最新の変更や直面している問題について話し合った。すでに問題を解決しているチームがいて、その解決策を再利用できるケースが多くあった。

他のチームが何をしているのか、どんな結果を出しているのかを見るのは素晴らしいことだった。チームが変更を導入したくても、チーム内で反発を受けるケースもあった。「他のチームが良い経験をしている」と言えるのは、人々を説得するのに役立った。

InfoQ: CIソリューションに不満を持っているチームへのアドバイスはありますか?

Geyer氏: 他のソフトウェア開発プロジェクトと同じように取り組むことだ。気になる問題をリストアップし、バグのように扱う。つまり、優先順位をつけ、分析し、共同で修正する。いくつかの問題を解決するためには、IT部門と話し合うことが重要だった。

作者について

この記事に星をつける

おすすめ度
スタイル

BT