猫でも使えるソフトウェアのテスト網羅(3):無料ツールで単体テストを楽に実行しよう:山浦恒央の“くみこみ”な話(86)(4/4 ページ)
組み込み開発の大規模化により、プログラムテストの重要性が高まっています。パス網羅をベースにする単体テストは困難な作業ではありませんが、ツールを導入することで効率化できます。今回はGcovを用いたテスト手法を紹介します。
3.2 Gcov使用例
では、Gcovを使用してC0カバレッジを計測し、未実行箇所を探してみましょう。使い方は、以下のコマンドを入力するだけです。なお、三角形判定プログラムを「test.c」として実行しています。
gcc -fprofile-arcs -ftest-coverage test.c ./a.exe gcov test.c
上記を実行すると、図2の結果となります。
図.2はGcovの実行結果を記しました。今回のコマンドは2つを実行しています。1つは「実行された行」を出力することで、ソースコードを実行した割合を出力します。このプログラムは、全17行のうち88%を実行したことが分かります。2つ目は、「test.c.gcov」と呼ぶ実行箇所を表したファイルを出力することです。詳しくは、次節に示します。
3.3 「実行された行」について
「実行された行」はC0カバレッジに相当します。つまり、次のように計測します。
実行された行(のパーセンテージ)= 実行した行数 / 全ての行数
実行しているtriangle_handler関数は全部で17行あり、そのうち実行したのは15行です。よって、実行された行 = 15 / 17から、88%となります。100%にしたい場合は3辺の入力のいずれかを0以下にして実行する必要があります。例えば、「triangle_handler(-1,2,3);」です。
3.4 実行箇所の把握について
実行したソースコードの箇所は、3.2で作成した「.c.gcovファイル」で分かります。筆者の場合は、test.c.gcovというファイルが生成されています。実際に開くと、図.4のようになります。
図.3 見ると「####」の表示がある箇所が分かるでしょう。これは未実行箇所を表します。今回のプログラムでは3辺のいずれかが0以下になるケースを実行していないため、未実行となっています。この条件を満たすケースを作成すれば、「####」が消えます。
このように、面倒な部分は可能な限りツールに任せると、作業が非常に簡単で確実になります。
4, 終わりに
制御パステストは、長くてつらい地獄の作業でしょう。そんな時は、ツールを活用しましょう。つらいと思う作業には、必ず、先人がツールを作ってくれています。
今回はGcovというgccのオプション機能を用いた制御パステストの手順を紹介しました。Gcovにはいろいろなオプションがありますので、ヘルプコマンドで調べてみると効果的に使えます。また、制御パステストを効果的に進めたい場合、市販の(有料の)ツールを当たってみると、より便利にテストが実施できます。投資に見合う効果は、必ずあります。
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
関連記事
- 猫でも使えるソフトウェアのテスト網羅(2):パス網羅の種類と内包する問題点
趣味ならとにかく、ビジネスとしてのプログラミングに「網羅的なテスト」は欠かせません。網羅的なテストの代表的な手法である「制御パス・テスト」の手法について、解説していきます。 - 猫でも使えるソフトウェアのテスト網羅(1):基本のC0パス・カバレッジ
ソフトウェアのバグが全て取れたか?は開発における最大の関心事でしょう。網羅的テストはもちろんですが、その前に単体テストが必要です。代表的な手法である「制御パス・テスト」の基礎を紹介していきます。 - 統計の食わず嫌いを直そう(その11)、5分で残存バグ数を予測する方法
「回帰分析」は統計分析の有力な手法であり、Excelさえあれば5分で統計的に根拠のある数字を出せます。今回はExcelのツールを使って簡単に残存バグ数を予測する方法を解説します。 - 統計の食わず嫌いを直そう(その10)、ワインを飲まずに品質を予測する方法
統計アレルギーの解消には、身近な分野で考えてみることも大切です。今回は「ワインを飲まずに、ワインの品質を予測する方法」を例に統計に触れてみましょう。 - 統計の食わず嫌いを直そう(その9)、昼休みにタダで統計分析をする方法
「統計分析」と聞くと面倒な感じですが、何を証明するか明確ならExcelで簡単にこなせます。Excelさえあれば追加費用はかからず、しかもランチタイムに終わるほどカンタンなのです。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.