システム開発(ソフトウェア開発)の進め方で紹介した「テスト」工程について説明します。テスト工程では、様々な種類のテストを通して、要件定義で定めた要件を満たすシステムを構築することが出来ているかを徹底的に確認します。要件定義で定める要件に関しては、要件定義の進め方という記事を確認ください。
本記事では特に、テストの流れを説明した後、テストの中でも特に依頼者と開発者で十分に確認すべきであるシステムテスト(総合テスト)の種類について説明します。
テスト工程の流れ
プログラミングにより具体的なシステム・ソフトウェアが形成された後に行われるテスト工程では、作成したシステムを実際に使用し、動作に問題がないか、実現したいシステムのイメージが実現できているかなどを確認します。
以下のような種類のテストを繰り返し、徹底的にシステムの不具合や不備を取り除きます。
単体テスト
単体テストでは、システムを構成するパーツ、機能ごとにその動作を確認します。ユニットテストとも呼ばれ、テスト工程の最初に行われます。

結合テスト
結合テストは、単体テストで確認した各パーツを組み合わせたときの動作を確認するテストです。このテストにより単体テストだけでは確認できなかった挙動について、動作不良、不具合がないかを確認します。

運用テスト
運用テストでは、結合テストよりさらに実際の使用状況に近づけてテストするため、依頼者がテストに参加して使用者としての視点で動作を確認します。そのため、ユーザー受け入れテストとも言われます。

システムテスト(総合テスト)
システムテストは、実際の運用を想定して様々な角度で行われる、テスト工程の中でも最終段階のテストです。

各テストの流れ
システム開発におけるテストは、主に以下のような流れに沿って進行することが多いです。
各工程に関して以下で説明します。
テスト計画
テスト計画では、何を、どのようにテストするのかといった方針を決定します。その後は決定した方針に従って、テストの要員や体制、スケジュール、管理方法などを定めていきます。最終的にはこれらをテスト計画書にまとめていきます。

テスト準備(環境・データ)
テスト計画が終わった後は、立てた計画に沿ってテスト実行に必要な準備を行います。ここではテスト環境や使用するデータとあわせて、テストケースを準備します。テストケースとは、テストで確認すべき内容、実行の手順、期待する結果などをまとめたセットです。このテストケースはテスト仕様書やテスト手順書にまとめられます。

テスト実行
準備したテスト環境、データ、テストケースをもとに実行者がテストを実行します。このテストによって問題が発生した場合は、後に修正できるように問題点を切り分けてまとめていきます。
テスト分析
テストが完了した後にはその分析を行います。具体的にはテスト実行の結果や、不具合の改善のために発生した変更点、新たに出た不具合についてやその改善案といった内容を終了報告書などにまとめていきます。ここでの分析内容をその後のシステム開発に適用していきます。

システムテスト(総合テスト)の種類
システムテスト(総合テスト)はシステムが構築された状態で、依頼者と開発者で決定した要件を満たしているかを確認する最終段階のテストです。システムテストでは、機能要件と非機能要件に沿ったテストが必要であるため、以下の表に示したような様々な種類のテストからプロジェクトの特性に応じて選択して行います。
テスト名 | 詳細 |
---|---|
機能テスト | 実装する際と同等の環境でテストし、機能要件通りにシステムが動作することや、追加修正した機能及びその他機能が満たされていることを確認します。 |
構成テスト (機種テスト) | システムが推奨する環境設定において、画面表示や基本動作が問題なく実施できることを確認するテストです。ここでの環境には、LAN環境やサーバー環境、PCのOS(Windows、Mac、Linuxなど)・ブラウザ(Microsoft Edge、Google Chromeなど)環境、スマートフォンの種類などが含まれます。 |
リグレッションテスト (回帰テスト、退行テスト) | リグレッションとは、プログラムの変更により、システムの未変更部分に現れる新たな欠陥のことを指します。このリグレッションについて未変更部分、なかでもプログラムの変更による影響が及ぼされる可能性のある範囲や重要度の高い範囲を優先してテストします。 |
シナリオテスト | 業務を想定したシナリオに沿って実施するテストです。業務フローに沿ったテストシナリオを事前に作成し、業務が滞りなく行えるかを確認します。 |
性能テスト | 想定内、想定以上のアクセス数や処理データ量などに対してシステムがどのように動作するかを確認するテストです。 |
ロングランテスト | テスト対象に対し、長時間繰り返し要求された処理を行った場合に正しく動作することを確認するテストです。 |
ユーザビリティテスト | 各機能が理解しやすく、使いやすいかどうかや、視認性、操作性、統一性など、ユーザー視点で確認するテストです。 |
耐障害テスト | 障害が起きた際の異常個所の検出やトラブルへの対処能力などの保守要件を満たしていることを確認するテストです。障害が発生した場合に実行レベルを維持できるか、障害発生後の回復能力なども確認します。 |
セキュリティテスト | システムの信頼性や安全性、保全要件を満たしていることを確認します。具体的には、サイト間を横断して悪意のあるプログラムを混入させ、不正な動作をさせたりデータを盗んだりができないかを確認するクロスサイトスクリプティング(XSS)や、アプリケーションの入力個所からデータベースを操作する言語であるSQL文を混入させ、データを盗んだり削除できたりができないかを確認するSQLインジェクションなどを行います。 |
まとめ
この記事では、システム開発におけるテストの流れやシステムテスト(総合テスト)の種類について説明しました。テスト工程を通じて、望んだ要件を満たすシステムが開発されているかをしっかり確認しましょう。
(坂下)