連載
猫でも使えるソフトウェアのテスト網羅(3):無料ツールで単体テストを楽に実行しよう:山浦恒央の“くみこみ”な話(86)(1/4 ページ)
組み込み開発の大規模化により、プログラムテストの重要性が高まっています。パス網羅をベースにする単体テストは困難な作業ではありませんが、ツールを導入することで効率化できます。今回はGcovを用いたテスト手法を紹介します。
1.はじめに
ソフトウェアにおけるブラックボックス・テストの王様が「同値分割」と「境界値分析」なら、ホワイトボックス・テストの帝王が「パス網羅」です。
パス網羅は、実行しうるパスの何パーセントをテストで網羅したかが、キチンとした数字で計算できるので客観性がありますし、「一度もテストしていないスイッチがある自動車は、怖くて運転したくないし、市場にリリースできないでしょ?」と前置きして、C0パス網羅100%を求めるクライアントも少なくありません(*1)。
組み込み開発の大規模化により、単体テストの重要性が高まっています。システム全体を組み上げてからC0網羅を100%実施するには、多大な時間と労力が必要ですが、単体テストレベルでの(モジュール単位での)C0100%網羅はそれほど難しくありません。
ただし、パス網羅自体のアイデアは非常にシンプルですが、単体テストであっても、パス網羅ツールを使わないと、網羅の抜けや、二重カウントが発生し、面倒なことになります。今回は、単体テストで実際にパス網羅ツールを使い(しかも、無料ソフトウェア)、「パス網羅」の食わず嫌いを直していただければ幸いです。
*1:私は、この「自動車のスイッチ」のアナロジーには少し否定的です。自動車の場合、運転手はほとんどのスイッチを使うと思いますが、ソフトウェアでは、ソースコードの半分が「エラーケース」「異常時の処理」「特殊ケース」であり、数年間の稼働期間中、1回も通らないソースコードが少なくないと思っています。そして高信頼性が要求されるソフトウェアほど、この傾向は顕著になると考えています。
FA(フライトアテンダント。「スチュワーデス」は古語になりました)の訓練は、エンジン停止、山や海への不時着など、過酷な異常事態を想定して実施しますが、実際に事故に遭遇するFAはほとんどおらず、飛行中の仕事は乗客へのサービスがほとんどという状況に似ています。
ただし、ソフトウェアのテストで、「FAの訓練」をアナロジーにすると、「重大事故だけど、50年に1回しか起きない事象だったら手を抜ける」と考える不届き者が少なからず湧いて出てきます。「高信頼性が要求されるソフトウェアほど、手抜きが発生する(あるいは、手を抜くつもりはなくても、テストが難しいため、実質的にテストが未実施になる場合がある)」という「高信頼ソフトウェアのジレンマ」が発生します。というわけで、「FAの訓練」のアナロジーが採用されることは(まず)ないでしょう。
関連記事
- 猫でも使えるソフトウェアのテスト網羅(2):パス網羅の種類と内包する問題点
趣味ならとにかく、ビジネスとしてのプログラミングに「網羅的なテスト」は欠かせません。網羅的なテストの代表的な手法である「制御パス・テスト」の手法について、解説していきます。 - 猫でも使えるソフトウェアのテスト網羅(1):基本のC0パス・カバレッジ
ソフトウェアのバグが全て取れたか?は開発における最大の関心事でしょう。網羅的テストはもちろんですが、その前に単体テストが必要です。代表的な手法である「制御パス・テスト」の基礎を紹介していきます。 - 統計の食わず嫌いを直そう(その11)、5分で残存バグ数を予測する方法
「回帰分析」は統計分析の有力な手法であり、Excelさえあれば5分で統計的に根拠のある数字を出せます。今回はExcelのツールを使って簡単に残存バグ数を予測する方法を解説します。 - 統計の食わず嫌いを直そう(その10)、ワインを飲まずに品質を予測する方法
統計アレルギーの解消には、身近な分野で考えてみることも大切です。今回は「ワインを飲まずに、ワインの品質を予測する方法」を例に統計に触れてみましょう。 - 統計の食わず嫌いを直そう(その9)、昼休みにタダで統計分析をする方法
「統計分析」と聞くと面倒な感じですが、何を証明するか明確ならExcelで簡単にこなせます。Excelさえあれば追加費用はかからず、しかもランチタイムに終わるほどカンタンなのです。
Copyright © ITmedia, Inc. All Rights Reserved.