負荷テストって、サーバーにダンベル持たせるの?
筋トレじゃないよ!大量アクセスに耐えられるか見るんだよ
じゃあ、プロテイン与えとけば安心?
強くするのは“マシン”じゃなくて“スペック”ね!
今日は、システムテストの専門会社が行うチェックポイントを解説するね
システムテストとは?
システムテストは、「総合テスト」とも呼ばれており、ソフトウェア開発における最終段階のテスト工程です。システムテストでは、構築したシステム全体が要件通りに動作するかを検証します。機能、性能、セキュリティなど、あらゆる観点から製品品質を評価し、品質を保証します。
他のテスト工程との違い
システムテストと、他のテスト(単体テスト、結合テスト、受け入れテスト)でどのような違いがあるのか、以下の表をもとに、紹介します。
テスト工程 | 概要 | 目的 |
単体テスト | モジュール単位での動作テスト | プログラム単体の正確性検証 |
結合テスト | 複数のモジュール連携のテスト | モジュール間のインターフェース検証 |
システムテスト | システム全体のテスト | システム全体の要件適合検証 |
受け入れテスト | ユーザーによるシステムテスト | ユーザー要望との合致検証 |
システムテストと、単体テストまたは結合テストの違いは、「テスト対象の範囲」になります。単体テストはプログラム単体の検証、結合テストはモジュール間のインターフェースの検証になります。対してシステムテストは、システム全体が要件を満たしているか検証します。
また、システムテストと受け入れテストの違いは、「目的と評価」になります。システムテストは開発側が開発の観点からテストを実施するのに対し、受け入れテストはユーザー側が受け入れの観点からテストを実施します。
システムテストと受け入れテストについて詳しく知りたい方は、こちらの記事をご覧ください。
【ゼロからわかるシステムテスト入門】総合テストと受け入れテストの違いとは
システムテストの種類
システムテストでは主に、「機能テスト」「非機能テスト」「リグレッションテスト」が実施されます。プロジェクトの内容や目的に応じて、これらのテストを適切に使い分けます。
- 機能テスト:
主目的となる機能テスト。システムがクライアントの要望通りに機能するかを確認します。 - 非機能テスト:
主目的以外の機能テスト。システムのセキュリティや、性能、使い勝手を確認します。以下は、代表的な非機能テストです。
・セキュリティテスト:システムの脆弱性や不正アクセスのリスクを評価します。
・性能テスト:システムの応答速度や処理能力などの性能を評価します。
・UI/UXテスト:ユーザーが直感的に操作できるか、使いやすさを検証します。 - リグレッションテスト:
機能追加やバグ修正などの変更によって、既存の機能が影響を受けていないかを確認します。
機能テストと非機能テストについて詳しく知りたい方は、こちらの記事をご覧ください。
【ゼロからわかるシステムテスト入門】ー機能テストと非機能テストの違いとはー
非機能要件とは?見落としがちなシステム設計の重要ポイント
リグレッションテストについて詳しく知りたい方は、こちらの記事をご覧ください。
【ゼロからわかるシステムテスト入門】ーリグレッションテストとは何か?ー
システムテストの技法
システムテストにおいて、主に機能テストでは、内部構造関係なく入出力に考慮するブラックボックス手法の技法がよく用いられます。以下に、ブラックボックス手法の代表的な技法について紹介します。
- デシジョンテーブルテスト:
複数の条件とそれに対応する動作を表で整理し、条件の組み合わせごとにシステムが正しく動作するかをテストします。 - 同値分割法:
入力値データを意味的に同じグループ(同値クラス)に分割し、それぞれのグループから代表値を選んでテストします。 - 境界値分析:
入力値の境界周辺に注目し、最小値と最大値、境界値の直前と直後、有効、無効な境界値等を使ってテストします。 - 状態遷移テスト:
システムが仕様書で定義された「状態」と「イベント」に基づき、正しく状態遷移し、期待される出力や動作するかをテストします。 - ユースケーステスト:
ユーザーがシステムを使って業務する一連の流れ(ユースケース)に基づき、各操作や機能が正しく連携し、期待通りに動作するかをテストします。
テスト技法について詳しく知りたい方は、こちらの記事をご覧ください。
【JSTQB新シラバス対応】ーテスト技法ー
システムテストの流れ
システムテストをスムーズに実施するためには、あらかじめ流れを理解しておくことが大切です。以下に、基本的なシステムテストの流れについて紹介します。
- テスト計画立案
何を、どのようにテストするかを定義します。目的、基準、要員、体制、スケジュール、使用ツールなどを明確化します。 - テスト分析
どのような動作や条件を確認すべきか洗い出します。テスト工程及び対象となるテスト範囲からテスト観点を整理します。 - テスト設計
テスト観点をもとに、テストケースを作成します。不足なく、重複なく、効率的にテストできるように設計します。 - テスト実行
作成したテストケースをもとに、準備した環境でテストを実施します。不具合があった場合は、スクリーンショットや動画などを添付することで、開発側の調査負担を減らせるようにします。 - 不具合報告と修正対応
発見された不具合を、関係者に情報共有します。その情報をもとに、不具合の改修や再テストを検討、実施します。 - テスト完了・結果報告
テスト完了後、報告書をまとめて報告します。今後の追加開発やリリースの判断材料などで活用されます。
システムテストの主要なチェックポイント
システムテストは、システム開発におけるエンジニアが実施する最終段階のテストであり、システム全体の品質を保証するうえで非常に重要です。ここでは、システムテストにおける主要なチェックポイントを、以下にご紹介します。
- 要件との整合性
テストケースに、要求仕様や機能仕様が過不足なく網羅されているかを確認します。正常な操作(正常系)だけでなく、エラーや例外的な操作(異常系)も網羅されていることが重要です。
システムが「要求仕様書」や「業務要件」に沿って正しく実装されているかを検証し、要件の漏れや解釈の誤りによるクライアントとの認識齟齬を防ぎます。 - 機能間の連携動作
モジュール間のインターフェースやデータの受け渡しが、正しく行われているかを検証します。画面遷移やステータスの変化が仕様通りであるか、また、遷移や処理の分岐条件に漏れがないかを検証します。 - 入出力の正当性
入力条件に対して、期待通りの出力が得られるかをチェックします。入力チェック、エラーメッセージの表示、境界値や無効値への対応などを検証します。また、最大桁数や入力形式の制御も重要です。 - セキュリティ上の脆弱性
テストケースに基づき、セキュリティに問題がないか検証します。また、状況に応じて、機能要件と連携し脆弱性診断を実施します。特に外部公開されるWebシステムの場合、脆弱性診断は不可欠です。 - 性能(負荷・応答速度)の評価
想定されるユーザー数や同時アクセス数において、システムが安定して動作するかを検証します。応答時間や処理速度を測定し、過剰な遅延や処理落ちがないかを評価します。性能評価は、サービス停止や性能劣化のリスクを未然に防ぐのに重要です。 - UI/UXの一貫性
ユーザーインターフェースの一貫性(ボタン配置、ナビゲーション、エラーメッセージの表記など)を確認します。ここでは、ユーザー視点での使いやすさを検証します。
これらのチェックポイントを適切に実施することで、バグや不具合の早期発見につながり、品質が高く、安全で信頼性のあるシステムの実現が期待できます。
まとめ
システムテストは、製品の品質を最終的に担保する重要な工程です。特に、要件の網羅性、機能間の整合性、性能・セキュリティの評価は、専門知識と豊富な経験が求められます。
そのため、システムテストの工程を、専門性を持つ外部のテスト会社に委託することも有効な選択肢の一つです。
GENZは累計5000件以上のテスト実績と豊富な知見をもとに、高品質なシステムテストを提供しています。システムに関するお客様のお困りごとに合わせて、最適なテスト手法をご提案いたします。
GENZのシステムテストについて、こちらをご覧ください。
GENZ システムテスト
システムテストに関することはどんなことでも、お気軽にお問い合わせください。
GENZは、お客様のプロジェクトに寄り添い、ソフトウェアテストを通じて、高品質なシステム開発を支援いたします。