単体テストと総合テストの違いとは?

初めまして!

株式会社アイスリーデザイン エンジニアリング部の芹田です。

今回は、システム開発でよく耳にする「単体テストと総合テストの違い」について詳しく解説してみたいと思います。

みなさんも馴染みのあるものを例にすることで、この記事を通して少しでもイメージを掴んでいただくことができればいいなと考えております!

※ アイスリーデザインでは、JSTQBに沿った考え方を採用しているため、単体テストは「コンポーネントテスト」、総合テストは「システムテスト」として記載していきます。

コンポーネントテストとシステムテスト

システム開発において、品質を確保するための重要なプロセスの1つがテストです。テストには様々な種類がありますが、その中でも「コンポーネントテスト」と「システムテスト」は、開発プロセスの異なる段階で行われ、それぞれ異なる目的を持っています。この2つのテストを効果的に活用することで、システム全体の品質と信頼性を大幅に向上させることができます。

本記事では、システム開発におけるコンポーネントテストとシステムテストの違いについて詳しく解説します。

コンポーネントテストは、個々のモジュールやコンポーネントが正しく動作するかを確認するために行われるもので、開発の初期段階で実施されます。一方、システムテストは、全体のシステムが一貫して動作するかを確認するために行われるもので、開発の最終段階で実施されます。このように、同じ「テスト」という言葉でも、テストの対象や目的、実施タイミングは大きく異なります。

具体的な事例や実施方法を交えながら説明していきますので、これら2つのテストの違いの明確な理解につなげていただければと思います。適切に理解し、適切に実施することで、システムの品質を向上させることができるでしょう。まずは、それぞれのテストの詳細と、その実施方法について見ていきましょう。

コンポーネントテストとは

テストの第一段階である「コンポーネントテスト」はどのような目的があるのでしょうか。

コンポーネントテストとは、本記事のタイトルにもなっている「単体テスト」や「ユニットテスト」などとも呼ばれ、独立してテストできる最小単位の機能ごとに実施するテストのことになります。

エクセルやスプレッドシートなどの表計算ソフトを例にすると、テスト対象となるのは1つのセルの中に入った関数のイメージです。

例えば、「SUM関数」であれば、

  • 合計値が出力されるか
  • 合計すべき範囲は正しいか

などがコンポーネントテストの内容です。

システム開発の中でのコンポーネントテストでは、関数や小さなコードの塊であるメソッドやクラス、モジュールなどを1つの単位としてテストしていきます。

コンポーネントテストの目的は、システムを構成する各コンポーネントが独立して正しく動作することを確認することです。このプロセスは、システム全体の品質と信頼性を高めるための基本的なステップです。

この工程は、エンジニアたちがコーディングする中で実施するテストになるので、

コンポーネントテストは担当エンジニアが実施します。

システムテストとは

では次に、システムテストとはどんなものなのかを説明します。

システムテストとは、本記事のタイトルにもなっている「総合テスト」などとも呼ばれ、ソフトウェア全体を通して、全体としてどのように機能するかを確認するテストのことです。

表計算ソフトを例にした場合のシステムテストは、表計算ソフトを使用した資料が正しく動作し、ユーザーにとって使いやすく信頼性が高いことを確認するために行われます。

よくある表計算ソフトを使った資料の例をあげると、

  • 月次売上や販管費などの詳細データ
  • 詳細データの集計部分
  • 過去の統計による季節変動値
  • 売上着地見込や予測値
  • 実績と予測のGAP

など、たくさんの機能を使った計算結果を集計し、パッと見て理解しやすいグラフなどに成形して出力しているものがあったとします。

この資料の内容が正しいのかを確認するための観点は、

  • グラフには、どのデータが反映されているのか?
  • データが欠落した箇所はないか?
  • パッと見ておかしなデータはないか?
  • 売上着地見込の考え方はあっているか?
  • 季節変動値の考え方はあっているか?
  • 関連のある数字を変更すると、正しくグラフにも反映されるか?

などがあります。

システム開発の中での総合テストも似ているところがあり、

システムテストの担当者は、実際に開発したエンジニア以外のテスト担当者が行います。

目的は、ソフトウェア全体にわたる機能や、構成要素に焦点を当てて、実際に使われるであろうパターンや手順で、全体としてどのように機能するかを検証することです。

まとめ

いかがでしたでしょうか?

システム開発の実際のプロジェクトでは、本記事にも記載したような基本的な工程を経て開発を進めていきます。

一方で、工程は目的を達成するための手法の一つであり、工程自体がゴールになってはならないと考えています。

だからこそ、それぞれの工程の目的をしっかりと理解し、必要な工程やコストを必要な分だけ適切に投資していくことが大事なのではないでしょうか。

私はシステム開発をする前は、バックオフィスで管理部門なども担当していたため、そういった方々にもわかりやすいように具体例を入れてイメージのしやすさを意識して記載してみましたが、イメージを掴むことはできましたでしょうか?

また、本文では、テスト工程は4つあるとお伝えしましたが、今回は「単体テストと総合テスト」に絞って記載しました。

次週は「受け入れテスト(UAT)」について投稿していこうと思っておりますので、ぜひご覧いただけますと幸いです!

(関連記事投稿されました!こちらからどうぞ!)

最後まで読んでいただき、ありがとうございました!

さいごに

アイスリーデザインではデザイナーとエンジニアが連携し、お客様の要望に合わせた最適な開発手法を用い、戦略設計からデザイン、開発、グロースまで支援いたします。システムやプロダクトの開発をご検討中の方はぜひこちらからご相談ください。

開発パートナーをお探しですか?お気軽にご相談ください!

ABOUT US
Yosuke_Serita
テレビ制作会社、通信業界、人材業界、IT業界にて、営業や管理、育成と幅広い業界と業種を経験。 QAに強いPMを目指し、2023年冬から株式会社アイスリーデザインにジョイン。 DXパートナーとして、品質の観点からお客様の課題解決プロジェクトを推進できるよう日々研究中。