コラム

  • 2021.07.05
  • ソフトウェアテスト
  • #テスト実行
  • #テスト技法
  • #テスト計画
  • #テスト設計
  • #基礎知識

システムテスト(ST)とは その目的・観点・種類に加え、実務で使える流れも解説

システムテストは、システム構築後、すべての機能が揃った状態で、全体として予定通りの機能や性能を満たしているかどうかを検証するテストです。今回は、その目的・観点について、結合テストや受け入れテストとの違いを踏まえて説明します。また、システムテストの流れ・手順や必要なテストの種類について、テスト実務に役立つ情報をお送りします。

システムテストとは?

システムテスト(ST:System Testing)は、「総合テスト」とも呼ばれており、要件定義で作成した要件の内容に沿っているかを確認するテストのことです。システムテストは結合テストの後工程で行われ、すべての機能が揃った状態でハードウェアや通信回線なども含め、ソフトウェアのシステム要件に準拠しているか、機能間の連携は取れているか、運用や保守が実現可能であるかなどを評価する目的で行われます。独立行政法人 情報処理推進機構(IPA)の定義では、「システム適格性確認テスト」とされています。

ソフトウェアテスト入門動画

V字モデルの図

システムテストの観点

システムテストの観点は、要件定義書に記述されている内容に沿っているかということになります。具体的には機能要件と、機能以外(利用や使用、性能や拡張、運用や保守、移行、セキュリティ、エコロジー)の非機能要件に対して、動作や振る舞いが合っているかを確認します。

■非機能要件の項目

・可用性
システムやサービスなどを利用者が継続的または必要なときに使うことができるかを確認する。また、保守によるメンテナンスや障害による利用停止時間、復旧方法や復旧にかかる時間なども確認する。

・性能・拡張性
システムの処理速度やデータ量などのパフォーマンス、ピーク時や縮退時の処理能力などを確認する。また、将来のシステム拡張、システムの機能追加や性能向上に対し、対応のし易さなどを確認する。

・運用・保守性
システムの納品後、運用や保守を行うなかでバッチ処理やバックアップなどにかかる時間などを確認する。また、運用監視やシステム切替(BCP:事業継続計画)の観点でも確認する。

・移行性
現システムに関わる移行期間や移行方法、資産管理、データの種類や量などを確認する。

・セキュリティ
不正利用や不正アクセスなどのセキュリティ診断や、認証や利用制限などを確認する。また、不正監視(監視・検知・追跡・ログ)などを確認する。

・システム環境・エコロジー
システムの設置環境の耐震や免震、温度や湿度、スペース、電圧などを確認する。

システムテストと結合テストの違い

結合テスト(IT:Integration Testing)とは、「連結テスト」、「統合テスト」とも呼ばれており、単体テストの後工程で行われるテストのことです。各部品(モジュール)を複数組み合わせた場合に、接点(インターフェース)が意図通りに動作するかを確認する内部結合テスト(ITa:Integration Test A)と、外部システムなどの接点やデータ連携が意図通りに動作するかを確認する外部結合テスト(ITb:Integration Test B)があります。IPAの定義では、「ソフトウェア適格性確認テスト」とされています。前述の通り、システムテストが、要件定義の内容に沿っているかを確認するのに対し、結合テストでは基本設計書の内容に沿っているかを確認することになります。テスト環境に関しても、システムテストがハードウェアや通信回線なども含め本番同様の環境で行うのに対し、結合テストでは開発環境にてテストデータを使用します。

システムテストと受け入れテストの違い

受け入れテスト(UAT:User Acceptance Test)とは、「検収試験(AT:Acceptance Test)」とも呼ばれており、要求分析で作成した要求仕様書の内容に沿っているかを確認します。システムテスト同様にシステム全体として意図通りに機能するかを確認しますが、より実運用に近いテストを行うため、システムテストに合格したものを実際に業務で使用する環境におき、実データを用いて実際の業務と同じ操作でテストを行います。一般的にシステム発注元(ユーザー)が完成したシステムを受け入れるかどうかのテストですが、元請ベンダーが外部ベンダーに開発を委託したシステムを確認するテストに対して用いることも多いです。

ソフトウェアテスト入門動画

システムテストの流れ

ソフトウェアの開発におけるテストの流れは、「テスト計画」、「テスト設計」、「テスト準備(環境・データ)」、「テスト実行」、「テスト実行進捗管理」、「テスト完了」のプロセスから構成され、開発の設計・実装工程と並行して行います。その流れはシステムテストも同様です。テスト計画ではテストにおける全体の概要と目的やテストのスコープ(対象範囲や影響範囲)、観点、環境、および体制(役割)、スケジュールを記載するとともにテストにおける合格基準をまとめます。テスト計画が決まれば、次に実際のテストで確認するテストケースを設計していき、その後、テスト環境とテストデータを準備していきます。準備が整い次第、テスト実行者はテスト設計を確認しながら各テストケースを実行していき、確認すべき項目と異なる結果を確認した場合には、不具合が発生した際のフローに従い不具合を起票します。このような一連の流れを経て不具合およびテストケースが完了した後、テスト合格基準とともに終了報告を行いテストは完了となります。

テストの流れの図

■テストに関する作業

・テスト計画
何をテストするのか、どのような種類のテストをするのかを決める。
- テスト方針の立案
- テスト基準の決定
- 要員・体制の決定
- スケジュールの決定
- テスト環境・ツールの決定
- 各種管理基準の設定

・テスト準備(環境・データ)
テストで確認したいことを具体的に詰め、テストケースを作成する。
- テストケースの作成
- テスト仕様書の作成
- テスト手順書の作成

・テスト実行
テスト実行準備で用意したものを基にテストを実行する。
- テストケース実行
- 問題点切り分け
- 原因追及

・テスト実行進捗管理
テスト実行の進捗を基にプロジェクトの方向性を判断する情報を提供する。
- 不具合管理
- 進捗管理
- 変更管理
- 障害収束(の見極め)

・テスト完了
テスト実行の終了を報告する。
- テスト分析
- テスト終了報告書の作成

ソフトウェアテスト入門動画

システムテスト計画書の書き方

テスト計画はシステムテスト上で、適切なテストを行い、品質を担保するために非常に重要です。その内容をテスト計画書にまとめる際は、仕様変更のタイミングや優先すべき仕様などについて確認し、ゴールや対象範囲、体制などを決めることで、工数やコストの削減、スケジュールの短縮を図ることができます。

■システムテスト計画書の記述内容

・テスト方針
テストの概要と目的、テストのスコープ、観点

・テスト基準
テストの開始、中断・延期、終了(合格)の基準、想定不具合率

・要員・体制
各要員の役割や体制図

・スケジュール
各工程のスケジュール

・テスト環境・ツール
テスト環境のほか、テスト端末、ツールなど

・各種管理規定
不具合管理や進捗管理の基準、手法

システムテストの種類

システムテストでは、機能要件と非機能要件に沿ったテストが必要となるため、主に以下の種類のテストからプロジェクトの特性に応じて選択し行うことになります。

■システムテストにおけるテストの種類

・機能テスト
システムの機能要件に基づき、本番環境と同等の状態でシステム要件を満たしていることを確認するテスト。機能要件通りにシステムが動作すること、追加修正した機能およびその他現行機能が満たされていることを確認する。

・構成テスト(機種テスト)
システムが推奨している環境設定(LAN環境、サーバー環境、PCのOS・ブラウザ、および、携帯、スマートフォンの種類)において、画面表示や基本動作が問題なく実施できることを確認する。

・リグレッションテスト(回帰テスト、退行テスト)
プログラムの追加・変更・削除などにより、システムの未変更部分に新たな欠陥(「リグレッション」「デグレード」などと呼ぶ)が入り込んだり発現したりしないことを確認するためのテスト。未変更部分に変更や問題がないことを確認する。実際には、変更の度に全コンポーネントに対してテストを行うことは現実的でないため、影響がおよぼされる可能性のある範囲や重要度の高い範囲を優先して実施されることがある。

・シナリオテスト
業務を想定したシナリオに基づいて実施するテスト。業務フローに則ったテストシナリオを作成し、業務が滞りなく行えるか確認する。

・性能テスト
テスト対象に対して繰り返し長時間、要求された処理を行った場合に、正しく動作することを確認するテスト。

・ロングランテスト
性能要件を充足していることを確認するテスト。
<単体性能>
単画面、単バッチの性能を確認する。
<負荷テスト>
システムに平時の負荷を与えた場合において、正しい動作を行うことを確認する。
<高負荷テスト>
システムに高負荷を与えた場合(大容量データや多数のデータを与えた場合、一定時間内に多数の処理を行う場合など)に、正しい動作を行うことを確認する。また、更なる高負荷を与え、メモリやサーバーなどの可用性が低減した場合においても、正しい動作を行うことを確認する。

・ユーザビリティテスト
追加修正した機能が理解しやすく、使いやすいものになっているか、視認性や操作性、統一性を確認する。

・耐障害テスト
保守要件(異常個所の早期検出能力、トラブル発生時の解決時間の短さ、調査資料の十分性など)を充足していることを確認するテスト。
障害が発生した場合においても実行レベルを維持できること、障害発生後に実行レベル再確立やデータ回復ができることを確認する。
また、コンティンジェンシープランや代替業務を定めている場合は、定めた方針や手順通りに業務再開ができることを確認する。

・セキュリティテスト
信頼や安全、保全要件を充足していることを確認するテスト。
<クロスサイト・スクリプティング(XSS)>
サイト間を横断して悪意のあるスクリプトを混入させ、不正な動作をさせたりデータを盗んだりできるかを確認する。
<SQLインジェクション>
アプリケーションのユーザ入力領域からSQL文を混入させ、データを盗んだりデータを削除できるかを確認する。

ソフトウェアテスト入門動画

まとめ

・システムテストは、システム全体としてシステム要件に準拠しているかを確認するテストのこと。

・システムテストの観点としては、要件定義で作成した要件定義書の内容に沿っているかであり、機能要件と非機能要件に対して、動作や振る舞いが合っているかを確認する必要があること。

・システムテストは、「テスト計画」、「テスト設計」、「テスト準備(環境・データ)」、「テスト実行」、「テスト実行進捗管理」、「テスト完了」のプロセスから構成されていること。

・システムテスト計画書には、「テスト方針」、「テスト基準」、「要員・体制」、「スケジュール」、「テスト環境・ツール」、「各種管理規定」などを記述し、当該計画に沿ってテストを行い、品質を担保すること。

資料ダウンロード/動画視聴

ソフトウェアテスト入門動画

テスト計画入門動画

SHIFTサービス資料

テストサービス導入事例集

関連サービス