猫でも使えるソフトウェアのテスト網羅(3):無料ツールで単体テストを楽に実行しよう山浦恒央の“くみこみ”な話(86)(2/4 ページ)

» 2016年08月01日 07時00分 公開

2.パス網羅の憂鬱

 ソフトウェア開発エンジニアにとって、コーディングは親しい友人とのパーティーのように楽しく、テストは翌朝に待ち受けるパーティーの後片付けのように、気の進まない苦しい作業です。これは、テストはコーディングに比べ作業量や複雑度が格段に上がるためです。また、テストは来た道を振りかえる地味な作業であるため、コーディングのように新しい物に出会うワクワク感がありません。

 制御パステストの場合、何重にもループがネストしたプログラムのテスト項目を手作業で、「設計」「作成」「実行」「計測」する必要があります。筆者は、かつて、4重ネストが3つもあるプログラムをテストしたことがありますが、網羅率をカウントするだけでも一苦労でした。読者のみなさんは、それ以上に複雑なプログラムをテストしていると思います。

 上記のように、苦しく面倒な作業を確実に実行するには、ツールの活用が効果的、というより、不可欠です。特に、制御パステストでは、網羅度を計測したり、未実施箇所を特定する場合、ツールにかければ簡単に分かります。ツールの効果は絶大ですが、筆者のまわりでツールを有効に使っているエンジニアや学生は非常に少なく、知識として知ってはいても、現実にはあまり使用していないようです[参考文献 1]。今回は、具体的にカバレッジ測定ツールを用い、制御パステスト(特に、単体テスト)の実施方法について解説します。

3.網羅ツール「Gcov」について

 上記で説明した通り、制御パステストは非常に退屈ですし面倒です。作業量や複雑度を効果的に減らすのがツールです。パス網羅のフリーソフトウェアはいくつかあり、無料でも「カバレッジ計測」や「未達箇所の特定」ぐらいはキチンとできますので、ぜひ使ってみてください(*2)。

 今回は、Gcovというフリーソフトウェアのツール用いて単体テストを実施します。Gcovとは、GCC(GNU Compiler Collection)に含まれているカバレッジ測定ツールです(*3)。本記事ではCygwin(Windows上で動くUNIXライクな環境)を使用し、GCCのバージョンは5.3.0です。GCCの導入方法は、他の文献に譲りますが、もう既に導入済みの方が多いことでしょう。今回は「カバレッジ計測(C0)」と「未達箇所の特定」を取り上げることとします。

*2:ソフトウェア開発の会社によっては、信頼性の観点から無料ツールは敬遠する傾向にあります。ですが、開発効率を上げるためぜひ上層部に働きかけて使ってみてください。

*3:通販の商品と同じで、1回使用しただけで使わなくなるケースが頻繁にあります。恐らく、プロジェクトによってプログラム言語やOSの動作環境が異なるためでしょう。市販のツールは1ライセンスでも非常に高価です。よって、導入の際は、長期的に使用できそうかチーム内で検討すると良いでしょう。今後、この話題にも触れます。

Copyright © ITmedia, Inc. All Rights Reserved.