システム開発では、プログラムを作成した後の試験工程は重要です。「作成したプログラムに不備はないか」「顧客の要求を満たしているか」などを確認します。試験工程においてプログラムの問題や仕様の不足を抽出することで、システムの品質を確保することが可能です。
試験工程には、さまざまな種類のテストが存在しています。それぞれには役割があり、すべてをクリアすることが必要です。問題が発覚した場合は、プログラムを修正するなどの対策を行い、再度テストを行います。また結果を成果物として残しておくことも大切です。
この記事では、システム開発における、試験の概要と役割について以下で説明します。
システム開発における試験とは?

システム開発における、試験の概要と役割について以下で説明します。
試験の概要
システム開発における試験とは、開発したシステムが要求通りの仕様・機能を満たしているかどうかを確認するために行う重要なプロセスとなります。
この各種試験工程を通じて、バグ(不具合)やエラーの発見、機能の詳細確認、そして性能検証が実施されます。試験にはいくつかの段階があり、各段階で異なる目的と試験項目が設定されます。具体的には、単体試験、結合試験、総合試験、受入試験などがありますが、それぞれの試験はシステムの異なる側面をチェックするために行われます。
試験の役割
試験の役割は、単にバグやエラーを見つけることだけではありません。開発したシステムが総合的に安定して動作することを保証し、システムを利用するユーザーにとって快適で安全な使用体験を提供するために不可欠な工程と言えるでしょう。
また、アジャイルと呼ばれる開発手法を採用したプロジェクトにおける試験は開発プロセスの各段階で行われることがあります。プロジェクト終盤ではなく、各段階で試験を実施することで、早期に問題を発見し、修正コストを抑える効果が期待できます。
アジャイル開発について詳細を知りたい方は以下の記事も合わせてご覧ください。
関連記事:アジャイル開発とウォーターフォール開発の違いとは?メリット・デメリットを解説
試験の重要性

試験の重要性に関して、以下で詳しく解説します。
品質確保と問題発見
システム開発における試験は、製品の品質を確保し、利用者に安心して使ってもらうために不可欠です。各種試験工程を通じて、システムの不具合や潜在的な問題点を早期に発見し、修正することができます。
たとえば、電子商取引のWebシステムでは、支払管理システムや決済管理システム、ユーザー登録プロセスに何かしら問題を抱えてしまうと、顧客満足度に大きな影響を与えてしまいます。ユーザーの離脱率を高めるきっかけとなってしまうでしょう。
各種試験を徹底することで、これらの問題をシステムリリース前に発見し、対処することが可能になります。
早期バグ検出の重要性
早期にバグを検出することは、改修コストと時間を節約する上で極めて重要と言えます。開発の早い段階でバグが見つかれば見つかるほど、改修にかかるコストや時間は抑えられます。
具体的には、初期の設計段階で論理的なエラーを見つけ出すことで、その後の開発工程で不必要な修正作業を未然に防止することができます。
これは、ソフトウェアの品質を保ちながら、効率的に開発を進めるための鍵となります。
システム開発における試験工程

システム開発の試験工程には、さまざまな種類があります。システムには確認すべき項目が膨大にあるため、各工程でシステムのどの部分を確認するのかを分担しているためです。
単体試験(単体テスト)
単体テストは、試験工程の中で一番規模の小さいものです。システムをプログラム単位に分け、さらにプログラムをモジュールと呼ばれる機能単位に分けて動作を確認します。モジュールに問題があった場合は、プログラムを修正し再テストを行うことが必要です。単体テストは「モジュールテスト」「ユニットテスト」と呼ばれます。
モジュールテスト
単体試験は、システムを構成する最小単位の部品やモジュールが、その単体として正常に機能するかどうかを検証する試験のことを指します。
この段階では、個々の機能が定められた仕様通りに動作するかを重点的にチェックしていきます。
例として、あるWebシステムのフォームで、ユーザーが入力したデータが適切にデータベースに格納・保存されるかどうかを試験するといったことが単体試験に該当します。
ユニットテスト
ユニットテストは単体試験の中でも特に技術的なアプローチです。各種プログラムソースコードが独立した状態で正常に動作することを検証するために、小さなテストコードを書いて実行していきます。
これにより、将来的にプログラムソースコードに変更や修正が行われた際に、新しいバグが導入されていないかを迅速に確認・検証することができます。
例えば、計算機能を持つアプリケーションの開発において、税率を計算する関数のユニットテストを実行することで、使用する関数が正確な結果を返かどうかを検証します。
すべてクリアした後は、結合テストです。
結合試験(結合テスト)
結合テストは、複数の機能を組み合わせて正しい動作が行われるかの確認です。機能の一つひとつは単体テストで確認済みのため、それらを組み合わせた場合の動きをテストします。機能と機能のインターフェースが正しいか、機能同士を結合させた場合の動きは問題ないかなどです。
インターフェースの検証
結合試験の重要な側面の一つが、異なるシステム間でのインターフェース検証です。これは、システムが外部のシステムや他のモジュールとどのように通信するかを試験することを指します。
例えば、外部APIを使用して気象庁等のWebサイトから天気情報を取得し、それをアプリケーションに表示する機能を開発する場合、APIからのデータ受け取りとそれらが適切に画面表示されるかどうかを検証する必要があります。
この一連のプロセスにより、実際の運用環境に近い条件でシステムが正常に動作するかを確認します。
部品やモジュールを組み合わせた結合試験
結合試験は、単体試験を終えた部品やモジュール、コンポーネントを適切に組み合わせて、それらが相互に連携し合い、正常に機能するかを試験するプロセスのことです。
一例を挙げますと、ショッピングカート機能と決済システムを想定した場合、ユーザーが商品を選択してショッピングカートに投入し、その後クレジットカード決済等の画面を通じて購入処理までいけるかどうかを検証する必要があります。
結合試験はシステム開発プロジェクトにおいて非常に重要な工程であり、この試験を通じて、モジュール間のデータの受け渡しや、一連のプロセスがスムーズに行われているかが分かります。
結合テストをすべてクリアした場合、次は総合テストです。
総合試験(総合テスト)
総合テストは、システム全体の動きや性能が要求された内容と一致しているかの確認です。システム全体を対象とするため、すべてのプログラムを結合させて実施します。また本番と同じか、本番にできる限り近い環境を準備することも重要です。
総合テストの実施は、プログラム開発者やシステムエンジニアが担当することはほとんどありません。システムの開発に携わっていないメンバーを割り当てる場合が多いです。
総合テストでは、要件定義で取り決めた内容通りにシステムが動くか確認します。また実際に稼働した場合と同じような環境で、同じような負荷をかけても正しく動作するか確認することも重要です。想定以上の負荷をかけた場合にどのような動きになるのか、長時間稼働させた場合でも問題が出ないか、大きいデータを扱うことが可能かどうかなどについても確認します。
結合テストをすべてクリアすると、開発会社側の試験工程は終了となります。
受け入れ試験(受け入れテスト)
受け入れ試験は、システムを発注したクライアント企業がシステムの要件や機能、性能などに問題ないかの確認です。実際にシステムを使用するユーザーが実施するため、「ユーザーテスト」と呼ばれています。
システム開発を発注した企業(クライアント)は、依頼したシステムが正しく稼働するかどうか、後になってシステムトラブルが発生しないかどうかを確認します。そのため、実際のオペレーションに沿って実施することが多いです。正常データの入力以外に、想定外のデータを入力した場合のシステムの挙動や振る舞いの確認も重要です。正常動作、異常動作の両方について確認します。
試験工程の進め方

試験工程の進め方は決まっています。計画を立てて漏れのない確認項目を作成し、テストを実施するのが流れです。計画を立てずに進めてしまうと、漏れが発生してしまう可能性があります。漏れなく確実に行うためには、計画を立てて実施していくことが大切です。
計画
試験計画では、どの時期にどれくらいの期間を使って実施していくのかなど、試験工程の全体スケジュールを決めます。また対象範囲や完了条件なども決定することが必要です。仮に完了条件が決まっていない場合、テストを実施する人によって品質がまばらになってしまうことが考えられます。このようにシステムの品質を確保するためには、計画が重要です。
結合試験や総合試験などは、開発者やテスターなど複数のメンバーが関係してきます。計画を予め決めることによって、各メンバーの予定を確保することが重要です。
設計
試験設計では、実施項目を作成する工程となります。項目は複数あってリスト化されており、「テストケース」や「テスト項目」と呼んでいます。テストケースに漏れがあってはいけません。すべての機能やすべての処理が確認できるように、網羅したものを作成する必要があります。
漏れないようにするための手法として、機能に着目して入力と出力のパターンを組み合わせたブラックボックステスト、プログラムの処理内容や構造に着目したホワイトボックステストが良く利用される方法です。ここで作成するテストケースが、システムの品質に大きく影響してきます。
実行・実行
試験の実行・実施は、作成されたケースに従って実施していくことになります。本工程では、ただ試験を行うだけではありません。試験の結果が正しかったのか、プログラムやシステムに間違いがあるのかを記録する必要があります。また試験結果の証拠として、結果を証明できるようなものも保存することが重要です。これを「エビデンス」と呼んでいます。例えば試験結果が表示された画面のキャプチャーや、プログラムが動作した結果を示す動作ログなどがエビデンスに該当します。
試験結果を保管しておくことで、プログラムやシステムの品質が担保されていることを示すことができます。また実運用に入った後に何か問題が発生した場合、エビデンスを確認することで漏れがあったのかどうかを振り返ることが可能です。今後の開発に活かせる材料になるでしょう。
プログラム修正
プログラムの修正は、試験を実施した結果、プログラムが想定通りの動きをしていない場合に修正することです。テストケースにて結果が正しくないことが分かった場合、プログラムのどの部分に問題があるのかを調査・分析する必要があります。
調査・分析の結果、原因が特定できたらプログラムの修正作業に入ります。その場合、修正する箇所がどの範囲に影響を及ぼすのかを確認することが大切となります。影響のある範囲のテストケースを再度実施する必要があるためです。影響の範囲を見誤ってしまうと、テストを実施していない処理を抱えたまま先に進むことになります。運用後に問題が出ると大きな問題に発展することも考えられるため、修正する場合の影響範囲の見極めは重要と言えるでしょう。
またプログラムの処理ではなく、システムの機能や仕様に問題のあることが発覚する場合もあります。その場合、影響範囲が大きくなることが考えられるでしょう。仕様自体を見直すと、テスト計画からやり直すことも考えられます。
修正では、試験結果がすべて想定通りになれば完了となります。
試験評価
試験評価では、試験結果を分析して漏れや不足が無いかの確認です。試験結果に「問題なし」と判定されている場合でも、エビデンスを確認し、その内容に不備がないか確認します。QAやテスターの思い込みにより、違う方法でテストを実施していることも考えられるからです。そのためにも、テスト実施時はエビデンスを残すことが大切となります。
試験報告(レポート)
試験報告は、試験結果と評価をとりまとめて上位職や契約内容によってはクライアントに報告する作業です。例えば、信頼度成長曲線などを用いて分析した結果を示すことができれば、不具合が収束していることを理解してもらえるでしょう。
信頼度成長曲線とは、縦軸に不具合件数、横軸に時間を示したグラフです。一般的には、テストの開始時には多くの不具合が発生します。その後時間が経過するにつれて、不具合が減少していく傾向です。
信頼度成長曲線で不具合が減少していない場合、まだプログラムに不具合が多く残っている状態と言えます。その場合はテストの続行を検討した方が良いでしょう。
試験の方法と成果物

試験工程では、さまざまな方法を用いて試験を実施します。多用な手法を用いることで、プログラムに潜んでいる不具合を抽出します。また、各種試験ごとに結果報告書を成果物として作成することも大切です。試験結果報告書によって、その品質を証明することができるからです。本節ではさまざまな試験方法について触れたいと思います。
ホワイトボックス試験
ホワイトボックス試験とは、プログラムの処理や内部の構造に着目した方法です。プログラムの処理分岐のルートをすべて確認し、設計通りに動作するかを確認します。またデータの流れに着目することも大切です。データの流れをチェックし、不正に書き換わっていないか、変わるべき場所で正しく変化するかを確認します。
ブラックボックス試験
ブラックボックス試験は、プログラムの処理内容や内部構造には着目せず、操作性や機能などの確認方法です。プログラムの内部処理を知らないメンバーが実施することが一般的となります。入力したデータに対する出力が、正しいかどうかなどの確認です。
プログラムの内部を知っているメンバーが行うと、プログラムに沿った形でデータ入力するため、正しい結果が得られやすくなります。逆に内部を知らないメンバーが行えば、想定外の入力データや操作が行われるため、試験項目としては最適です。
確認試験
確認試験とは、プログラムを修正した場合や変更した場合に問題が無いかの確認です。具体的には、プログラムを修正や変更したことで他の処理に影響していないか確認したり、以前修正済みの内容が再発したりしていないかを確認します。
評価試験
評価試験は、開発したシステムの性能を確認します。例えば、セキュリティ機能を確認するために不正アクセスを行ってみたり、操作性や画面の確認のしやすさなどユーザー視点で確認したりする内容です。またシステムに障害が起きた際、必要最低限の機能で稼働を継続できるかどうかも確認項目となります。
負荷試験
負荷試験とは、システムに負荷がかかったときでも正常に稼働するかどうかの確認です。システムの処理能力や耐久性のテストとなります。負荷をかけたり、長時間稼働させたり、データ容量を大きくしたりする内容です。
セキュリティ試験
セキュリティ試験とは、システムのセキュリティ対策が正しく機能するかの確認です。情報が漏洩したり、外部からの不正アクセスを受け付けたりすると多大な損害を被ることが考えられます。セキュリティ試験を実施することで、強固なシステムであることの確認が可能です。
疎通試験
疎通試験とは、ネットワークを経由してデータをやり取りする相手と繋がっているかどうかの確認です。相手と繋がっているかどうかは、こちらの要求に対して相手からの応答を受信したり、相手が要求通りに動作したりすることで確認します。
まとめ
今回は、システム開発における試験工程や具体的な成果物について紹介しました。プログラムは作成したら終わりではありません。
作成したプログラムが正しく動作するかどうか、仕様どおりの動きになっているかどうかの確認が大切です。それを実施するのが試験工程となります。試験工程はシステムの品質を確保する上で重要な位置づけとなるでしょう。
-
GeNEEの開発実績製造業、小売業、流通業、印刷・出版業など、業界別のベストプラクティスを保持しています。
弊社の開発実績にご関心のある方はこちら一部公開可能な事例を掲載中
-
GeNEEの事業内容
現在、6事業を展開しております。お客様の状況や目標に合わせて、FITするソリューションを提供いたします
6事業の詳細はこちら
-
弊社主催セミナー
最大月に1回のセミナーを開催しております。毎回30名以上の方にご出席いただいております。
テック系のセミナーにご興味ある方はこちら月に1回テック系セミナー開催中
-
オウンドメディア
GeNEE は技術に関する情報発信を積極的に行っています。 弊社のお客様だけでなく、業界全体に貢献のできる品質の高い情報提供を心掛けています。
最先端テクノロジーの情報配信中
-
GeNEEの会社概要
ビジネスxテクノロジーxデザインの三位一体で、お客様の課題を解決する独自のアプローチをご紹介
創業から15年の実績
-
GeNEEの5つの特徴
なぜGeNEEはコンサルティングやシステム開発のプロジェクト成功率が高いのか。
競合他社との違いや優位性についてまとめております。GeNEEの5つの特徴
-
GeNEEへのお問い合わせ
DX/ITコンサルティングのご依頼やシステム開発・スマホアプリ開発のご相談はこちらのフォームからお願いいたします
お問い合わせフォームはこちら
-
GeNEEの資料をダウンロード
ご希望の会社様にGeNEEのパンフレットをお送りしております。
ITベンダーとの繋がりをお探しの方は是非お気軽にリクエストください。資料ダウンロードはこちら
取締役
大阪大学工学部、大阪大学大学院情報科学研究科修了。
国内最大手IT企業の株式会社NTTデータで大手金融機関向けに債権書類電子化システム、金融規制・法規制対応システムの要件定義・インフラ設計・開発・構築・複数金融サービスのAPI連携等を手がける。その後、株式会社GeNEEの取締役に就任。
基本情報技術者試験、応用情報技術者試験、Oracle Master Platinum等多数

>
>
>
>
>
>
>
>
>
>
>
>
>
>