システムテストの解説(基本情報技術者シラバス用語)

目次

システムテストとは

システムテストとは、開発したすべてのプログラムやハードウェアを結合し、システム全体として要件定義で定めた機能や性能、品質がすべて満たされているかを検証する最終段階のテストのことです。「総合テスト」とも呼ばれます。

個々の機能が正しく動くかだけでなく、実際の運用環境に近い状態で全体を動かします。機能要件(想定通りの画面遷移や計算結果が得られるか)はもちろん、非機能要件である「大量のアクセスに耐えられるか(負荷テスト)」「24時間連続で動かしてもメモリが不足しないか(信頼性テスト)」「不正な操作を弾けるか(セキュリティテスト)」といった多角的な観点からテストを行い、システム全体の品質を保証します。

具体例

新しいチケット予約システムを一般公開する前に実施するシステムテストの例です。

  • 機能の総合テスト:ユーザーがログインし、座席を選び、決済を行い、予約完了メールを受信するまでの一連の流れがエラーなく行えるかテストする。
  • 負荷(パフォーマンス)テスト:シミュレーターを使い、同時に1万人からアクセスがあった際に、サーバーがダウンせず、画面表示が5秒以内に完了するかを検証する。
  • 障害復旧テスト:動作中に意図的にデータベースの電源コードを抜き、予備のデータベースに自動で切り替わってサービスが継続できるかを確認する。

もう少し詳しく

システムテスト(総合テスト)は、ハードウェアやネットワーク環境も含め、本番運用に近い全体構成を組み上げて実施されるテストです。ここでは、要件定義書で合意された機能や性能がシステム全体で実現されているかを、開発側の最終評価として検証します。

システムテストでは、機能要件の確認に加えて、以下のような多様な「非機能要件のテスト」が実行されます。

  • 性能テスト(パフォーマンスクラス): 設計された処理速度(レスポンスタイム)やスループットが発揮されているかを確認します。
  • 負荷テスト(ロードテスト / ストレステスト): 大量の同時アクセスやデータ量を送り込み、システムがダウンしないか、限界値(最大許容負荷)はどこか、性能がどう劣化するかを検証します。
  • セキュリティテスト: 脆弱性ツールや擬似攻撃を試み、アクセス制御や暗号化が正常に機能しているか、不正侵入を弾けるかを確認します。
  • 障害回復(リカバリ)テスト: システムの電源切断やネットワーク切断などを意図的に発生させ、冗長化された予備系への切り替え(フェイルオーバー)や、データ復旧が設計通りに行われるかを確認します。

試験でのポイント

試験では、システムテストの位置づけや、多様なテスト観点の定義について問われます。特に非機能要件に関するテスト(ロードテスト、ストレステスト、回復テスト、運用テスト)の用語の定義を問う問題が頻出します。

例えば、「通常想定される限界に近い、あるいはそれを超える負荷をかけてシステムの耐久性を調べるテスト」は「ストレステスト」であり、「システム稼働中にわざと障害を起こし、復旧手順を確認するテスト」は「リカバリテスト」である、といった違いを整理しておきましょう。また、V字モデルにおいて、システムテストは「要件定義(システム要件定義)」に対応する検証工程であることも重要です。

関連する用語

関連する用語には、限界に近い負荷をかけて耐性を調べる「ストレステスト」、障害からの復旧性能を確認する「リカバリテスト」、および開発プロセスにおいてシステムテストに対応する「要件定義」があります。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ