猫でも使えるソフトウェアのテスト網羅(2):パス網羅の種類と内包する問題点:山浦恒央の“くみこみ”な話(85)(4/4 ページ)
趣味ならとにかく、ビジネスとしてのプログラミングに「網羅的なテスト」は欠かせません。網羅的なテストの代表的な手法である「制御パス・テスト」の手法について、解説していきます。
5. 現実的なパス網羅
パス網羅によるテストは、意外に、「労多くして、実が少ない」ことがお分かりいただけたと思います(網羅率は、80%まですぐに到達しますが、そこからなかなか進みません)。しかし、パス網羅は、強力なテスト手法ですし、達成度(網羅率)は数字でキチンと表現できるところも魅力です。
「パス網羅を実施したいけれど、その時間とコストがない」とか、「効果が期待できて現実的なパス網羅を実施したい」と考えているエンジニアの方々に使えそうな方法を列記します。
- (1) モジュール間の網羅をチェックする
- (2) 重要な機能に限定する
- (3) モジュールを限定する
- (4) エラー処理は1つと見なす
- (5) 机上での実行も「実行済み」と見なす
5.1 モジュール間の網羅をチェックする
パス網羅が面倒なのは、対象となる命令語やパスが細かくて非常に多いためです。モジュールのように、対象がもっと大きく簡易なものになれば、網羅は簡単になります。全てのモジュールが1回はコールされたか、コールのパスは全て通ったかをチェックするだけでも、多くのバグが見つかります。
5.2 重要な機能に限定する
プログラムの全ての命令語やパスを網羅しようとすると膨大な時間とコストがかかります。マキャベリズムで有名なニッコロ・マキャベリの有名な言葉、「分割して統治せよ(*6)」を応用し、重要な機能に限定してパス網羅を実施すれば、労力は一挙に減少します。あるいは、トリアージュのように、機能に「松」「竹」「梅」のように優先順位を付け、これに従って、パス網羅を実施することも考慮するといいでしょう。
5.3 モジュールを限定する
上記の「重要な機能に限定する」と同じ考え方は、モジュールに応用できます。重要なモジュール、いろいろな場所から呼び出される共通ルーティンに限定して、パス網羅を実施すると、意外に短時間で大きな効果が出ます。
5.4 エラー処理は1つと見なす
テストで一番面倒なのが、異常処理系の検証です。ソースコードの半分が異常系のような気がします。異常系処理の細かいところまで網羅しようとするとものすごく大変ですが、異常系の処理部分のソースコード群を1つのブラックボックスと見なすと、パス網羅を単純化できます。
5.5 机上での実行も「実行済み」と見なす
マシン上だけで実行してパスを網羅するのは大変です。実行のための条件をそろえるのが面倒な異常処理やタイミングに絡む処理は、机上で実行した分もカウントすることも考慮してはどうでしょう。
6. 終わりに
全ての分野のプロは、時間当たりの生産物を最大にしたいと思っています。プログラマーは、その最たるものでしょう。パス網羅は、キチンとテストを実施でき、定量的に進捗度を把握できますが、効率はそれほどよくありません。パス網羅の長所を享受しつつ、うまく応用していただければと思います。
次回は、パス網羅では避けて通れないツールの使い方を解説します。
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 猫でも使えるソフトウェアのテスト網羅(1):基本のC0パス・カバレッジ
ソフトウェアのバグが全て取れたか?は開発における最大の関心事でしょう。網羅的テストはもちろんですが、その前に単体テストが必要です。代表的な手法である「制御パス・テスト」の基礎を紹介していきます。 - 統計の食わず嫌いを直そう(その11)、5分で残存バグ数を予測する方法
「回帰分析」は統計分析の有力な手法であり、Excelさえあれば5分で統計的に根拠のある数字を出せます。今回はExcelのツールを使って簡単に残存バグ数を予測する方法を解説します。 - 統計の食わず嫌いを直そう(その10)、ワインを飲まずに品質を予測する方法
統計アレルギーの解消には、身近な分野で考えてみることも大切です。今回は「ワインを飲まずに、ワインの品質を予測する方法」を例に統計に触れてみましょう。 - 統計の食わず嫌いを直そう(その9)、昼休みにタダで統計分析をする方法
「統計分析」と聞くと面倒な感じですが、何を証明するか明確ならExcelで簡単にこなせます。Excelさえあれば追加費用はかからず、しかもランチタイムに終わるほどカンタンなのです。 - 統計の食わず嫌いを直そう(その8)、統計的に「王様の耳はロバの耳」と言うために
「王様の耳はロバの耳」と統計的に判定するには、どうすればいいのでしょうか?ロバの耳かも?という仮説を“検定”するための基本的な考え方を学びます。