ソフトウェア設計及び演習2016

モジュールの単体テスト

ある程度モジュールが出来上がってきたら,モジュールが提供する機能をテストすることが重要です.主な目的は,バグを検出して修正することです.モジュールを作成した本人が担当すべきテストであり,技法としてはホワイトボックス法などが使われます.

テストの意義

(書籍『経験ゼロでもできるプログラミング現場の単体テスト』より)

  • 中規模以上のシステム開発では,設計に時間がかかってテストに時間をかけられないこともある.
  • よって,致命的な障害が発生する可能性がある.
  • とはいえ,すべてのケースを想定してテストを実施するなどということは現実的ではないので,テストケースを絞る必要がある.
  • 各テストフェーズの礎となる 単体テストが重要 となる

後でまとめてテスト,はダメ

  • とにかく時間がかかる
  • 問題箇所を切り分けることが難しくなる
  • モチベーションが下がる
  • リスクの先送りになりかねない

プロジェクト終盤で行うテストは,再現→原因調査→修正→再テストと,余計に時間がかかるので,プロジェクト序盤から単体テストを実施するべき

テストの実際

準備するもの

テスト用メインプログラム

  • 提供する機能を使う
  • うまく機能するかを,プログラム,または人が判断する

テストすべきモジュール

下位モジュール

  • テスト済みの下位モジュール
  • あるいはその代わりとなる代替インタフェースモジュール

テストできること

  • 提供機能の不具合
  • インタフェースの自然さ

ホワイトボックス法とブラックボックス法

動作チェックのために必要な値を含めたデータのことを「テストデータ」と呼びます.このテストデータを,実際にプログラムをコーディングする「エンジニア側の視点」から作ることを「ホワイトボックス法」,モニュールやシステムを使う「ユーザ側の視点」から作ることを「ブラックボックス法」と呼びます.

ホワイトボックス法

プログラムの処理手順や処理内容といった内部構造を意識して,バグが発見できるようにテストデータを作り込みます.ソースプログラム中の文,分岐,条件などを網羅的に実行してバグを見つけます.

テスト 内容
ステートメントカバレッジ(命令網羅) ソースコードの全命令・文のうち,1回でも実行されたステートメントの割合
ブランチカバレッジ(分岐網羅) ソースコードの全分岐のうち,1回でも実行された分岐の割合
コンディションカバレッジ(条件網羅) ソースコードの分岐に設定されている1つ1つの条件が成立・不成立の両方が実行された割合

ブラックボックス法(参考)

プログラムの内部構造をあまり意識せず,「このデータを処理したら,結果としてAという値が返ってこなければならない」といった要件をクリアできるかどうか,を検証するようなテストデータを作るやり方をいいます.モジュールを統合した以降のテストに使われる技法です.

テスト 内容
同値分割法 プログラムが期待する「有効同値」及び「無効同値」を入力として結果を確認
境界値分割法 プログラムの「有効同値」と「無効同値」の境界となる値を入力して結果を確認


最終更新日:2016/07/08 14:47:30