システムテスト(総合テスト)とは、システムやソフトウェアを構築した際に、最終確認を行うテストのことです。
ユーザーに求められている機能や性能を満たしているかどうかを見極めることが目的です。当初計画していた仕様書どおりに、システムやソフトウェアが作動することは、品質の確保、クライアントとの信頼関係構築のためにも重要です。
今回はシステムテストについて、目的や種類、流れなどを詳しく解説すると共に、注意する点やテストの自動化についても触れていきます。
関連記事:【開発前チェックリスト付】ソフトウエア・アプリ開発におけるMVP開発ガイドブック
システム開発とは、端的に説明すると業務を効率化させる仕組みの開発。
「システム開発」とひとくくりにされがちですが、その内容は「Web系」「オープン系」「汎用系」など、いくつかの種類にわかれています。
それぞれの違いについてあまり気にする必要はありませんが、各々開発で求められる知識やスキルが異なるという点についてはイメージできるのではないでしょうか。
開発するシステムによりテストの内容に違いが生じますが、ここでは一般的なシステムテストについてお伝えします。
システムテストは「単体テスト」「結合テスト」を経て、クライアントに納品される前の最終的な総合テストです。開発したシステム全体が、要件定義の仕様を全て満たしているかどうかの確認が目的です。
全ての機能がそろった状態で最終的に
・要件を満たしているか
・機能間の連携はうまくできているか
・運用・保守の現実的に問題ないか
などを総合的に評価します。
図:「開発」から「テスト」、「リリース」までの一連の流れにおける開発工程とテスト工程の対応関係を表したV字モデル
出典:https://www.qbook.jp/column/20180427_626.html
前述のとおり、要件定義で定めた仕様が網羅されているかどうかを検証することが目的です。そのため、発注者側の要求をまとめた要件定義書の内容が全て満たされているかどうかが重要な観点となります。
システムテスト以前に行われる、単体テストや結合テストでは、システムを構成する個々のプログラムに着目してテストを実施しますが、システムテストは実際に動作したときに予測される総合的な問題を検出します。リリース前や機能改修時の最後の砦となる、とても重要な意味をもつものです。
多くの場合、ハードウェア・OS・ミドルウェア・アプリケーションが幾重にも層をなして構成されており、互いに連動しています。そのため、全てのコンポーネントが必要な要件を満たすのは、非常にハードルが高いともいえます。
システムテストにはいくつか種類があります。ここでは主な5つのテストについてご紹介します。
①機能テスト
要件定義に基づき、本番環境と同じ状態で要件を満たしているか否かを確認するテスト。機能要件どおりにシステムが動作するかの確認はもちろん、追加・修正した機能も漏れなく対応していることをチェックします。
②性能テスト
テスト対象の性能要件に基づき、システムのパフォーマンス(時間効率・資源効率)を評価します。
③ユーザビリティテスト
製品の操作性・学習性・見やすさ・理解しやすさ・満足度といったユーザーの求める製品であるかどうかを確認。「使い方がわかりやすく誰でも簡単に使える」ことがポイントです。
④セキュリティテスト
仕様書に明記されている機能が、仕様書通り作動してセキュリティが保たれているかを確認するテスト。サーバーやシステム、Webサイトの不具合や欠陥を見つけ出します。
この欠陥を見落とすと、サイバー攻撃や情報漏洩、システムダウンなど企業の社会的信用性にも関わります。万が一、欠陥(バグ)が見つかった場合は、すぐに対策を講じる必要があります。
⑤回帰テスト
システムの改修をした場合、それに伴って変更していない箇所に新たな不具合が発生していないか確認するテスト。変更が加わるたびに、機能テスト・非機能テストを実行して確認する必要があります。
関連記事:ソフトウェア開発の見積りで確認すべきポイントは?算出方法も併せて解説
システムテストでの進捗の遅れは、製品リリースにも影響を与え、プロジェクト全体の進捗に関わります。そこでシステムテストは、一連の工程を計画的に定められた期間で行うことが重要です。
ここでは、システムテストの一般的な流れについてご紹介します。
全体の概要をまとめて「計画書」を作成。
何のためにテストを行うのか、目的や対象範囲、テスト環境、実施方法、予定など全体の方向性をまとめて明記します。
テストを実施する環境は、原則として本番と同様。
データも本番と同じものを用意し、想定外の不具合や動作がないかをチェックします。
実際に行うシステムテストの具体的な項目を作成。
誰がどのテストを行うか、テストをクリアする評価基準等も決定しておきます。
テストの実施手順や内容、実施用のテストデータを作成。
誰が同じ水準で実行できるよう、具体的で再現性のある記述をしていきます。
テストの自動化を視野にいれている場合は、この工程でテストスクリプトの作成も実施します。
準備したテスト環境下で、実行します。テストケースに基づき操作し、期待値の確認と画面キャプチャや結果を確認できるものを取得。テスト工程で確認した結果は、全て記録に残します。
システムテスト全体の計画がうまくいかなかったり、機能しなかったりした場合、インシデント報告(欠陥報告)やその動作原因を探り、特定します。システムの修正が必要となったときは、追加修正の影響範囲となるテストケースをもう一度行います。
システムテストをスムーズに行うことは、プロジェクトの進捗に関わります。そのため、ある程度目安となる期間があるので参考にしてみてください。
・単体テスト:約2週間~1ヶ月
ひとつずつプログラムに不具合がないかを確認するのが単体テスト。内容によりますが、およそ2週間から1ヶ月で行います。
・結合テスト:約2週間
単体テストの後、それぞれのプログラムの連携を確認する「結合テスト」。複数のプログラムの一連の動きをチェックします。
・システムテスト(総合テスト):約1週間
それぞれの動作確認が完了したら「システムテスト」に移ります。実際の使用環境とほぼ同じ条件で実施。
・運用テスト:約1週間
最終段階としてクライアント側の作業環境で正しく動くかを確認する「運用テスト」。動作の確認はもちろん、デザインや使いやすさなども確認します。
これら全てのテストをクリアしたら、システム移行が行われ納品となります。
なお、テストの期間はシステムの規模や会社によって異なりますので、事前にしっかり情報を集めることが重要です。
関連記事:ソフトウェア開発の流れとは?ソフトウェア開発の手法も解説
実際にテストを行う場合に注意しておきたい点について以下にご紹介します。
機能によっては、作成する機能以外にも作らなくてはいけないものもあります。
・テスト用モジュール
・テストデータを作成するためのツール
・テスト結果検証ツール
本来、要件定義や基本設計の段階で洗い出すものですが、検討が漏れる可能性もあります。テスト実施の直前にツールが必要だと気づいたのでは遅すぎます。
テスト計画の段階であれば、まだスケジュールにゆとりがある場合も多いので、事前に必要なツールについては今一度しっかり検討しておくとよいでしょう。
規模の大きなプロジェクトでは不具合(バグ)が放置されてしまう可能性が高くなります。
これは、不具合管理(課題管理)がうまく機能していないことに起因します。
不具合管理台帳への記載漏れがないように徹底すること、記載した不具合は最後までフォローする体制が重要です。
Webサイトは「Webサーバー」と「ブラウザ」を使用します。
HTMLページ、TCP/IP通信、インターネット接続、実行されるアプリケーション(Webページ側・サーバー側)、ファイアウォールなど、相互作用を考慮する必要があります。
また、Web系にはさまざまなバージョンのサーバーとブラウザがあります。それぞれに接続速度の変動、急速なアップデート、複数の標準とプロトコルの点など、重要な違いも含まれています。
市場の動きに伴いスピードと変化が激しいため、システムテストの最終結果は継続的な取り組みになる可能性があるでしょう。
関連記事:代表的なソフトウェアの開発方法4つ!トレンドの開発方法も解説
システム開発の中でもWeb系の開発は、不特定多数の外部ユーザーのためのシステムを開発するもの。
そのため、常に変化するWebの世界で快適な閲覧環境を構築していかなければなりません。
開発テストでは「テストケースの設計」「テストの実施と結果の確認」「テストの進捗管理」「レポートの作成」などの作業も含まれ、非常に煩雑なものになります。
そこで、これらの作業の一部、場合によっては全てをシステムが制御するのが「テスト自動化」です。
テスト自動化によるメリットは次の3つ。
テストの自動化により問題点や不具合を早期発見でき、全体の時間短縮、全体の効率があがるでしょう。人的リソース不足にも対応でき、手動では不可能な大規模なテストや大量データを扱えます。
また、人による作業はどうしてもミスが発生してしまうもの。自動化を適用すれば、システムが正誤を判断し、人為的エラーを防ぐことが可能です。
一方で、自動化によりデメリットは次の3つ。
テストを自動化するとコスト削減につながると勘違いしている例も少なくありません。
初期コストは、テストコードの作成やツールを使いこなすための学習コストなど、手動のケースに比べて高くなりがちです。コスト削減だけを目的にすると、逆にコストの肥大につながる可能性も。
また注意したいのは、自動化できるのは、すでにテスト設計済みのテスト内容のみという点。テスト設計とテスト実行を並行して行う探索的テストなどは自動化できません。
自動化の際は、自動化に向いているテスト・向かないテストの見極めがポイントになるでしょう。
DeFactoryには、事業目線でプロダクト開発を進められるマネージャーや、経験豊富なエンジニアが集まっています。
プロダクト開発における計画(要件定義)までであれば最短5営業日で、計画〜実装〜テストのサイクルであれば最短14営業日で行なうことが可能です。
開発からテストまで、高品質なプロダクトをスピーディーに開発したいとお考えの場合は、ぜひDeFactoryにお問い合わせください。
システムテストは、開発側の最終テストということもあり、検証する観点も多くなります。
機能面ではない部分への検証テストも多いため、苦手意識をもつエンジニアも多いもの。システムテストを実施する際には、機能要件のみならず非機能要件にもしっかり対応できるテストを検討していきましょう。
DeFactoryでは、アイディア着想、ユーザーヒアリング、テストマーケティング、アジャイル・MVP開発と、プロダクト開発における立ち上げ支援を全力サポートいたします。
また、経験豊富なエンジニアと事業開発経験者で、開発だけでなく事業設計から「一気通貫」した伴走を行います。
事業開発や立ち上げを検討しているご担当者様がいらっしゃいましたら、問い合わせページから資料請求や無料相談などお気軽にご連絡くださいませ。
【DeFactoryの3つの特徴】
・最短14営業日程度で納品
・事業構築力、スピード、高品質を実現する体制