分岐網羅とは

ぶんきもうら

プログラムのすべての判定(if 文など)で、真と偽の両方の分岐を少なくとも1回ずつ実行することを求めるホワイトボックステストの網羅の基準。判定条件網羅、C1とも呼ぶ。すべての命令を1回以上実行する命令網羅(C0)より強い基準である。

「分岐網羅」は、1分野の2問の練習問題に出てきます(ソフトウェア開発とプロジェクト管理など)。

この用語の分野: ソフトウェア開発とプロジェクト管理

命令網羅との違い

命令網羅(C0)は、すべての命令を少なくとも1回実行すれば満たされます。else のない if (a) { S1; } では、a が真のテストケースを1つ実行すれば S1 を通るので命令網羅は満たしますが、a が偽で何もせずに次へ進む分岐は実行されません。分岐網羅(C1)はこの偽の側も求めるので、a が偽のときに必要な処理が抜けている誤りなどを見つけやすくなります。分岐網羅を満たせば、命令網羅も満たされます。

条件網羅や複合条件との関係

判定が「A かつ B」のように複数の条件でできている場合、個々の条件がそれぞれ真と偽をとることを求めるのが条件網羅です。(A = 真、B = 偽)と(A = 偽、B = 真)の2つのテストケースでは、条件網羅は満たしますが、判定はどちらも偽なので分岐網羅は満たしません。そのため、判定と条件の両方を満たす判定条件/条件網羅や、各条件が判定の結果に独立に影響することを確かめるMC/DC(改良条件判定網羅)などが使われます。MC/DCは航空機のソフトウェアの規格DO-178Cで最も高い安全水準に求められ、自動車の機能安全規格ISO 26262でもASIL Dで強く推奨されています。

網羅率の数値の読み方

網羅率は、実行された分岐の数 ÷ すべての分岐の数 で表し、コンパイラやテストツールの機能で測れます。網羅率が100%でも、仕様にあるのに実装されていない処理の漏れや、値によって結果が変わる誤りは見つかりません。網羅率は「テストが通っていない部分」を見つける道具として使い、ブラックボックステストと組み合わせます。ハードウェアの検証でも、RTLのコードカバレッジとして同じ考え方が使われます。

分岐網羅の練習問題に挑戦

a、b、c の真偽は互いに独立に決められるものとする。次の処理「if (a) { S1; } if (b) { S2; } if (c) { S3; }」で、分岐網羅(すべての判定の真と偽を少なくとも1回ずつ実行する)を満たすのに必要な最小のテストケースの数はどれか。

  1. A1
  2. B2
  3. C8
答えと解説を見る

正解:B. 2

3つの判定のそれぞれで、真と偽の両方を通す必要があります。(a、b、c がすべて真)と(すべて偽)の2つのテストケースで、各判定の真と偽が1回ずつ実行されるので、最小は2つです。1つ(すべて真)でも S1〜S3 のすべての命令は実行できるので命令網羅は満たせますが、偽の側の分岐(何もせずに次へ進む経路)が実行されません。8は真偽の組合せ 2³ = 8通りをすべて試す場合の数です。

よくある質問

C0とC1は何のことですか?

網羅の基準を表す略称で、C0は命令網羅(すべての命令を1回以上実行する)、C1は分岐網羅(すべての分岐の真と偽を1回以上実行する)を指します。C1を満たせばC0も満たします。

分岐網羅100%を目標にすべきですか?

安全に関わるソフトウェアでは、規格や社内の基準で分岐網羅やMC/DCの目標が決められることがあります。それ以外では、100%にこだわるより、通っていない分岐が本当に不要か、テストが足りないのかを確かめることが大切です。異常時にしか通らない処理は、故障の注入などで試す必要があります。

解説の中の「分岐網羅」

「分岐網羅」が出てくる問題(2問)

  1. a、b、c の真偽は互いに独立に決められるものとする。次の処理「if (a) { S1; } if (b) { S2; } if (c) { S3; }」で、分岐網羅(すべての判定の真と偽を少なくとも1回ずつ実行する)を満たすのに必要な最小のテストケースの数はどれか。
  2. 判定「A かつ B」(A と B は互いに独立に真偽を決められる条件)に対して、テストケース(A = 真、B = 偽)と(A = 偽、B = 真)の2つを実行した。網羅の基準について、正しいものはどれか。

ソフトウェア開発とプロジェクト管理の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

アーンドバリューマネジメント(EVM) アジャイル開発 ウォーターフォールモデル SLA(サービスレベル合意) 境界値分析 クリティカルパス法(CPM) CI/CD(継続的インテグレーション・継続的デリバリー) スクラム WBS(作業分解構成図) テスト駆動開発(TDD)

用語集の一覧へ