WRブログ

ソフトウェアの構造・アーキテクチャをテストする「構造テスト」

ソフトウェア開発でおこなわれるテスト。そのテストで重要なのは、テスト対象やテストの目的に合わせて、テストの種類や技法を変えることです。
ここでは、テストの主な4つのタイプのひとつ「構造テスト」について解説します。

■テストタイプは4つに分けられる
テストの種類は、テストする目的に合わせて、以下の4つのタイプに分けられます。

●機能テスト:
仕様どおりの機能が実装されているかを検証します。
この場合の機能とは、テスト対象が「何をするか」であり「どのように動作するか」ではありません。
あまりシステムの中身は問題ではないため、主にブラックボックステストが用いられます。

●非機能テスト:
機能テストの逆で、テスト対象が持つ特性を検証します。
機能性、信頼性、使用性、効率性、保守性、移植性に分けられた「ソフトウェア品質特性」を参考に検証をおこないます。

●構造テスト:
ソフトウェアの内部構造を検証します。今回ご紹介するテストタイプになります。

●変更部分のテスト:
さまざまなテストで見つかった欠陥を、修正した後におこなう検証です。
このテストタイプでは、欠陥部分が正しく修正されているかを検証する「確認テスト」と、欠陥の修正にあたり新たな欠陥を作り込んでいないか、他の部分への影響はないかを検証する「回帰テスト」があります。

ここからは「構造テスト」について、さらに詳しく解説していきます。
■構造の表現方法とテスト
ソフトウェアの構造を可視化したものには、
プログラムを実行したときに通る可能性のある全経路をグラフ化した「制御フローグラフ」、
プログラムの流れを可読化できるようにした「コールフロー図」、
出力される画面の流れを示した「画面遷移図」などがあります。

構造テストは、仕様ベースでの構造テストを実施したのち、その機能テストで全体の構造のカバレッジを計測し、構造に対して網羅性を上げるために実施すると無駄がなく、テストの効率が良くなります。

■構造テストの対象範囲
構造テストは、ソフトウェアの内部構造に着目し、それを網羅するようにおこなうテストなので、ソフトウェア開発の初期段階でおこなわれる単体テストや、結合テストで実施されると思われがちですが、
システム全体を対象に行われるシステムテストや、最終段階の受け入れテストでも実施されます。

単体テストや結合テストでは、一般的にテストツールを使ってプログラムのカバレッジを計測します。
システムテスト、受け入れテストでは、メニュー構造や、ビジネスモデルのカバレッジなどを計測します。
■構造テストで使用するテスト技法
構造テストでは、用意したテストケースを実行した結果、ソフトウェアの構造の何パーセントを網羅したかを検証します。
そのため、プログラムの内部構造を意識したホワイトボックステストに分類される「コードカバレッジ技法」を使うことができます。
コードカバレッジ技法とは、プログラム内の命令網羅、分岐網羅、判定結果網羅、条件網羅などを測定する技法のことです。

■まとめ
●4つのテストタイプの概要
●構造テストとは

ここまで、4つのテストタイプのうちの「構造テスト」について解説してきました。


【参考文献】:
『ソフトウェアテスト教科書 JSTQB Foundation 第3版』

【参考URL】:
http://degrade.seesaa.net/article/124847305.html,(参照 2016年7月30日)
http://www-01.ibm.com/support/knowledgecenter/SS8PJ7_9.1.2/com.ibm.xtools.ngn_toolkit.doc/topics/c_callflow.html?lang=ja,(参照 2016年7月30日)
http://blog.nadia.bz/post/177/post-177,(参照 2016年7月30日)