システム開発のテストとは?工程と手法を詳しく解説
2021.05.20
システムを開発したときには、依頼元の要望に沿ったシステムが構築できたかどうかを確かめるためにも、テストを行う必要があります。テストの重要性や、実際にどのようなテストが行われるのかを知っておくと、内容を納得したうえで発注できます。今回は、システム開発におけるテスト工程の流れと、5つのテスト手法について解説します。
テスト工程の重要性
システムテストの重要性は、不具合やバグを防止し、損害を発生させないためにあります。
たとえば、お客様向けにシステム開発をする場合、システムの不具合が発生してお客様に不利益を生じさせてしまえば、損害賠償の支払いが必要になることがあります。また、企業のブランドイメージや、信頼の低下にもつながりかねません。
社内システム開発の場合でも、不具合によって業務が停止すれば、数千万円の損失が発生するおそれがあります。
システムの種類によっては、停止してしまうと人命に関わるものもあります 。システムテストは、すべてのプロジェクトの中でもっとも長い時間をかけ、さまざまな観点から何度も行う必要があります。
主なテストの流れ
テストは、システムを構築する各工程の作業が終わったら、その工程に合った内容で行うことが必要です。それぞれのテスト内容はどのようになっているのでしょうか。
単体テスト
単体テストとは、システム工程の最初に行うテストです。「ユニットテスト」「モジュールテスト」などと呼ばれることもあります。
システムは小さなプログラムが複合してできているため、単体テストはそれぞれのプログラムが設計通りに動作するか確認し、不具合があれば取り除くために行われます。
機能や操作性に問題がないかをチェックし終えたら、次のテストに進みます。
結合テスト
結語テストとは、単体テストで問題なかったプログラムを連携させ、正常に動作するかをチェックするテストです。「連結試験」「結合試験」「統合試験」などと呼ぶ場合もあります。作成した小さなプログラム同士を組み合わせて、データの受け渡しがうまくいくか、画面の切り替わりがスムーズにできるかなどを確認します。
システムテスト
結合テストを行ってシステムの修正が完了し、連携に問題ないことを確認したら、全体のテストへと進みます。
すべてのプログラムとハードウェアを稼働させ、想定される処理を行い、速度や耐久性などを確認します。ここでの目的は、求められる要件や定義のとおりに機能するかどうかをチェックすることです。
運用テスト
システムテストをクリアしたのち、実際にシステムを使う発注者(ユーザー)が操作し、稼働させたうえで最終確認を行います。このテストで不具合がなければ、実務での運用が始まります。
ホワイトボックステスト
ホワイトボックステストは、内部構造を理解しているシステム開発者が、単体テストで行う手法です。
これは、構造どおりに動作するかを確認するもので、システムの論理構造を解析しながら実行が完了できるかどうかをテストします。構造のテストが目的であるため、それ以外のチェックはできません。
ホワイトボックステストでは、次の技法を用いることがあります。
制御フローテスト
「制御フロー」とは、処理を一つ行うことでプログラムがどのように動くかを図にしたものです。
本来は、すべての処理を行い、システムが正常に動作するかを確かめます。しかし、制御フローの数は膨大なため、一定の基準に該当するシステムのみを確かめるのが主流です。
データフローテスト
「データフロー」とは、データや変数がどのようなライフサイクル(定義、使用、消滅)を通して処理されていくかという流れのことです。データフローが、どこでどのように行われるかを検証するテストが、データフローテストです。
ブラックボックステスト
ブラックボックステストでは、ホワイトボックステストとは反対に、内部構造に着目しません。構造を把握していない第三者が、結合テストで行うものです。システムの概要は考慮せずに、機能確認および操作性、性能などを確認していきます。第三者がテストを行うので、客観的に結果を解析できます。
ブラックボックステストでは、次の技法を用いることがあります
同値分析
同値分析は、条件をいくつか指定し、その中から代表値を出してテストする技法であり、テスト技法の基礎とされています。
境界値分析
ある範囲の「未満」や「以下」などの境界部分を分析し、不具合を防ぐために検証を行います。
確認テスト
システムの変更や修正をしたのち、バグや不具合が起きないかを確かめるテストです。
このテストには、リグレッションテストという技法が取られることがあります。リグレッションテスは、システムの修正後に、他のシステムに影響が起きていないかを確認するテストです。システムが複雑になると、修正がしづらくなっていくため、早い段階でこのテストを行うと不具合を見つけやすくなります。
評価テスト
評価テストは、システムの性能全般を確かめるテストです。次のようなチェック事項があります。
セキュリティテスト
セキュリティ機能が正常にはたらき、不正アクセスや情報漏えいなどの防止を仕様書どおりに行えるかを確認します。
ユーザビリティテスト
ユーザーがシステムを操作したときの「使いやすさ」「見やすさ」などを確認します。
障害許容性テスト
なんらかの障害が発生したときに、必要最低限の機能が動作するかを確認します。
負荷テスト
負荷テストは、開発工程における最終段階で行われるテストです。主に次のようなチェック項目があります。
性能テスト
システムの処理能力が仕様を満たしているかを確認します。条件ごとに反応時間を計り、最適化を行います。
ロングランテスト
システムを連続稼働させ、停止したり機能が落ちたりしないかを検証します。
ストレステスト
アクセスを集中させ、システムに高い負荷がかかった状態でも正常に動作するかを確認します。
ロードテスト
通常動作時の負荷と、ピーク時にかかると予想される負荷のそれぞれをかけ、システムの耐久性や性能を確認します。
キャパシティテスト
データ量が増加したときの行動や対処法などを確認し、システムの増強法を検討するためのテストです。
依頼先選びは重要
ここまで紹介したように、テスト工程は多岐にわたります。個々の工程を徹底して実施することで、理想のシステムが構築でき、運用開始後の不具合やバグをできる限り防ぐことができるのです。
そのためには、要望を的確に取り入れ、テストを行うときに密なコミュニケーションを取れる企業に依頼したいものです。
テストをしっかり行ってくれる依頼先探しなら
システム開発を依頼した会社が、テストをしっかり行ってくれるのか不安だと感じる方は、ぜひReady Crew(レディクル)にご相談ください。
Ready Crew(レディクル)は、完全無料のビジネスマッチングサービスです。
お客様のお悩みを丁寧に伺い、要件定義をサポート。 ヒアリングした内容をもとに、問題解決に最適な企業をご紹介します。
システムテストの結果は、その後の企業の評判を左右することもあるほど、重要な位置づけとなっています。確実にシステムテストを完了させ、業務に支障をきたすことのないよう、最後まで気を抜かないように業務を行っていきましょう。