目次
システム開発では、プログラムを作成した後の試験工程は重要です。「作成したプログラムに不備はないか」「顧客の要求を満たしているか」などを確認します。試験工程においてプログラムの問題や仕様の不足を抽出することで、システムの品質を確保することが可能です。
試験工程には、さまざまな種類のテストが存在しています。それぞれには役割があり、すべてをクリアすることが必要です。問題が発覚した場合は、プログラムを修正するなどの対策を行い、再度テストを行います。また結果を成果物として残しておくことも大切です。
この記事では、システム開発における試験工程や具体的な成果物について紹介します。
システム開発における試験工程とは?
システム開発の試験工程には、さまざまな種類があります。システムには確認すべき項目が膨大にあるため、各工程でシステムのどの部分を確認するのかを分担しているためです。
単体試験(単体テスト)
単体テストは、試験工程の中で一番規模の小さいものです。システムをプログラム単位に分け、さらにプログラムをモジュールと呼ばれる機能単位に分けて動作を確認します。モジュールに問題があった場合は、プログラムを修正し再テストを行うことが必要です。単体テストは「モジュールテスト」「ユニットテスト」と呼ばれます。
すべてクリアした後は、結合テストです。
結合試験(結合テスト)
結合テストは、複数の機能を組み合わせて正しい動作が行われるかの確認です。機能の一つひとつは単体テストで確認済みのため、それらを組み合わせた場合の動きをテストします。機能と機能のインターフェースが正しいか、機能同士を結合させた場合の動きは問題ないかなどです。結合テストは「統合テスト」「連結テスト」と呼ばれます。
結合テストをすべてクリアした場合、次は総合テストです。
総合試験(総合テスト)
総合テストは、システム全体の動きや性能が要求された内容と一致しているかの確認です。システム全体を対象とするため、すべてのプログラムを結合させて実施します。また本番と同じか、本番にできる限り近い環境を準備することも重要です。
総合テストの実施は、プログラム開発者やシステムエンジニアが担当することはほとんどありません。システムの開発に携わっていないメンバーを割り当てる場合が多いです。
総合テストでは、要件定義で取り決めた内容通りにシステムが動くか確認します。また実際に稼働した場合と同じような環境で、同じような負荷をかけても正しく動作するか確認することも重要です。想定以上の負荷をかけた場合にどのような動きになるのか、長時間稼働させた場合でも問題が出ないか、大きいデータを扱うことが可能かどうかなどについても確認します。
結合テストをすべてクリアすると、開発会社側の試験工程は終了となります。
受け入れ試験(受け入れテスト)
受け入れ試験は、システムを発注したクライアント企業がシステムの要件や機能、性能などに問題ないかの確認です。実際にシステムを使用するユーザーが実施するため、「ユーザーテスト」と呼ばれています。
システム開発を発注した企業(クライアント)は、依頼したシステムが正しく稼働するかどうか、後になってシステムトラブルが発生しないかどうかを確認します。そのため、実際のオペレーションに沿って実施することが多いです。正常データの入力以外に、想定外のデータを入力した場合のシステムの挙動や振る舞いの確認も重要です。正常動作、異常動作の両方について確認します。
試験工程の進め方
試験工程の進め方は決まっています。計画を立てて漏れのない確認項目を作成し、テストを実施するのが流れです。計画を立てずに進めてしまうと、漏れが発生してしまう可能性があります。漏れなく確実に行うためには、計画を立てて実施していくことが大切です。
計画
試験計画では、どの時期にどれくらいの期間を使って実施していくのかなど、試験工程の全体スケジュールを決めます。また対象範囲や完了条件なども決定することが必要です。仮に完了条件が決まっていない場合、テストを実施する人によって品質がまばらになってしまうことが考えられます。このようにシステムの品質を確保するためには、計画が重要です。
結合試験や総合試験などは、開発者やテスターなど複数のメンバーが関係してきます。計画を予め決めることによって、各メンバーの予定を確保することが重要です。
設計
試験設計では、実施項目を作成する工程となります。項目は複数あってリスト化されており、「テストケース」や「テスト項目」と呼んでいます。テストケースに漏れがあってはいけません。すべての機能やすべての処理が確認できるように、網羅したものを作成する必要があります。
漏れないようにするための手法として、機能に着目して入力と出力のパターンを組み合わせたブラックボックステスト、プログラムの処理内容や構造に着目したホワイトボックステストが良く利用される方法です。ここで作成するテストケースが、システムの品質に大きく影響してきます。
実行・実行
試験の実行・実施は、作成されたケースに従って実施していくことになります。本工程では、ただ試験を行うだけではありません。試験の結果が正しかったのか、プログラムやシステムに間違いがあるのかを記録する必要があります。また試験結果の証拠として、結果を証明できるようなものも保存することが重要です。これを「エビデンス」と呼んでいます。例えば試験結果が表示された画面のキャプチャーや、プログラムが動作した結果を示す動作ログなどがエビデンスに該当します。
試験結果を保管しておくことで、プログラムやシステムの品質が担保されていることを示すことができます。また実運用に入った後に何か問題が発生した場合、エビデンスを確認することで漏れがあったのかどうかを振り返ることが可能です。今後の開発に活かせる材料になるでしょう。
プログラム修正
プログラムの修正は、試験を実施した結果、プログラムが想定通りの動きをしていない場合に修正することです。テストケースにて結果が正しくないことが分かった場合、プログラムのどの部分に問題があるのかを調査・分析する必要があります。
調査・分析の結果、原因が特定できたらプログラムの修正作業に入ります。その場合、修正する箇所がどの範囲に影響を及ぼすのかを確認することが大切となります。影響のある範囲のテストケースを再度実施する必要があるためです。影響の範囲を見誤ってしまうと、テストを実施していない処理を抱えたまま先に進むことになります。運用後に問題が出ると大きな問題に発展することも考えられるため、修正する場合の影響範囲の見極めは重要と言えるでしょう。
またプログラムの処理ではなく、システムの機能や仕様に問題のあることが発覚する場合もあります。その場合、影響範囲が大きくなることが考えられるでしょう。仕様自体を見直すと、テスト計画からやり直すことも考えられます。
修正では、試験結果がすべて想定通りになれば完了となります。
試験評価
試験評価では、試験結果を分析して漏れや不足が無いかの確認です。試験結果に「問題なし」と判定されている場合でも、エビデンスを確認し、その内容に不備がないか確認します。QAやテスターの思い込みにより、違う方法でテストを実施していることも考えられるからです。そのためにも、テスト実施時はエビデンスを残すことが大切となります。
試験報告(レポート)
試験報告は、試験結果と評価をとりまとめて上位職や契約内容によってはクライアントに報告する作業です。例えば、信頼度成長曲線などを用いて分析した結果を示すことができれば、不具合が収束していることを理解してもらえるでしょう。
信頼度成長曲線とは、縦軸に不具合件数、横軸に時間を示したグラフです。一般的には、テストの開始時には多くの不具合が発生します。その後時間が経過するにつれて、不具合が減少していく傾向です。
信頼度成長曲線で不具合が減少していない場合、まだプログラムに不具合が多く残っている状態と言えます。その場合はテストの続行を検討した方が良いでしょう。
試験の方法と成果物
試験工程では、さまざまな方法を用いて試験を実施します。多用な手法を用いることで、プログラムに潜んでいる不具合を抽出します。また、各種試験ごとに結果報告書を成果物として作成することも大切です。試験結果報告書によって、その品質を証明することができるからです。本節ではさまざまな試験方法について触れたいと思います。
ホワイトボックス試験
ホワイトボックス試験とは、プログラムの処理や内部の構造に着目した方法です。プログラムの処理分岐のルートをすべて確認し、設計通りに動作するかを確認します。またデータの流れに着目することも大切です。データの流れをチェックし、不正に書き換わっていないか、変わるべき場所で正しく変化するかを確認します。
ブラックボックス試験
ブラックボックス試験は、プログラムの処理内容や内部構造には着目せず、操作性や機能などの確認方法です。プログラムの内部処理を知らないメンバーが実施することが一般的となります。入力したデータに対する出力が、正しいかどうかなどの確認です。
プログラムの内部を知っているメンバーが行うと、プログラムに沿った形でデータ入力するため、正しい結果が得られやすくなります。逆に内部を知らないメンバーが行えば、想定外の入力データや操作が行われるため、試験項目としては最適です。
確認試験
確認試験とは、プログラムを修正した場合や変更した場合に問題が無いかの確認です。具体的には、プログラムを修正や変更したことで他の処理に影響していないか確認したり、以前修正済みの内容が再発したりしていないかを確認します。
評価試験
評価試験は、開発したシステムの性能を確認します。例えば、セキュリティ機能を確認するために不正アクセスを行ってみたり、操作性や画面の確認のしやすさなどユーザー視点で確認したりする内容です。またシステムに障害が起きた際、必要最低限の機能で稼働を継続できるかどうかも確認項目となります。
負荷試験
負荷試験とは、システムに負荷がかかったときでも正常に稼働するかどうかの確認です。システムの処理能力や耐久性のテストとなります。負荷をかけたり、長時間稼働させたり、データ容量を大きくしたりする内容です。
セキュリティ試験
セキュリティ試験とは、システムのセキュリティ対策が正しく機能するかの確認です。情報が漏洩したり、外部からの不正アクセスを受け付けたりすると多大な損害を被ることが考えられます。セキュリティ試験を実施することで、強固なシステムであることの確認が可能です。
疎通試験
疎通試験とは、ネットワークを経由してデータをやり取りする相手と繋がっているかどうかの確認です。相手と繋がっているかどうかは、こちらの要求に対して相手からの応答を受信したり、相手が要求通りに動作したりすることで確認します。
まとめ
今回は、システム開発における試験工程や具体的な成果物について紹介しました。プログラムは作成したら終わりではありません。作成したプログラムが正しく動作するかどうか、仕様どおりの動きになっているかどうかの確認が大切です。それを実施するのが試験工程となります。試験工程はシステムの品質を確保する上で重要な位置づけとなるでしょう。
—————————————————————————————————————
システム開発、スマホアプリ開発、MVP開発、新規事業立ち上げ、DX化の推進でお困りではありませんか?
日本全国には開発会社が無数にありますが、Webサービスやアプリサービスのスケール(規模拡大)を実現するビジネス推進力やシステムの堅牢性、可用性を意識した設計力・技術力を合わせ持つ会社は、全国で見ても多くはなく、弊社は数少ないその一つ。お客様のご要望通りに開発することを良しとせず、お客様のビジネス全体にとって最適な解を模索し、ご提案ができるビジネス×テック(技術力)×デザインの三位一体型のシステム開発/アプリ開発会社です。ITやDX全般に関して、何かお困りのことがございましたら下記の「GeNEEへのお問合せ」フォームからお気軽にご連絡いただけたらと思います。
—————————————————————————————————————