本ブログでは、開発側の最終工程「システムテスト(総合テスト)」についてご紹介します。まずはシステムテストの概要について解説し、検証目的や種類、進め方について、各工程とともに説明します。
テスト仕様書・計画書作成の方法やガイドをまとめた資料はこちら。 巻末に項目のサンプルも用意しています。
システムテストとは
システムテストとは、【ST/PT/総合テスト】ソフトウェアの検証手法のひとつです。
構築したシステム全体をテスト対象とし「要件定義・品質要求を満たしているか」について検証します。
また、システムテストでは本番環境とほとんど同じ環境にてテストが実行されます。
システムテストは開発側の最終テスト工程です。
主にプログラムごとに検証する「単体テスト」と、プログラムを結合し検証する「結合テスト」完了後に実行されます。
製品リリース前に全体を通したテストを行うことで品質確保とともに、残存するバグなどを最小限に減らすことが可能になります。
次に、システムテスト実行の前段階である「単体テストや結合テストとの違い」について解説します。
単体テストや結合テストとの違い
単体テストと結合テストとの大きな違いは、「テスト対象範囲」です。
単体テストは「単体機能」、結合テストは「それぞれの機能やシステム間」がそれぞれテスト範囲となります。
単体テストでは主に、単体の機能や性能、運用性などの動作確認を行います。
一方で結合テストは画面間のデータ連携や、バッチを起動する際のデータ連携、AとBの異なるシステム間での連携などが成功するかを検証します。
システムテストの目的
システムテストは、開発した製品の品質確保を目的としたテスト手法です。
また、前述の通り、システムテストは開発ベンダー側の最終テスト工程です。
そのため、テスト終了後には「現段階でこの製品に不備はない」と自信を持って言える状態に仕上がっていなければなりません。
万が一システムテストが正確に実行されなかった場合には、要件定義・品質要求が満たされず、発注側の要望が実現されなくなってしまいます。そのような状況に陥った場合、発注側やユーザーからの信頼や満足度を得ることは難しくなるでしょう。これらの不都合を生じさせないためにも、開発の際にはシステムテストを正しい手順且つ丁寧に計画、実行することが重要です。
システムテストの種類
代表的なシステムテストの種類は、以下の通りです。
システムテストの種類
- 回帰テスト
修正後、別の部分に不具合が発生していないかを確認します。 - デグレードチェックテスト
修正後に旧バージョンへの回帰・不具合の再発などが起こっていないかを確認します。 - セキュリティテスト
不正アクセス・情報漏えい防止など、セキュリティ面が正常に動作しているかをテストします。 - ユーザビリティテスト
想定ユーザーにプロトタイプを操作してもらい、ユーザー目線で操作性を確認します。 - 障害許容性テスト
想定される障害を意図的に発生させて、最低限の機能が正常に動作するかを復旧手順とともに確認します。 - 性能テスト
性能要件に基づき、実際の処理能力が仕様を満たしているかをテストします。 - ロングランテスト
大量アクセスなど、一度に過負荷がかかった際にもシステムが正常に動作するかを検証します。 - 負荷テスト:
性能や耐久性、想定外過負荷に対するシステムの挙動や対処法などを検証します。
システムテストの進め方
次は、「システムテストの進め方」について解説します。正しいテストの進め方を把握することは、妥当性の高いテスト実現において非常に重要です。
システムテストの進め方
- テスト設計(テストケース・テスト観点)
まずは「全体が要件定義を満たしているか」というテスト観点を用いて、テストの方向性を整理したテストケースを作成します。
- テスト環境準備
作成したテストケースに基づき、システムテストの実行環境が本番環境と同様に仕上がるように準備します。
- テスト実行
仕様書をもとに、システムテストを実行します。
- エラーの修正
システムテストの途中で不具合検出した際には、その内容を管理台帳に記載して修正対応を行います。
テスト設計(テストケース・テスト観点)
システムテストを正しく実行するためには、環境構築前の「テスト設計」が重要です。
テスト設計では要件定義書に基づき、システムテスト全体の目的・範囲・テスト環境・スケジュールなどの方針を定めます。
注意点としては、要件定義を満たすことができるよう、あくまでもユーザー目線・品質要求に沿ったテスト設計を行うことが重要です。また、作成したテスト設計は、関係者全員に共有しましょう。
システムテストの観点
- 利便性に関する項目
ユーザーがシステムを操作した際に「快適に動作できるか」という観点。 - 可用性に関する項目
ユーザーがシステムを操作した際に「継続・連続して機能しているか」という観点。 - 正確性に関する項目
システムが使用された際に「ユーザーの意図した動作を正確に行うのか」という観点。 - 安全性に関する項目
ユーザーがシステムを使用した際に「セキュリティ面で危険性や情報漏えいはないか」という観点。
テスト環境準備
次は、テスト設計に基づき「テスト環境準備」に取り掛かります。
システムテストでは原則として「可能な限り本番環境と同様の環境を準備する」必要があります。そのため、本番と同じ機器やハードウェアを用意し、システム全体の動作検証をひと通り実施することが重要です。
さらにデータに関しても、本番の稼働環境と同様のもの(マスターデータ、トランザクションデータ)を準備することで、予期せぬ欠陥や不具合がないかを抜け漏れなく確認する必要があります。
ここでの注意点としては効果的なテスト実行に向け、
「できるだけ本番稼働環境に近い環境を構築すること」「テスト設計に基づき、バグが残存しないようシステム全体を通して細心の注意を払うこと」が挙げられます。
テスト実行
次は、実際にシステムテストを実行します。
システムテスト実行の際には、必ず要件定義書に沿った手順とテスト手法を確認し、正確に行います。
万が一システムテストの途中で不具合を検出した場合には、管理台帳を作成し、詳細を記入します。
また、管理台帳は不具合が完全に解消されるまで保管しておきましょう。
そして、見つかった不具合の修正完了次第にテストを再開します。計画書に記載のテスト工程を全て実施し、問題なくシステムの動作が確認でき次第、テスト完了です。
ここでの注意点としては、「要件定義書に沿ったプロセス、方法で正しくテストを行うこと」や「不具合やバグの検出時には、それらを放置せずに必ず修正・復旧後にテストを再開すること」を常に意識しておくことが重要です。
エラーの修正
システムテストでは、修正作業が予期せぬ箇所に影響を与えることが多々あります。そのため、エラー発生時には管理台帳への記入はもちろん、迅速な修正対応を要します。
具体的には不具合検出時に修正・対処方法を考慮し、再検討を行います。
また、エラー修正後には周囲への影響を考慮・分析し、抜け漏れなくフィードバックすることが重要です 。
ここでの注意点としては、あらかじめ「テスト工程を自動化」することにより、テスト作業のスケジュールに余裕を持たせておくことが挙げられます。
自動化によるシステムテスト効率化は、エラー発生時の迅速な対応だけでなく、ヒューマンエラー防止を可能にします。
また、これらの作業を丁寧に行うことは、顧客満足度の高いソフトウェア開発に大きく貢献します。
システムテスト仕様書の記載項目
システムテスト仕様書には、以下の項目を記載します。
- テスト概要:
テスト内容について、どのメンバーも理解できるようにシンプルな書式で記載します。 - テストの実施環境:
本番環境に近いどのような環境(ハードウェア、ソフトウェアなど)でテストするのかを記載します。 - テストケース:
どのようなテストを実行し、どのような結果を得ることが目的なのかを記載します。システムテストの基盤となる種類も記載します。 - テスト手順:
テストケースのプロセスを実際に用いるデータとともに順次記載します。 - テストスケジュール:
システムテストのスケジュールを記載します。仕様書のレビューやテスト環境構築・使用データなどを明らかにしましょう。また、テストスケジュールは関係者全員への共有が必須です。 - テスト担当者:
システムテストを実行するメンバーを記載します。また、実施者とは別にテスト結果を確認するメンバーも記載します。
システムテスト仕様書の書き方のサンプル
テスト仕様書・計画書作成の方法やガイドをまとめた資料はこちら。 巻末に項目のサンプルも用意しています。
システムテストでは、「非機能要件に関する検証作業」の比率が高くなります。
そのため、実行の際には「機能要件だけでなく、非機能要件に対する検討」が大切です。何故ならば、システムテストでの不具合残存は、発注側に渡った次の段階では検出が困難であるためです。
その他には、「関係者間での情報共有」や、「どのメンバーが読んでもわかりやすい仕様書作成」も重要です。
まとめ
今回は「システムテスト」について解説しました。
本ブログを通して、システムテストに関する知識が深まる参考となれば幸いです。
テクバンではお客様への「システムテスト支援サービス」も行っております。
テクバンのシステムテスト支援サービスとは?
- 専門家のよる徹底した要求ヒアリングを実施
- 非機能要件まで考慮、実利用性のあるテストの実施
- 当社独自のノウハウを活かした、効果的なテスト内容の決定
当社在籍のテストエンジニアがお客様のご要望や、システム・ソフトウェアの特性などをヒアリングした上で、効果的なテスト設計~実行までを全面サポートさせていただきます。