分岐網羅とは
ぶんきもうら
プログラムのすべての判定(if 文など)で、真と偽の両方の分岐を少なくとも1回ずつ実行することを求めるホワイトボックステストの網羅の基準。判定条件網羅、C1とも呼ぶ。すべての命令を1回以上実行する命令網羅(C0)より強い基準である。
「分岐網羅」は、1分野の2問の練習問題に出てきます(ソフトウェア開発とプロジェクト管理など)。
この用語の分野: ソフトウェア開発とプロジェクト管理
ぶんきもうら
プログラムのすべての判定(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のコードカバレッジとして同じ考え方が使われます。
正解:B. 2
3つの判定のそれぞれで、真と偽の両方を通す必要があります。(a、b、c がすべて真)と(すべて偽)の2つのテストケースで、各判定の真と偽が1回ずつ実行されるので、最小は2つです。1つ(すべて真)でも S1〜S3 のすべての命令は実行できるので命令網羅は満たせますが、偽の側の分岐(何もせずに次へ進む経路)が実行されません。8は真偽の組合せ 2³ = 8通りをすべて試す場合の数です。
網羅の基準を表す略称で、C0は命令網羅(すべての命令を1回以上実行する)、C1は分岐網羅(すべての分岐の真と偽を1回以上実行する)を指します。C1を満たせばC0も満たします。
安全に関わるソフトウェアでは、規格や社内の基準で分岐網羅やMC/DCの目標が決められることがあります。それ以外では、100%にこだわるより、通っていない分岐が本当に不要か、テストが足りないのかを確かめることが大切です。異常時にしか通らない処理は、故障の注入などで試す必要があります。
しかし「A かつ B」はどちらのテストケースでも偽になり、判定が真になる分岐を一度も通らないので、分岐網羅は満たしません。
判定「A かつ B」(A と B は互いに独立に真偽を決められる条件)に対して、テストケース(A = 真、B = 偽)…Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。
アーンドバリューマネジメント(EVM) アジャイル開発 ウォーターフォールモデル SLA(サービスレベル合意) 境界値分析 クリティカルパス法(CPM) CI/CD(継続的インテグレーション・継続的デリバリー) スクラム WBS(作業分解構成図) テスト駆動開発(TDD)