猫でも使えるソフトウェアのテスト網羅(2):パス網羅の種類と内包する問題点:山浦恒央の“くみこみ”な話(85)(3/4 ページ)
趣味ならとにかく、ビジネスとしてのプログラミングに「網羅的なテスト」は欠かせません。網羅的なテストの代表的な手法である「制御パス・テスト」の手法について、解説していきます。
4. パス網羅の問題点
パス・カバレッジはきちんと網羅しようとすると超級面倒で、時間とコストが必要となります。しかも、以下のような大きな問題があります。
- (1) 膨大なテスト結果が出力されるのでデータの整理が面倒
- (2) C2を100%網羅しても、バグゼロではない
4.1 データの整理が面倒
最も簡単なC0網羅でも(*4)実行するパスは非常に多く、出力されるデータの整理が大変です。パス・カバレッジをする時は、必ず、ツールを使いましょう。パス網羅ツールを使わず、紙に印刷したソースコードをラインマーカーで塗るのは石器時代のテストで、C0の場合はまだしも、C1の場合、パスが全部で何本あるかを手で数えるのは非現実的です。
携わるプロジェクトで、手作業でパス網羅を実施しているプログラマーから、「C0を100%網羅しました」と報告を受けても、うのみにしてはなりません。私なら信じません。必ず、ツールを使いましょう。
4.2 「C2 100%網羅」でもバグゼロではない
パス網羅の中で、最も面倒なC2を100%網羅しても、バグ0にはなりません。例えば、「機能漏れのバグ(*5)」は、C2網羅100%でも検出できません。
プログラマー時代の私の大先輩の2つの口癖が、「プログラムが走らないと、プログラマーが走りまわる」「プログラムは、期待した通りではなく、作った通りに動く」でした。後者が「C2 100%網羅はバグゼロではない」理由を説明しています。
C2が網羅するのは「作った通り」の部分で、「作った通り」を100%網羅しても、「期待した通り」のテストにはなりません。実際のテストは、「期待した通り」に動くかをチェックしなければならないのです。「機能が存在しない」ということは「ソースコード上に存在しない」ので、C2網羅が100%でも、巨大なバグは手つかずで残っています。
機能の漏れを検出するには、ソースコードではなく「機能のC0、C1、C2カバレッジ」を100%網羅しなければなりません。このためには、要求仕様書を1行ずつチェックし、機能を全て網羅していることを確認し、ラインマーカーで塗りつぶす地道な作業が必要になります。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 猫でも使えるソフトウェアのテスト網羅(1):基本のC0パス・カバレッジ
ソフトウェアのバグが全て取れたか?は開発における最大の関心事でしょう。網羅的テストはもちろんですが、その前に単体テストが必要です。代表的な手法である「制御パス・テスト」の基礎を紹介していきます。 - 統計の食わず嫌いを直そう(その11)、5分で残存バグ数を予測する方法
「回帰分析」は統計分析の有力な手法であり、Excelさえあれば5分で統計的に根拠のある数字を出せます。今回はExcelのツールを使って簡単に残存バグ数を予測する方法を解説します。 - 統計の食わず嫌いを直そう(その10)、ワインを飲まずに品質を予測する方法
統計アレルギーの解消には、身近な分野で考えてみることも大切です。今回は「ワインを飲まずに、ワインの品質を予測する方法」を例に統計に触れてみましょう。 - 統計の食わず嫌いを直そう(その9)、昼休みにタダで統計分析をする方法
「統計分析」と聞くと面倒な感じですが、何を証明するか明確ならExcelで簡単にこなせます。Excelさえあれば追加費用はかからず、しかもランチタイムに終わるほどカンタンなのです。 - 統計の食わず嫌いを直そう(その8)、統計的に「王様の耳はロバの耳」と言うために
「王様の耳はロバの耳」と統計的に判定するには、どうすればいいのでしょうか?ロバの耳かも?という仮説を“検定”するための基本的な考え方を学びます。