システムテストとは、システムやソフトウェアを構築したあとに実行するテストです。
「システムやソフトウェア全体が仕様書通りにできているか」や「求められている機能や性能が満たされているか」といった点を確認し、システムの品質を確保するために行います。
今回はシステム開発テストの流れや主なテストの種類・手順など、システム開発の過程で実施されるシステムテストについてご紹介します。
システムテスト(総合テスト)とは
システムテストとは、ソフトウェア開発での最終段階で実施するソフトウェア開発全体の「総合テスト」を意味します。単体テストと統合テストの後に総合テストは実施されます。
システムテストの目的
システムテストの目的は、要件定義に沿ってソフトウェア開発がされたのかを検証することです。
システムテストでは、実際にユーザーが利用した際に要件した通りにソフトウェアが動作するかを確認しなければなりません。そのため、システムテストは、本番と同じ環境でユーザーの利用方法を想定しながらテストします。
システムテストを実施するこで、単体テストや統合テストでは発見できていないようなバグが検出されることもあるのです。また、ハードウェア環境の不具合が見つかるケースもあり、最終段階のテストとして重要な役割を果たします。
システムテストのテストベース
テストベースとは、テストの実施方法を「どの部分を」「どのように」「誰が」などをまとめた「テストケース」を作成する際の情報源となるものを指します。
資料を見てテストケースを作成した場合、その参考にした資料こそがテストベースです。システムテストにおいて、テストベースにはさまざまな種類が存在します。主に使われる資料は次のとおりです。
- 要件仕様書
- アーキテクチャ
- 設計書
- ユースケース
- インターフェース仕様書
- リスク分析レポートなど
開発されたソフトウェアに合ったテストベースを作成する必要があります。
結合テストとの違い
総合テスト(Integration Testing)とは、単体テストのあとでおこなうテストであり統合テストや連結テストとも呼ばれます。結合テストには、内部結合テスト(Integration Test A)と外部結合テスト(Integration Test B)があります。
結合テストはソフトウェア適格性確認テストのことであり、システムテストが要件定義の内容と一致しているかどうかに対して、結合テストは基本設計書の内容と一致しているかどうかを確認します。
さらに、テスト環境において、システムテストは本番環境において行うことが一般的ですが結合テストでは開発環境で行います。
受け入れテストの違い
受入テスト(User Acceptance Test)は要求仕様書と内容が一致しているかを確認します。受入テストはシステム全体として思っている様な動きをするかどうかを確認しますが、実際の業務環境においてテストを行うなど実際の運用に近いテストを行う点が特徴です。
システムを発注する人が完成したシステムで問題ないかどうかを判断するためのテストですが、請負業者が外部業者に委託したテストが通常通り動くかどうかを確認するテストでも利用します。
システムテストを実施する際の観点
システムテストをする場合には次の観点が重要です。
- 安全性
- 利便性
- 可用性
- 正確性
利用者がシステム利用時に情報漏洩する心配がないような安全面に注意することが重要です。そのほかにも、ユーザビリティの高さ、継続して利用しても機能しているか、ユーザーが求めている動作をするかなどを確認するようにしましょう。
システムテストに必要な観点は要件定義書に記載されているため、要件を満たしているかどうか確認することが重要です。
システムテストの種類は2つ
複数の種類があるシステムテストの中でも主要なものとして次の2つが挙げられます。
- 機能テスト
- 非機能テスト
システムテストへの理解をさらに深めるためにも、それぞれの詳しい内容について解説します。
1.機能テスト
機能テストとは、その名の通りソフトウェアの各機能に関するテストです。ただし、単純に動作をチェックするだけではありません。
テスト対象となる個々の機能が仕様書などで定義された役割を正しく果たせているかを検証します。つまり、テスト対象の機能が要件を本当に満たしているかを確かめるテストということです。
機能テストに関する詳しい内容は次のページでも解説しています。
2.非機能テスト
非機能テストとは、ソフトウェアの「機能以外」をチェックするテスト全般を指します。
「機能以外」の定義は非常に広くなりますが、代表的な種類(テストタイプ)として次の4つが挙げられます。
- ユーザビリティテスト
- 回帰テスト
- セキュリティテスト
- 性能テスト
ここでは、種類ごとの内容について確認します。また、非機能テストに関する詳しい内容は次のページでも解説してますので、参考にしてみてください。
ユーザビリティテスト
ユーザビリティテストとは、実際にシステムを利用する人にとって使いやすいシステムであるかを検証するテストを指します。
要件定義書に記載のある利用者を想定し「システムの起動方法」といった簡単なものから「複数機能の同時実行」といった稀なものまで、複数のケースを設定し、検証します。
回帰テスト
回帰テストは「リグレッションテスト」とも呼ばれ、新たに機能を追加した際にその他の機能が現行通りに動作するかを検証します。
ただし、既存機能をすべて検証するとなると膨大な作業になるため、影響しそうな機能をあらかじめピックアップし、テスト範囲を限定して実施するのが一般的です。
セキュリティテスト
セキュリティテストでは、要件定義書にあるセキュリティ要件を満たしているかを検証します。「悪意のあるavascriptやSQLが実行していないか」や「ユーザーごとの利用権限が反映されているか」といった点を確認し、システムの脆弱性や弱点の発見につなげます。
性能テスト
性能テストとは、要件定義書に記載された性能要件を満たしているかを検証します。ただし、プロジェクトによっては性能要件を規定していないケースもあり、その場合はシステムテストの計画書を作る段階で、発注側への確認が必要です。
システムテストを行うときの注意点
システムテストはソフトウェアが組みあがった状態で、ソフトウェア全体に対して行われます。
そのため検証すべき機能は多岐にわたりますが、上位の機能からテストすると、バグ発見時に原因の切り分けが難しくなります。さまざまな下位機能が関連すると考えられることから、疑うべき箇所が多くなってしまうためです。
そのためソフトウェアの基本的な機能(最低限必要となる機能)から、テストを開始することが推奨されます。その方がバク発見時にチェックすべき項目が少なくなり、原因の切り分けが簡単です。
また基本的な機能にバグがないことが検証された状態で、より上位の機能を検証すれば、原因を疑う対象から基本機能を外せます。バグが発見された際には、原因を特定しやすくなるのです。
システムテストの流れは5ステップ
システムテストはハードウェアを使用し、システム全体をテストします。そのシステム開発における流れは、大きく次の5ステップに分かれます。
- テスト計画の作成
- 仕様書の作成
- 環境の構築
- システムテストの実施
- テスト結果のフィードバック
ここでは、ステップごとの詳しい内容についてみていきましょう。
1.テスト計画の作成
システムテスト全体の方針や概要をまとめて、「システムテスト計画書」を作成します。計画書には次のような内容が記載されます。
- システムテストの目的
- 対象範囲
- 実施方法
- テスト環境
- スケジュール
これらの内容について洗い出し、テスト全体の方向性が定められています。
2.仕様書の作成
システムテスト計画書に基づき、「システムテスト仕様書」を作成します。システムテスト仕様書は、実際に行うテスト作業の内容をまとめたものです。
システムテストのシナリオやテストデータ、テストケースなど具体的な項目のほか「誰がどのテストを行うか」や「どの程度なら合格とするか」といった評価基準なども仕様書で決めます。
システムテスト計画書やシステムテスト仕様書は、システム開発メンバー全員とクライアントで共有し、方向性を確認します。
3.環境の構築
システムテスト仕様書に基づき、システムテストを実施する環境を構築します。原則として本番と同じマシンや付属ハードウェアを用意し、ハードウェアやOS、ミドルウェアからシステム全体の動作を検証します。
データもマスターデータやトランザクションデータなど、本番と同じものを用意します。本番と同じデータを使用することで、想定外の動作や不具合がないかを確認します。
4.システムテストの実施
システムテスト仕様書で決められたテストを実施します。バグや不具合を発見した場合は、その箇所を修正し、再度テストを行います。
シナリオをすべて実行し、想定したテストデータやテストケースで問題なくシステムが動作することを確認したらシステムテストは終了です。その後、クライアントに引き渡します。
5.テスト結果のフィードバック
システムテスト終了時に有識者にテスト結果においてフィードバックをもらうことが重要です。
フィードバックの内容によってはもう一度テストをすることが必要です。問題なければシステムテストはこの時点で終了です。
システムテストの仕様書(計画書)に記載すべき項目
システムテストの実施時には、システムテストの仕様書や計画書を作成するのが一般的です。
メンバーとの意思疎通を図ったり、抜け漏れをレビューしたりといった場面で仕様書や計画書が役立ちます。主な記載項目は次のとおりです。
- テスト概要
- テストの実施環境
- テストケース
- テスト手順
- テスト実施の担当者
- テスト結果の確認者
- テストの体制
- テストの実施スケジュール
いずれもシステムテストを実施をするうえで欠かない共有事項といえます。
まとめ
システムテスト(総合テスト)によって、開発したソフトウェアが求められる要件を満たしているか検証します。そのため本番と同じ環境で、実際にユーザーが利用するシーンを想定して実施することが必要です。
システムテストによって、これまでの単体テストや結合テストで発見されなかったバグが検出されること少なくありません。
ソフトウェアテストの種類のなかでも、重要な役割を担うテストといえるでしょう。ださい!