開発プロセス全体のコードカバレッジを確認する

コードカバレッジとは?

コードカバレッジとは、テスト実行時にソースコードのどの部分が実行され、どの部分が実行されていないかを判定する方法です。一般的にコードカバレッジといえば、JUnitやNUnitなどテストフレームワークを使った単体テストで計測するカバレッジの事をイメージするでしょう。単体テストとは実行可能な最小単位でのテストを指します。また、小さい単位でテストを行うため網羅的なテストがしやすく、コードカバレッジを計測し単体テストの終了条件として設定する事もあります。

しかし、単体テストの実装はプロダクトのコードと同じまたはそれ以上のコードを実装する必要があり、それを行うためのスキルも必要です。そのため、単体テストを導入しコードカバレッジを基準としたが、予想以上に工数がかかったり、実装に苦労したという事もあるのではないでしょうか。

そこで、ここでは単体テストだけでコードカバレッジを計測するのではなく、後工程の結合テストやUIテストでもコードカバレッジを計測し、それらをマージすることで開発プロセス全体でテストが十分に行われたか確認する方法をご紹介します。

結合テストやUIテストでのコードカバレッジ計測の方法は本ブログの過去記事でも紹介していますので、こちらもあわせて御覧ください。

アプリケーションカバレッジの計測を導入する

DTPを使ったカバレッジのマージ

単体テストと結合・UIテストのコードカバレッジをマージするためにはParasoft社製のテストツールJtest、dotTEST、C++testを使ってコードカバレッジを計測し、Parasoft DTP(以下DTP)でマージします。DTPはコードカバレッジだけでなく、テストの成功、失敗、静的解析の結果なども表示出来るダッシュボードツールです。

それぞれ別々にコードカバレッジを計測し、DTPへ登録します。

単体テストカバレッジ

まず、単体テストのコードカバレッジをDTPへ登録します。単体テストは特に重要な部分や変更が入りやすい箇所に対してのみ重点的にテストケースを作成し、コードカバレッジの計測を行います。前述の通り、単体テストは様々なメリットがある一方で工数が掛かりスキルも要求されるため、対象を絞り込んでテストケースを実装します。また、画面表示部分やGUIと密接に関わっている箇所など単体テストの実装が難しい部分も後工程に任せることにします。

結合・UIテストのカバレッジ

結合・UIテストでは単体テストがしづらい箇所や対象とならなかった箇所を実際にアプリケーションを動かしてコードカバレッジを計測します。コードカバレッジをDTPへ登録する時にあらかじめ設定を行っておけば自動的に単体テストのコードカバレッジとマージされます。コードカバレッジのマージは1回だけではなく、例えば、数日間掛けて実行したテストのコードカバレッジをその都度DTPへ登録し、マージする事もできますので、テストの抜け漏れを確認しながらテストを行えます。

DTPでカバレッジを確認

マージ後のコードカバレッジをDTPで確認できます。マージ後のカバレッジだけでなく、マージ前の単体テスト、結合・UIテストのカバレッジといった、それぞれのフェーズでのコードカバレッジを確認することもできます。マージの対象は手動・自動テスト関係なく取得しマージすることができるので、探索的テストなどエビデンスを残しづらいテストのコードカバレッジも合わせて開発プロセス全体のコードカバレッジを計測することができます。

まとめ

DTPを使ったコードカバレッジのマージはいかがでしょうか?
単体テストは敷居が高くすべてのソースコードに対して実施するのは難しいという話をよく聞きます。そこで、単体テストは必要な箇所だけに絞り、足りないところは後工程のテストで補うという方法もあります。それぞれのテストのコードカバレッジを計測することで開発プロセス全体を通してテストの網羅率を確認できます。もちろん、高いコードカバレッジをとる事が高品質につながるというわけではありませんが、テストの抜け漏れの確認や十分なテストが行われたかの指針のひとつとしてご利用いただけます。

Java対応静的解析・単体テストツール Parasoft Jtest

Jtestは、テスト工数の大幅削減とセキュアで高品質なJavaシステムの開発を強力にサポートするJava対応テストツールです。1,000個以上のコーディング規約をもとにソースコードを静的に解析し、プログラムの問題点や処理フローに潜む検出困難なエラーを検出します。さらに、JUnitを用いた単体テストについて、作成、実行、テストカバレッジ分析、テスト資産の管理といった単体テストに係る作業をサポートし、単体テストの効率化を促進します。

Top