分野 カテゴリ | マネジメント系 システム開発 |
|---|
今回は,システム開発工程の後半に行われるテストについて解説します。試験では,テストの種類とその目的や内容,テストで使われるテスト技法について出題されています(システム開発の各工程については(第12回)参照)。
テストの種類
システム開発を行う場合,まずシステムの全体象を決め,次にシステムをいくつかに分割してそれぞれの仕様を検討し,さらに細かい単位に分割してそれぞれの内容を設計する,という「全体→部分」という流れで設計していきます。最小の単位であるモジュール(ユニット)の設計が決定すると,モジュールごとにプログラミング(コーディング)を行い,その後はモジュールを順に結合させて,システム全体を組み立てる作業に入ります。
テストは,作成した個々のモジュールの検証からはじまり,設計工程とは逆に「部分→全体」という流れで検証していきます。ここでは,試験によく出題されるテストを,行われる順序に従って説明していきましょう。
①モジュールテスト(ユニットテスト)
モジュールごとに行うテストです。主にバグと呼ばれる論理上の誤りを検出して修正するために行われます。そのモジュールを作成したエンジニアが担当するテストで,テスト技法としてホワイトボックス法などが使われます。
②ソフトウェア結合テスト
モジュールを組み合わせ,モジュール間のインタフェースに不具合がないかどうかを検証するテストです。開発担当のエンジニアまたは専門のテスト担当者がテストを行います。テスト技法として,ボトムアップテスト・トップダウンテスト・ビッグバンテストなどが使われます。
③システム結合テスト(システムテスト)
システム全体を稼働させて行うテストで,必要な機能や性能が満たされているかどうかを検証します。専門のテスト担当者と共に,システムのユーザも参加して行われ,ブラックボックス法などのテスト技法が使われます。システム結合テストでは,具体的には次のようなテストが行われます。
機能テスト:必要な機能がすべて含まれ,正常に動作するかどうかを検証
性能テスト:要求される処理能力や応答時間を満たすかどうかを検証
例外処理テスト:エラー処理機能や回復機能が正常に動作するかどうかを検証
負荷テスト:大きな負荷(大量のデータ処理など)をかけても,正常に動作するかどうかを検証
操作性テスト:ユーザインタフェースが使いやすいかどうかを検証
退行テスト(レグレッションテスト):プログラムを修正した場合,修正箇所以外の機能が正常に動作するかどうかを検証
④承認テスト(受入れテスト)
開発側からユーザ側にシステムを引き渡す際に行われるテストで,ユーザ側の検収担当者が行います。システム要件をすべて満たしていることを検証し,ユーザ側として受け入れてよいかどうか(検収)を判断します。
⑤運用テスト(導入テスト)
システムを本稼働させる前に,実際の業務と同じ環境で稼働させ,システム運用を担当するユーザが行うテストです。定められた業務手順のとおりにシステムが稼働するか,業務の処理量の変化などによって不具合が起こらないかなど,実際の業務に使うデータを用いて検証します。
テスト技法
各テスト工程では,誤りを見逃すことなく,かつ効率よく検証を行うために,さまざまなテスト技法が用いられています。
ホワイトボックス法とブラックボックス法
チェックを行うために必要な値を含めたデータのことを,テストデータといいます。テストデータの作成技法として,プログラムを作成するエンジニア側の視点で作るホワイトボックス法と,システムを使うユーザ側の視点で作るブラックボックス法があります。
ホワイトボックス法では,プログラムの処理手順や処理内容などの内部構造を意識して,バグが発見できるようにテストデータを作り込みます。プログラムの作成者であるエンジニアが,モジュールテスト用のテストデータを作成するときに用いる技法です。
それに対して,ブラックボックス法は,プログラムの内部構造を意識せず,「入力データAを処理すると,Bが結果の値として返ってこなければならない」という要件をクリアするかを検証するテストデータを作るときに用いる技法です。ソフトウェア結合テスト以降のテストで,要件定義書に定められた機能を満たすことを検証するためのテストデータ作成などに使われる技法です。
同値分割法と限界値分析法
入力される可能性のある値をすべて網羅してテストデータを作れば,完璧にプログラムの機能をチェックできます。ただし,テストデータの量は莫大になり,テストデータの作成にも,そのデータをプログラムに処理させて結果を検証するにも,想像を絶する時間と手間が必要になります。
同値分割法・限界値分析法は,プログラムの不具合を見逃すことなく,しかも効率よくテストを行うことができるテストデータを作成するための技法です。
入力データをいくつかのグループ(同値クラス)に分け,そのグループを代表する値を選んでテストデータを作成する方法を同値分割法といいます。
また,各グループの境界となる値を選んでテストデータを作成する方法を限界値分析法といいます。年月日を入力する場面で,月の数値をチェックするテストデータを考えてみましょう。月の数値は1月~12月までですから,有効な値は1~12,それ以外はエラーとなる無効な値です。
トップダウンテスト・ボトムアップテスト・ビッグバンテスト
プログラミングの工程で作成したモジュールは,関連するモジュールと結合しながらシステム全体を組み上げていきます。結合したモジュールが正常に動作するかを検証するときに使われるテスト技法が,トップダウンテスト・ボトムアップテスト・ビッグバンテストです。
トップダウンテストは,上位のモジュールから順に下位のモジュールを結合させて,テストしていく方法です。上位モジュールが呼び出して使う下位のモジュールが未完成の場合には,下位モジュールの機能をシミュレート(真似)する,スタブと呼ばれるモジュールを用意します。
ボトムアップテストは,トップダウンテストとは逆に,下位のモジュールから順に上位のモジュールへと結合させて,テストを行う技法です。テストを行う下位モジュールを呼び出して動作させる役割を持つ上位モジュールが未完成の場合には,ドライバと呼ばれる上位モジュールの機能をシミュレートするモジュールを用意します。
ビッグバンテストは,ひとかたまりのモジュールを一気に結合してテストを行う方法です。モジュールを結合するごとにテストを行うトップダウンテストやボトムアップテストに比べて,テストにかかる時間や手間を軽減することが可能です。ただし,段階的にテストを行っている上記2つの手法とは異なり,テストの結果なんらかの不具合が出た場合,どのモジュールやモジュール間インタフェースが原因なのかを特定しづらいというデメリットもあります。






