猫でも使えるソフトウェアのテスト網羅(4):C1カバレッジの弱点とエンジニアの信念:山浦恒央の“くみこみ”な話(87)(2/4 ページ)
ソフトウェアにおけるホワイトボックス・テストの代表格がパス網羅です。パス網羅にもいろいろありますが、条件文の結果が「真」「偽」になる両方をテストする「C1」が広く利用されます。今回はC1パス・カバレッジの長所と短所を確認します。
2. C1カバレッジ
C1カバレッジの前に、C0カバレッジの問題点を振り返ります。C0はプログラムの各命令文(例えば「a = a + 1」)だけに着目したものです。そのため、分岐を考慮せず、テストに漏れが発生します(*2)。
C1カバレッジは、C0の欠点である「分岐の網羅不足」に対策したテスト手法で、if文内の「真」「偽」両方を実行します。次のフロー(図.1)から考えましょう。
図.1は、2つの条件文 A Bと2つの命令文(1)(2)を持った制御フローです。このフローからC1カバレッジ100%を満たすテスト項目を作成する場合、各条件文を「YES」「NO」に分岐する必要があります。例えば、次が考えられます(表.1)。
表.1 制御フローに対するテスト項目例(C1:100%) | ||
---|---|---|
テスト項目No | 条件文A | 条件文B |
1 | YES | YES |
2 | NO | NO |
表.1はテスト項目例を表しています。テスト項目No.1では、条件文 A Bがどちらも「YES」のパス、No.2では、どちらも「NO」のパスを通るように作成しました。ちなみにパスを通りさえすれば、通る方向は関係ありません。つまり、1個目で条件文A:「YES」、条件文B:「NO」に、2個目で条件文A:「No」、条件文B:「YES」のように作成しても構いません。通過したパスを図.1上に重ねて記述すると、図.2になります。
図.2は、表.1のテスト項目の実行パスを示したものです。2つの条件文の「真」「偽」が実行されていることが確認でき、C1カバレッジ100%と言えます(*3)。
C1カバレッジの利点は、テスト量が少なく、具体的な数字で表現でき、説得力があることです。次節で詳しく説明します。
関連記事
- 猫でも使えるソフトウェアのテスト網羅(3):無料ツールで単体テストを楽に実行しよう
組み込み開発の大規模化により、プログラムテストの重要性が高まっています。パス網羅をベースにする単体テストは困難な作業ではありませんが、ツールを導入することで効率化できます。今回はGcovを用いたテスト手法を紹介します。 - 猫でも使えるソフトウェアのテスト網羅(2):パス網羅の種類と内包する問題点
趣味ならとにかく、ビジネスとしてのプログラミングに「網羅的なテスト」は欠かせません。網羅的なテストの代表的な手法である「制御パス・テスト」の手法について、解説していきます。 - 猫でも使えるソフトウェアのテスト網羅(1):基本のC0パス・カバレッジ
ソフトウェアのバグが全て取れたか?は開発における最大の関心事でしょう。網羅的テストはもちろんですが、その前に単体テストが必要です。代表的な手法である「制御パス・テスト」の基礎を紹介していきます。 - 統計の食わず嫌いを直そう(その11)、5分で残存バグ数を予測する方法
「回帰分析」は統計分析の有力な手法であり、Excelさえあれば5分で統計的に根拠のある数字を出せます。今回はExcelのツールを使って簡単に残存バグ数を予測する方法を解説します。 - 統計の食わず嫌いを直そう(その10)、ワインを飲まずに品質を予測する方法
統計アレルギーの解消には、身近な分野で考えてみることも大切です。今回は「ワインを飲まずに、ワインの品質を予測する方法」を例に統計に触れてみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.