猫でも使えるソフトウェアのテスト網羅(3):無料ツールで単体テストを楽に実行しよう:山浦恒央の“くみこみ”な話(86)(2/4 ページ)
組み込み開発の大規模化により、プログラムテストの重要性が高まっています。パス網羅をベースにする単体テストは困難な作業ではありませんが、ツールを導入することで効率化できます。今回はGcovを用いたテスト手法を紹介します。
2.パス網羅の憂鬱
ソフトウェア開発エンジニアにとって、コーディングは親しい友人とのパーティーのように楽しく、テストは翌朝に待ち受けるパーティーの後片付けのように、気の進まない苦しい作業です。これは、テストはコーディングに比べ作業量や複雑度が格段に上がるためです。また、テストは来た道を振りかえる地味な作業であるため、コーディングのように新しい物に出会うワクワク感がありません。
制御パステストの場合、何重にもループがネストしたプログラムのテスト項目を手作業で、「設計」「作成」「実行」「計測」する必要があります。筆者は、かつて、4重ネストが3つもあるプログラムをテストしたことがありますが、網羅率をカウントするだけでも一苦労でした。読者のみなさんは、それ以上に複雑なプログラムをテストしていると思います。
上記のように、苦しく面倒な作業を確実に実行するには、ツールの活用が効果的、というより、不可欠です。特に、制御パステストでは、網羅度を計測したり、未実施箇所を特定する場合、ツールにかければ簡単に分かります。ツールの効果は絶大ですが、筆者のまわりでツールを有効に使っているエンジニアや学生は非常に少なく、知識として知ってはいても、現実にはあまり使用していないようです[参考文献 1]。今回は、具体的にカバレッジ測定ツールを用い、制御パステスト(特に、単体テスト)の実施方法について解説します。
3.網羅ツール「Gcov」について
上記で説明した通り、制御パステストは非常に退屈ですし面倒です。作業量や複雑度を効果的に減らすのがツールです。パス網羅のフリーソフトウェアはいくつかあり、無料でも「カバレッジ計測」や「未達箇所の特定」ぐらいはキチンとできますので、ぜひ使ってみてください(*2)。
今回は、Gcovというフリーソフトウェアのツール用いて単体テストを実施します。Gcovとは、GCC(GNU Compiler Collection)に含まれているカバレッジ測定ツールです(*3)。本記事ではCygwin(Windows上で動くUNIXライクな環境)を使用し、GCCのバージョンは5.3.0です。GCCの導入方法は、他の文献に譲りますが、もう既に導入済みの方が多いことでしょう。今回は「カバレッジ計測(C0)」と「未達箇所の特定」を取り上げることとします。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 猫でも使えるソフトウェアのテスト網羅(2):パス網羅の種類と内包する問題点
趣味ならとにかく、ビジネスとしてのプログラミングに「網羅的なテスト」は欠かせません。網羅的なテストの代表的な手法である「制御パス・テスト」の手法について、解説していきます。 - 猫でも使えるソフトウェアのテスト網羅(1):基本のC0パス・カバレッジ
ソフトウェアのバグが全て取れたか?は開発における最大の関心事でしょう。網羅的テストはもちろんですが、その前に単体テストが必要です。代表的な手法である「制御パス・テスト」の基礎を紹介していきます。 - 統計の食わず嫌いを直そう(その11)、5分で残存バグ数を予測する方法
「回帰分析」は統計分析の有力な手法であり、Excelさえあれば5分で統計的に根拠のある数字を出せます。今回はExcelのツールを使って簡単に残存バグ数を予測する方法を解説します。 - 統計の食わず嫌いを直そう(その10)、ワインを飲まずに品質を予測する方法
統計アレルギーの解消には、身近な分野で考えてみることも大切です。今回は「ワインを飲まずに、ワインの品質を予測する方法」を例に統計に触れてみましょう。 - 統計の食わず嫌いを直そう(その9)、昼休みにタダで統計分析をする方法
「統計分析」と聞くと面倒な感じですが、何を証明するか明確ならExcelで簡単にこなせます。Excelさえあれば追加費用はかからず、しかもランチタイムに終わるほどカンタンなのです。