総合テスト(システムテスト)とは?

総合テスト(SystemTest, ST)とは、構築したシステムやソフトウェアなどを実際の使用状況を想定した環境でテストすることです。
ここでは、総合テスト(システムテスト)の目的と特徴を解説します。
システムテストの目的
システムテストは、構築したシステムが問題なく機能しているかの確認や、リリース後に不具合が発生しないか確認する目的で行います。
システムリリース時の最低条件は、要件定義の内容に沿っていることと、仕様を満たしていることです。
システムテストでは、実際の使用状況を想定した環境でさまざまな観点からテストを行うため、開発環境では確認できなかったバグや不具合を発見でき、リリース後にトラブルが発生するリスクを最小限に抑えられます。
システムから不具合が出ると、顧客との信頼関係を悪化させてしまう可能性もあります。システムテストを通して、徹底的に確認することが大切です。
システムテストの特徴
システムテストの特徴は、開発側で行う最終的なテストであり、実際の運用を想定して行われることです。
システムテストが完了したら、発注者が実際の運用環境に近い環境で使用し、不具合がないか確認する「受け入れテスト」を実施します。
受け入れテストで不具合を発生させないためにも、システムテストでは実運用を想定したテストを実施することが大切です。
システムテストと他テストとの違いは?
システム開発では、システムテスト以外にも複数のテストが行われます。テストの種類は大きく分けて4つです。
テストの種類 | テストの内容・特徴 |
---|---|
単体テスト | プログラムを構成する最小単位であるモジュールの機能や動作を確認するテスト |
統合テスト | 単体テストを行ったモジュールを2つ以上組み合わせて、相互処理や動作を確認するテスト |
総合テスト | 実際の使用状況を想定した環境で全体の機能・動作の確認をするテスト |
受け入れテスト | システム開発を依頼した発注者側がエンドユーザーのニーズを満たしているか確認するテスト |
煩雑に見えますが、それぞれが非常に大切な役割を持っているので、これらのテストを飛ばして次の工程に進むことはできません。
総合テスト(システムテスト)を行うときの観点
総合テスト(システムテスト)を行うときの観点は、主に「機能要件」と「非機能要件」の2つです。
ここでは、機能要件と非機能要件について解説します。
機能要件
機能要件とは、システムに必要な機能に関する要件のことです。
顧客が業務手順として必要であり、システムに求められる処理機能を確認し、仕様書や要件定義書などに明記します。
システムの機能が十分に要望を満たせていなければ、ユーザーの求める機能を実装できずに信用を失ってしまう可能性があるため、開発の際は特に細やかな対応が求められます。
非機能要件
非機能要件とは、システムの性能に関する要件のことです。
「システムの性能」とは、応答速度・セキュリティ・ユーザーが実際に使った時の操作性・画面の見やすさなどを指します。
非機能要件は、機能要件とは異なり仕様書や要件定義書には記載されていないこともあるため、重要ではないと思われてしまうケースもあります。
しかし、非機能要件もシステムテストにおける重要な観点の1つですので、欠かさずにテストを実施しましょう。
総合テスト(システムテスト)の進め方
総合テスト(システムテスト)は、主に以下の5つのステップで進めます。
- テストの計画書・仕様書を作成
- テスト環境・データの準備
- テストの実行
- テストの進捗管理
- テスト完了報告書の作成
ここでは、総合テスト(システムテスト)の進め方について詳しく解説します。
①テストの計画書・仕様書を作成
システムテストでは、最初にテストの計画書・仕様書の作成が必要です。
システムテストを行う目的や範囲を明確化させて、テストのスケジュールを作成します。その後、テストの実施方法や環境、予定などを決定して合否判定の基準を設定していきます。
全ての内容が決定したら、計画書・仕様書に記載して完了です。
②テスト環境・データの準備
続いて実際の使用環境と同じ環境でテストをするために、テスト環境とテストデータを準備します。
また、テストで使用する、パソコン・ブラウザ・OSなども本番環境と同じものが必要ですので、合わせて準備する必要があります。
このような準備を行うことで、実際の使用環境で想定外の不具合や動作不良がないか確認できます。
③テストの実行
テスト環境とデータが準備できたら、実際にテストを実行します。
システムテストは、仕様書に従って手順通りに進めます。修正が完了したらトラブルの原因が除去されているか確認し、新たなトラブルが発生していないか確認するために再度テストを行います。
以上の工程を、問題が全て解決するまで繰り返し行います。
④テストの進捗管理
システムテストの進捗状況を関係者に共有するため、テストの進捗管理を行うことも大切です。
この時、システムテストによって確認した結果を全て正確に記録し、修正を行った場合はその修正箇所やトラブルの原因も全て記録します。不具合の修正や関係者への記録の共有を進めながら進捗管理をすることで、高品質なシステムを提供することができます。
⑤テスト完了報告書の作成
最後に、テスト完了報告書の作成をします。
システムテストの結果を元に、確認された不具合・修正箇所の分析・改善策の検討・修正によって影響する範囲などをテスト完了報告書にまとめます。
完成したテスト完了報告書は、関係者に共有し今後のシステム開発や品質向上に活用するため、とても重要です。
総合テスト(システムテスト)で行うテストの種類
総合テスト(システムテスト)は、構築したシステムの全ての機能や性能を確認するために行われる最後のテストですので、問題なくリリースできるよう、さまざまな種類のテストが行われます。
ここでは、総合テスト(システムテスト)で行うテストの種類をそれぞれ解説します。
機能テスト
機能テストとは、本番環境と同じ環境でシステムを利用して、コードが期待通りの処理をできているか確認するテストです。
同時に、追加・修正した機能が十分に対応しているかも確認します。
機能テストでは「顧客の要件通りに機能しない」など大きな欠陥が発見されるケースも多いため、慎重に確認することが大切です。
構成テスト(機種テスト)
構成テスト(機種テスト)とは、推奨している環境設定で問題なく画面表示や動作ができるか確認するテストです。
確認する環境設定には、主に以下のものがあります。
- LAN環境
- サーバー環境
- PCのOS
- ブラウザ
- スマートフォンのデバイス など
構築したシステムは、以上のさまざまな環境設定で使用されるため、それぞれの環境設定で問題なく使用できるか確認することが大切です。
リグレッションテスト(回帰テスト)
システムテストで確認された欠陥を修正すると、その影響で別の場所に新しい欠陥が発生する場合があります。
リグレッションテスト(回帰テスト)とは、このような新しい不具合が発生していないか確認するテストです。
全体をきちんと確認し、不具合のないシステムを発注者にお渡しするためには、必要不可欠な作業です。
シナリオテスト
シナリオテストとは、実際にユーザーが使用する流れ(シナリオ)に沿って、操作が滞りなく行えるか確認するテストです。
例えば業務システムの場合、ユーザーが行うであろう業務フローのシナリオを作成して、作成したシナリオ通りに操作を進めていきます。
最初から最後まで問題なく操作を進められれば問題ありませんが、途中で不具合が発生したり十分に操作が行えない場合は修正を行います。
性能テスト
性能テストとは、システムの処理能力・対応速度・時間・資源効率などのパフォーマンスが性能要件を満たせているか確認するテストです。
処理速度の遅いシステムを使うことはユーザーにとって大きな負担になる上、それが原因で離脱されてしまう可能性もあります。
性能テストでは、ユーザーが快適にシステムを利用できるよう、ある程度合格基準を高く設定してテストすることが大切です。
負荷テスト
負担テストとは、システムに負担がかかった状態で正しく動作するかを確認するテストです。ユーザーのアクセス傾向を想定して、以下4種類のテストを行います。
テストの種類 | テストの内容 |
---|---|
高負荷テスト | 大量のデータや大容量のデータを与えて、耐えられるか確認するテスト |
ロングランテスト(連続負荷テスト) | システムを長時間稼働させて、問題なく動作できるか確認するテスト |
ロードテスト(指定負荷テスト) | 要求された最大負荷に耐えられるか確認するテスト |
ストレステスト(限界負荷テスト) | 要求以上の負荷がかかった際のシステムの動作を確認するテスト |
例えば、大量のデータを処理する場合や多数のアクセスがあった場合、システムに大きな負担が発生します。この状態でも問題なく動作できることが確認できれば、システムダウンのリスクはかなり低いと言えるでしょう。
ユーザービリティテスト
ユーザービリティテストとは、ユーザー目線でシステムの使いやすさや問題点を確認するテストです。テストを経て、使いづらい機能や見づらい画面などが見つかればその都度改善していきます。
また、ユーザービリティテストでは、主に以下の項目を確認します。
評価項目 | 内容 |
---|---|
操作性 | どれだけスムーズに操作できるか |
学習性 | ユーザーがすぐに作業できるように簡単に学習できるか |
理解しやすさ | コンテンツの可読性や操作や画面が覚えやすいか |
エラー発生率 | システムのエラー発生率の低さやエラーから復旧まで簡単にできるか |
満足度 | ユーザーが満足して継続的に利用するか |
ユーザービリティは、エンドユーザーからの評価に直結するため、ユーザー目線で慎重に確認することが大切です。
耐障害テスト
耐障害テストとは、障害が発生した際に機能を維持できるかやデータの回復ができるかなどの確認を行うテストです。
障害発生時でも問題なく機能を維持でき、復旧まで回復速度が早ければ、最小限の損失で業務を再開することができます。
システムの運用・保守の面から考えて非常に大切なテストですので、システム開発の際は、必ず行います。
セキュリティテスト
セキュリティテストとは、システムのセキュリティが十分に保たれているか確認するテストです。
情報漏洩や不正アクセスを防止するための機能が、仕様書通りにはたらいているか確認します。このときに行うテストは、主に以下の2つです。
クロスサイト・スクリプティング | サイト同士を横断してスクリプトを混入させる方法 |
SQLインジェクション | ユーザーの入力領域からデータベースを操作する言語を送り込む方法 |
また、意図的にサイバー攻撃を行い、システムの脆弱性を見つけ出すケースもあります。
不特定多数のユーザーが使用するシステムでセキュリティトラブルが発生すると、大量の個人情報などが流出してしまうリスクがあるため、セキュリティテストはとても重要です。
総合テスト(システムテスト)で使われる技法
総合テスト(システムテスト)は、効率的に全体の機能や性能を確認するために、さまざまな技法が使われます。
ここでは、総合テスト(システムテスト)で使われる技法を主に6つ解説します。
同値分割法
同値分割法とは、同じデータを持つデータをいくつかのグループに分けて、それぞれのグループから代表的な値を選んでテストする方法のことです。
「同様の結果になる値を”同値クラス”として分類し、クラスごとに代表値をテストすれば、その結果が他のクラスでも同じ結果になる」という考えのもと行います。
少ないテスト回数で広範囲の検証が行えるため、システムテストをとても効率的に進められる技法です。
境界値分析
境界値分析とは、同値クラス同士の両端(境界)にある境界値を元にテストする技法です。
主に、入力の最小値と最大値・直前直後の値を選んでテストを行い、通常の値では発見できない境界にある問題を発見します。
また、境界値では不具合が発生しやすい傾向にあるため、境界値を元にテストを行うことでより細かな不具合を発見しやすくなります。
そのため、同値分割法と組み合わせて、広範囲にある不具合と細部の不具合を効率的に発見することが可能です。
デシジョンテーブルテスト
デシジョンテーブルテストとは、発生しうるステータスや動作、入力値などの条件を組み合わせた表「デジジョンテーブル」を活用して行うテストのことです。
それぞれの条件の組み合わせで得られる結果を表でまとめることで、条件とその結果を整理し網羅的にテストができます。
さまざまなパターンの結果を網羅するので多くの手間や時間がかかりますが、テストの漏れや抜けを防げるため、システムの品質確保を重視する場合は非常に適しています。
状態遷移テスト
状態遷移テストとは、システムの状態が変化する様子を図で示した「状態遷移図」と状態と結果が変化する条件を表でまとめた「状態遷移表」の2つを用いて行うテストです。
状態遷移図は、図形や記号などを使って状態が変化する様子を表でまとめているため、視覚的に状態の変化を確認できます。
状態遷移表は、状態と条件の組み合わせを網羅的に捉えることが可能です。
ユースケーステスト
ユースケーステストとは、ユーザーが目的を達成するまでに行うシステムの操作手順をまとめたユースケースを使用したテストのことです。
ユーザーがシステムを使用した際の操作の流れを、ユースケースドキュメントやユースケース図で表現してテストケースを設計します。
シナリオテストと似ていますが、ユースケーステストは限定的な条件下で発生する不具合を発見するために行うテストなので、シナリオテストとは違って機能要件に含まれていない操作などは確認しません。
システムテストから運用まで、BLUEWIND ASIAにお任せください
ここまで、システム開発の際に行う最後のテスト「システムテスト」について紹介してきました。
システム開発の際に行うのは、画面のデザインやコーディングだけではありません。制作したシステムのテストまで丁寧に行うことが、良いシステムを開発する上で非常に大切です。
開発費用も決して安くはありませんので「信頼できる会社に依頼したい」というお声もよく伺います。
弊社BLUEWIND ASIAは、フィリピンのセブ島でオフショア開発の支援を行っており、日本の大手企業さまとのお取引実績も50件以上ある企業です。
一般的に、オフショア開発では「海外人材が窓口になので細かなコミュニケーションを取りにくい」などの問題も散見されますが、弊社では必ず窓口に日本人の担当者を配置しておりますので、
「オフショア開発においてネックになる言語・文化の障壁なく、さらに国内で開発を行うよりも安価にプロジェクトを進行できる」と好評をいただいております。
自社の体制にオフショア開発は向いているか?予算や納期の目安は?など、小さなことからでも構いません。
日本人スタッフが丁寧にお話しを伺いますので、まずはお気軽にお問い合わせください。