猫でも使えるソフトウェアのテスト網羅(1):基本のC0パス・カバレッジ:山浦恒央の“くみこみ”な話(84)(2/3 ページ)
ソフトウェアのバグが全て取れたか?は開発における最大の関心事でしょう。網羅的テストはもちろんですが、その前に単体テストが必要です。代表的な手法である「制御パス・テスト」の基礎を紹介していきます。
3. いろいろなパス・カバレッジ
上記では、分岐に着目したパス・カバレッジについて説明しました。この章では、各パス・カバレッジの詳細を説明します。表.1に代表的なパス・カバレッジの概要と難易度を示します。
表.1 パス・カバレッジの詳細 | ||
---|---|---|
パス・カバレッジ | 詳細 | 達成難度 |
C0(命令網羅) | 全命令語を最低一回はテストする | 容易 |
C1(分岐網羅) | 条件文の結果が「真」、「偽」になる両方をテストする | そこそこ |
C2(複合条件網羅) | 条件文の「真」と「偽」の組み合わせをテストする | 非常に困難 |
3.1 C0パス・カバレッジ
C0(シーゼロと読みます)パス・カバレッジは命令網羅とも呼び、プログラムの「命令文」に着目し、各命令語を最低1回は実行するパス網羅です。命令文とは「a = a + 1;」や「if (a == 1)」などが当たります。
C0パス・カバレッジには、いろいろな誤解や落とし穴があります。C0パス・カバレッジの基本的な考え方としてよく言われるのは、「自動車の製造で1回もテストしたことがないスイッチがある場合、そんな製品は怖くてマーケットに出せない。ソフトウェアも同様で、1度も実行していないソースコードがあるプログラムは安心して出荷できない」です。
こう言われると、「なるほど、C0パス・カバレージを100%網羅することは必須だ」と思うのですが、自動車のスイッチとソフトウェア製品は同じではありません。自動車の運転席にあるスイッチ類は(多分)いつか必ず使いますので、全スイッチのテストを実施せねばなりません。一方、ソフトウェアのソースコードでは、10年間連続稼働させても、1回も実行しないソースコードはいくらでもあります。
例えば「原子力発電所制御プログラムで、炉心溶融が発生した場合、ゲート03を閉鎖し、バルブV006を開けて……」という異常処理のソースコードは、まず、「プログラムの一生」で実行されることはありません。私のざっくりとした感覚では、全ソースコードの半分以上は何らかの異常処理用ではないかと思います。
高い信頼性が要求される機器のソフトウェアでは、必然的に異常時の処理が多く複雑になります。ソフトウェアのソースコードをお料理のレシピと見なし、「カレーのレシピ」には「牛肉を200g、人参1本、玉ねぎ1個、ジャガイモ3個を用意する」と書いてあったとします。冷蔵庫に牛肉があればいいのですが、「なければ、近くのスーパーマーケットへ買いに行く」とソースコードに書いてあるとします。
それで、いつものスーパーへ行ったところ、水曜日で定休日だった。隣町のスーパーへ行こうと電車に乗ったが列車事故で途中駅に止まったため、バスに乗り継いで隣町のスーパーに行ったところ、牛肉が売り切れていた……。
テキトーに動けばよい「趣味のプログラミング」ならば、冷蔵庫に牛肉がない時点で、「カレーを作らない」と終了してもいいのですが、一般販売用のソフトウェアではいろいろな異常事態に対応し、なんとか救おうとします(特に、外部デバイスに対する入出力異常系)。こんな複雑怪奇な異常時の処理を全て実行してテストするには、非常に大きな工数と時間がかかります。
関連記事
- 統計の食わず嫌いを直そう(その11)、5分で残存バグ数を予測する方法
「回帰分析」は統計分析の有力な手法であり、Excelさえあれば5分で統計的に根拠のある数字を出せます。今回はExcelのツールを使って簡単に残存バグ数を予測する方法を解説します。 - 統計の食わず嫌いを直そう(その10)、ワインを飲まずに品質を予測する方法
統計アレルギーの解消には、身近な分野で考えてみることも大切です。今回は「ワインを飲まずに、ワインの品質を予測する方法」を例に統計に触れてみましょう。 - 統計の食わず嫌いを直そう(その9)、昼休みにタダで統計分析をする方法
「統計分析」と聞くと面倒な感じですが、何を証明するか明確ならExcelで簡単にこなせます。Excelさえあれば追加費用はかからず、しかもランチタイムに終わるほどカンタンなのです。 - 統計の食わず嫌いを直そう(その8)、統計的に「王様の耳はロバの耳」と言うために
「王様の耳はロバの耳」と統計的に判定するには、どうすればいいのでしょうか?ロバの耳かも?という仮説を“検定”するための基本的な考え方を学びます。 - 統計の食わず嫌いを直そう(その7)、「鎌倉時代の平均ワイン消費量」と「平均値の検定」
「効果がある」と言うためには比較が必要です。新旧開発プロセスの生産性や品質の平均値を比べるためには、「平均値の差の検定」が必要となります。
Copyright © ITmedia, Inc. All Rights Reserved.