ソフトウェア開発エンジニアにとって、コーディングは親しい友人とのパーティーのように楽しく、テストは翌朝に待ち受けるパーティーの後片付けのように、気の進まない苦しい作業です。これは、テストはコーディングに比べ作業量や複雑度が格段に上がるためです。また、テストは来た道を振りかえる地味な作業であるため、コーディングのように新しい物に出会うワクワク感がありません。
制御パステストの場合、何重にもループがネストしたプログラムのテスト項目を手作業で、「設計」「作成」「実行」「計測」する必要があります。筆者は、かつて、4重ネストが3つもあるプログラムをテストしたことがありますが、網羅率をカウントするだけでも一苦労でした。読者のみなさんは、それ以上に複雑なプログラムをテストしていると思います。
上記のように、苦しく面倒な作業を確実に実行するには、ツールの活用が効果的、というより、不可欠です。特に、制御パステストでは、網羅度を計測したり、未実施箇所を特定する場合、ツールにかければ簡単に分かります。ツールの効果は絶大ですが、筆者のまわりでツールを有効に使っているエンジニアや学生は非常に少なく、知識として知ってはいても、現実にはあまり使用していないようです[参考文献 1]。今回は、具体的にカバレッジ測定ツールを用い、制御パステスト(特に、単体テスト)の実施方法について解説します。
上記で説明した通り、制御パステストは非常に退屈ですし面倒です。作業量や複雑度を効果的に減らすのがツールです。パス網羅のフリーソフトウェアはいくつかあり、無料でも「カバレッジ計測」や「未達箇所の特定」ぐらいはキチンとできますので、ぜひ使ってみてください(*2)。
今回は、Gcovというフリーソフトウェアのツール用いて単体テストを実施します。Gcovとは、GCC(GNU Compiler Collection)に含まれているカバレッジ測定ツールです(*3)。本記事ではCygwin(Windows上で動くUNIXライクな環境)を使用し、GCCのバージョンは5.3.0です。GCCの導入方法は、他の文献に譲りますが、もう既に導入済みの方が多いことでしょう。今回は「カバレッジ計測(C0)」と「未達箇所の特定」を取り上げることとします。
Copyright © ITmedia, Inc. All Rights Reserved.