テストの本質を探る ――30年の歴史を持つ 「ソフトウェア工学」の知恵に学ぶ
2)テストの対象を絞る
ソフトウェアには,いくつかの「メトリックス」と呼ばれる指標があります.もっとも有名なものは,McCabeの循環複雑度というものです.循環複雑度Cは,次式によって求めることができます.
C=e-n+2p
ここで,eは制御フローをグラフで表現したときのエッジ(枝)の数,nはノード(節点)の数です.pはグラフの数で,通常は1と考えます.図4に示すグラフでは,C=6-6+2×1=2となります.なにか難しい式のようですが,この式の値は,グラフによって区切られた空間の数に等しくなります.つまり,グラフを書いてしまえば,多くの場合,簡単に数えることができます.複雑度Cが大きい場合,その関数は誤る確率が高くなります.McCabeはCの目安として10という数字を挙げています.したがって,なんらかの代替手段があり,すべてのコードをテストできない場合は,この指標を用いてテストの対象を絞ることを考えることができます.
3)テストの支援ツールを利用する
発見できる不ぐあいの数は,テスト担当者の労力に依存するということをお話ししました.テストをいかに効率良く行うかということは,テスト担当者の作業プロセスを自動化ツールがいかに支援するかということと密接に関係しています.
すでに,テストを支援するためのいくつかの自動化ツールが市販されています注4.例えば,ユーザの操作を繰り返し実行することで,負荷テストや回帰テストを実施するツール,パス・テストなどで実際に通過した(累積の)パスを記録して,一度も通っていないパス(コード)を示してくれるツール,プログラムの複雑さを計測して,重点的に調べるべきコードを知らせてくれるツールなどです.
注4;テストに関するツールとしては,ここに挙げた不ぐあい追跡ツールをはじめとして,いくつかの種類がある.例えば,以下のようなツール・カテゴリがある.テスト計画用ツール,テスト進ちょくモニタリング用ツール,構成管理用ツール(どのバージョンでテストしていて,それはどのモジュールの組み合わせなのかを管理する),画面キャプチャ/プレイバック用ツール,負荷・破壊テスト用ツール,カバレッジ計測ツール,シミュレータ,テスト・データ生成ツール(テスト・ケースと入力ベクトルを自動生成するツール),テスト・ドライバ自動生成ツール(単体テストで必要なドライバ/スタブを生成するツール).