【Coco顧客事例】InnovMetricはCocoを用いてコードカバレッジを測定し、開発者の時間を節約しています

この記事はInnovMetric measures code coverage & saves developers’ time with Cocoの抄訳です。

1994年に設立され、カナダのケベック市を本拠地に、世界各地に子会社を展開するInnovMetric Software Inc.は、3D計測ソフトウェアソリューションの先駆者として知られています。InnovMetricのPolyWorks®ソフトウェアソリューションは、エンジニアリングや製造業のアプリケーションにおいて、3D計測技術の可能性を最大限に引き出すためのツールとして、世界最大級の製造業企業から厚い信頼を寄せられています。

PolyWorksの主要な特徴の一つとして、カスタマイズ可能なワークフローや自動化プロセスを開発・導入できる強力なマクロプログラミング言語が挙げられます。この言語は、新機能の開発やソフトウェアコンポーネントのリファクタリング時のテストプロセスを自動化するために、社内でも頻繁に活用されています。

テストによってどの程度のコードがカバーされているかを理解する

InnovMetricは2003年から機能テストと継続的インテグレーションへの投資を重視してきました。毎年約1,000のテストを作成し、フレームワークに追加しています。現在では、15,000以上のテストスクリプトが存在し、これら全てを実行するのに14時間以上を要します。

毎日各テストを実行することで、InnovMetricはリグレッションの有無を把握できますが、最近までテストによってカバーされるコードの範囲を正確に知ることはできませんでした。大まかな推定は可能でしたが、適切なツールがなければ確定的なことは言えませんでした。

そこでInnovMetricは、コードカバレッジツールを導入すれば、より正確な測定が可能になると考えました。様々なツールを厳密に評価した結果、InnovMetricは最終的にCocoコードカバレッジ分析ツールを日々のワークフローに組み込むことを決定しました。

「Cocoを利用することで、我々の作業量に応じてカバレッジ値が一定の割合で上昇することを確認できます。これが我々にとって最も重要な点です。」- InnovMetric社

コードカバレッジを測定し、開発者の時間を節約する

CocoはすぐにInnovMetricに、ソフトウェアのどの部分がまだテストでカバーされていないかを示しました。しかし、別の課題が待ち構えていました:開発者がコードベースで何かを変更し、テストを実行しようとすると、その変更をバージョン管理にプッシュできるまで、翌日まで待たなければならないのです。これでは時間がかかりすぎ、また、全てのテストを実行するという開発者のワークフローを妨げてしまいます。

そこでInnovMetricは、Cocoを用いてどのテストがコードの特定部分を使用しているかを調査し、開発者が関連するテストだけを実行できるようにし、より迅速な結果を得られるようにしました。

2日ごとに、テストのインストゥルメンテッドバージョンが実行されます(実行時間は24時間近くかかるため、2日ごとに開始されます)。これにより、条件カバレッジを含む完全なレポートが得られ、開発者は修正しようとしているコードがどのテストによってカバーされているか、またはカバーされていないかを確認するためにこれを利用できます。

「Cocoは、コードとテストの間の欠けていたつながりを補ってくれます。初めはただのコードカバレッジツールと思われたCocoですが、使い始めてから、その高度な機能に驚かされました。」- InnovMetric社

InnovMetricは、エディタ内の現在のファイルに基づいて適切なHTMLカバレッジレポートを取得するために、Visual Studio用のマクロを作成することができました。次のステップは、変更されたコード(関数レベル)をカバーするテストの完全なリストを取得し、それらのテストを実行することです。

また、Cocoはテストの実行順序を最適化することで、最も早く実行されたテストによって最大のカバレッジが得られるようにすることも可能です。

「良いサポートがないソフトウェアは、良いソフトウェアとは言えない」

InnovMetricにとって、サポートは非常に重要な要素であり、これがCocoを選択する決定を後押しする一因となりました。スピードアップの過程で、CocoのカスタマーサポートチームはInnovMetricが初期の問題を解決するのを手助けしました。このプロセスの一部として、サポートスタッフはCocoのいくつかのバグを見つけ出し、迅速に修正。これによりInnovMetricは修正を加えることなくコードベース全体を計測することが可能となりました。

Qtの品質保証製品群の詳細については、https://www.qt.io/product/quality-assuranceをご覧ください。


Blog Topics:

Comments