その目的ごとに分けたものを「テストタイプ」といいますが、今回はその中でも「機能テスト」について解説していきます。
■そもそも「機能」とは
ソフトウェア開発において「機能」とは、そのソフトウェアが「何をするか」であり、「どのように動作するのか」ではありません。
そのため、機能テストでは、テスト対象が求められている仕様(目的)を満たしているかどうかを検証します。
また、機能テストは、単体テスト、結合テストが終わってから、性能テストや負荷テストなどとともに、システムテストの一つとして実施されることが多くあります。
■機能の表現方法
機能が実際に動くのはプログラム上ですが、機能を表現したものにはドキュメント上のものもあげられます。たとえば、要件定義書や、ユースケース、機能仕様書、またはドキュメント化されていないものも対象になります。
ドキュメント化されていないものは、テスト担当者のシステムに対する理解の深さや、経験の豊富さが重要になってきます。
■機能テストの適用範囲
「機能」はシステム、各サブシステム、個々のプログラムなど、さまざまな階層で表現されています。つまり、機能テストもそれぞれのレベルで実施する必要があります。
システムの仕様レベルで(ユーザーに提供する機能をベースに)おこなう場合はシステムテストレベルになり、個々のプログラムの仕様書レベルならば、単体テストレベルの機能テストになります。
■機能テストのモデル
機能テストでは、開発の流れを定義した「プロセスフローモデル」、外部からの入力や、内部からのプログラムに応じて、動作を変えるシステムを表現した「状態遷移モデル」、その他に、自然言語で記述した仕様などの「ソフトウェアモデル」を用います。
■機能テストで使われるテスト技法
機能テストは、ソフトウェアの外部動作を検証するため、ブラックボックステストに分類される、仕様書ベースのテスト技法を用います。代表的なものに、有効同値(正常処理ができる値)と、無効同値(エラーとなることが期待される値)を使って、
それぞれ正常処理とエラー処理をテストする『同値分割法』や、有効同値と無効同値を組み合わせるなどして、
処理と処理の境界となる値(境界値)をテストする『境界値分析』や、
入力データの組み合わせに対する動作をまとめた表を使っておこなう『デシジョンテーブルテスト』などがあります。
★まとめ
●機能とは、そのソフトウェアが「何をするか」を表現したもの●機能テストの範囲は、仕様書からプログラムまでさまざま
●機能テストはブラックボックステストでおこなわれることが多い
ここまで、ソフトウェアが持つ機能と、その機能のテスト方法について解説してきました。
機能テストとは逆に、そのソフトウェアが「どのように動作するのか」を検証する「非機能テスト」もあります。
【参考文献】:
『ソフトウェアテスト教科書 JSTQB Foundation 第3版』