テスト — 分解して見るか、ハンドルを回して見るか
車の検査には2通りあります——機械を分解して部品の動きを一つずつ確かめる方法と、ハンドルを回してちゃんと曲がるかを外から確かめる方法。中身を見るか、振る舞いを見るか。
ソフトウェアのテストもこの2軸です。さらに「部品→つながり→全体→お客さんの確認」という段階の順序が、もう1つの的になります。
ホワイトボックスとブラックボックスは何が違い、テストはどんな段階で進むのでしょうか。
中身を見るのがホワイト、振る舞いを見るのがブラックです
ホワイトボックステストはプログラムの内部構造を見て、どこまで実行し尽くしたかを網羅基準で測ります——C0(命令網羅)=すべての命令を1回以上実行、C1(分岐網羅)=すべての分岐の真偽を1回以上通過、C2(条件網羅)=判定を構成する個々の条件式の真偽をそれぞれ1回以上実行。番号が上がるほど基準が細かくなります。
ブラックボックステストは内部を見ずに入出力の振る舞いで確かめます——代表値で試す同値分割と、バグが潜みやすい境目を突く境界値分析(「100以下」なら100と101を試す)が2大技法です。
段階は範囲が広がる順——最後の受入はユーザーの仕事です
テストの段階は範囲の広がる順に4つ——単体テスト(UT)=部品単位(開発者が担当)→結合テスト(IT)=部品どうしのつながり→システムテスト(ST)=全体を本番同等の条件で→受入テスト(UAT)=発注したユーザー側が「頼んだものか」を確認。担当の主語が最後だけ変わるのがポイントです。
修正のたびに必要なのがリグレッションテスト(回帰テスト)——直した箇所の周りだけでなく、既存の機能が壊れていないかを再確認します。「直したら別の場所が壊れた」を防ぐ保険です。
C0/C1/C2の定義の入れ替えと、受入テストの担当が的です
定番の誤り肢は網羅基準の入れ替え——「C1はすべての命令を1回以上実行する基準である」(それはC0。C1は分岐の網羅)。C0=命令・C1=分岐・C2=条件の対応を崩さないでください。
技法の帰属も的——「境界値分析はホワイトボックステストの技法である」(誤り——内部を見ないブラックボックスの技法)。段階では「受入テストは開発者が実施する」(誤り——ユーザー側の仕事)が定番です。
顧問先がシステムを発注したら、受入テスト(UAT)は顧問先自身の仕事——ここをベンダー任せにすると「検収後に業務で使えないと発覚」という最悪の展開になります。診断士の助言は2つ——①検収前に実際の業務データと業務手順で試す、②「月末締め」「期初の処理」など境界のタイミングを必ず試す(境界値分析の実務版)。この2つだけで検収事故の大半は防げます。
冒頭の問いに答えます。ホワイトボックスは内部構造を網羅基準(C0命令・C1分岐・C2条件)で確かめ、ブラックボックスは入出力の振る舞いを同値分割・境界値分析で確かめます。段階は単体→結合→システム→受入の順に範囲が広がり、受入だけはユーザー側の仕事——修正後はリグレッションテストで既存機能を守ります。次は、作る前の値段の話——見積り3法へ。