ITスキル システム開発講座

2-14 システム開発のテスト全体像とは?工程・種類を分かり易く解説

ITスキル

システム開発におけるテストってどんなのがあるの?

どんな観点が違うの?

と言った疑問に答えます。

この記事を読むことで、システム開発におけるテスト工程・種類の全体像を理解できます。記事前半で、システム開発の重要なポイントを共有します。記事後半では、システム開発の様々なテストとは?を分かり易く解説していきます。

✔記事の信ぴょう性

SE歴10年以上。現在、大手EC運営企業の管理職 /社内SE講師として活躍中。15か国以上へのグローバルシステム開発・導入等幅広く開発を経験。

講師として体系化したコンテンツの一部をお届けする事で、社内SE・情シスの方にお役に立てればと願っています。

スポンサーリンク

システム開発、テストの目的とは?

システム開発の目的は、「様々なテストを通してソフトウェアの品質を確認しユーザー・お客様にシステムを提供する事」です。

間違っていけないのは、

システム開発におけるテストは以下を目的にしない事です。

・バグを出さない事が目的ではない
・機能改善箇所を洗い出す目的ではない

事です。

バグを出さない事が目的ではないとは?

あまり気持ち的にはうれしくないかもしれませんが、テストで見つかったバグは喜ぶべき事です。

バグを見つけ、解消する事は、より高い品質の製品をユーザー・お客様に提供する事に繋がります。

機能改善箇所を洗い出す目的ではないとは?

非所に重要な観点です。

テストはあくまでも定められた要求・条件・前提を確認するための工程です。

新しい要望・アイディアを思いついて仕様を変える場ではありません。

この当たり前の事を抑えるだけで非常に多くのシステム開発の追加要件への対応・それに伴うストレスも変わってきます。

決められた約束事以外の事は、変更になりますので費用も掛かりますし、モノによっては当然納期の調整が必要です。

重要観点のおさらい:

システム開発の各テストの目的は、決められた条件にもとづき品質を確認する工程
決して、新しい要件を出す・仕様を変更する工程ではない
仕様の変更をしたらコストと納期も変更が発生する場合もある

システム開発の「プロセス」と「テスト工程」の関係性

システム開発の各工程では、事前に定められた要件・仕様をテストしていきます

何のテストでどの仕様(決めごと)を確認するのか理解が必要です。

システム開発におけるテストの位置づけ

システム開発が上手くなる為に、プロセス全体概要を理解から始めよう】の記事でシステム開発における、以下の全体プロセスを解説しました。

以前ご紹介したシステム開発のプロセスを使いながら、
・どの工程で決めた、
・何を、
・どのテストで確認していくのか?

を、解説していきます。

システム開発におけるテストの種類とは?

システム開発のそれぞれの工程とテスト工程における関連を以下で図解しました。

一般的に、このモデルをV字モデルと言われています。

Vモデルとは、IT製品開発の手法の一種。ドイツ政府と軍関係のプロジェクトで標準として採用されている。また、一般に利用可能であるため、様々な企業でも使われている。プロジェクトマネジメント手法としては、PRINCE2に匹敵する。また、システム開発やソフトウェア開発の手法としても使われている。

WIKI引用

V字モデルの左辺で定義した仕様を、右側の各テスト工程テストを実施し、品質を確認していきます。

テストの工程は以下の8つです。

  • 単体テスト(UT:Unit Test)
  • 内部結合テスト
  • 外部結合テスト(CT:Combined Test)
  • システムテスト(ST:System Test)
  • インフラテスト
  • 性能テスト
  • 運用テスト
  • 受入テスト(UAT: User Acceptance Test)

受入テスト(UAT: User Acceptance Test)とは?

インプット:業務要件

業務要件にもとづき、ユーザーがシステムの受け入れを実施するテストになります。UAT(User Acceptance test)と呼ぶ場合もあります。

システムテストとは観点が違い、あくまで業務目線のテストになります。システム的には同じ動作なので不要と判断したテストでも、業務のオペレーション・ビジネスインパクトを鑑みテストシナリオを構築し実施します。

運用テストとは?

実際の運用を想定したテストを実施します。ちょっとイメージがわきずらいかもしれませんが。例えば、ユーザー登録機能があり、受付はメールで実施し、ファイルを運用の人が作成しアップっロードするといった一連の流れのテストを様々な運用想定に基づきテストを実施します。

忘れがちで、、、非常に重要なテストでもあります。

性能テストとは?

非機能要件定義に基づき、定められた性能が担保できているかを確認します。

インフラテストとは?

クラウド環境の利用が活発になったとはいえ、忘れていけないのがインフラテストです。ネットワークの設定からDBの設定値の値が予定通り設定されているかを確認していきます。

システムテスト(ST:System Test)とは?

社内SEにて実施するテストになります。System Testを略してSTと呼ばれる場合もあります。システム目線で、システム機能×データパターン×業務分類等の組み合わせでかなり網羅的にテストを実施します。

上記でお伝えした、受入テストとは通常観点、見るべき項目が違います。一方、残念ながら、テストを実施するSEの認識の弱さや、業務ユーザーの受入テスト理解力不足により,本来はSTとUATは違う目的で行うべき所を混同していたりします。

システムテストの進め方に関しては、以下の記事を参考にしてください。

2-15 現役社内SEが教えるシステムテストで抑えるべき観点・項目とは?
システムテストって何から準備すればいいの?上手く進めるためにはどうしたらいいの?といった疑問に答えます。記事前半で、システムテストの位置づけを解説します。記事後半では、システム開発の王道のプロセスから成功するための観点を解説しています。この記事で、システム開発を上手く進めるフレームワークを構築することが出来ます。

外部結合テスト(CT:Combined Test)とは?

外部結合テストでは、今回開発した仕組と他の仕組みを連動させテストをするテストをさします。他の外部との結合したテストの為、外部結合テストと言います。

内部結合テストとは?

内部結合テストでは、機能単位ではなく開発システム全体を通してのテストになります。システム開発ベンダーさんの担当している1システムを結合させてテストをするイメージです。

単体テスト(UT:Unit Test)とは?

単体テストでは、開発したプログラムのモジュールを一つずつ個別にテストして品質を確認していきます。

ウォーターフォールモデルとアジャイル(スクラム)でテストはどう違うの?

基本同じです。以下の画像をご覧ください。

スクラム
出所:Webrage

違いは、ウォーターフォールの場合、前工程が完了してから、次工程に流すという一連の比較的長い時間軸で行います。

一方、同様の流れを更に機能・サービスで区切り同じ工程をスプリントと呼ばれる枠組みで小さく実施してくのがアジャイルになります。

基本は同じです。本講座でシステム開発の基礎を学んでいくことで、どちらの開発手法でも対応できる基礎を身に着けることが出来ます。

各システム開発におけるテストは誰が担当すべきか?

開発者・開発ベンダーのテスト担当範囲

単体テスト、内部結合テスト、外部結合テストは一般的に開発者・開発ベンダーが担当します。外部結合テストに関しては、単一ソフトウェア開発の場合は、上記の絵の通りですが、複数システムにまたがり契約範囲外の仕組みとのインターフェースがある場合は、社内SEが実施します。

又、システムテストに関しては、規模や契約により開発したベンダーさんに実施頂き内容を確認で済ませる場合もあります。

社内SE・情シスのテスト担当範囲

外部結合テストは、契約により社内SEで実施する場合がある点は上記で解説しました。システムテスト、インフラテスト、性能テスト、運用テストは社内SEにて実施します。

もう少し、細かくお伝えすると、中小企業や小規模開発の場合、上記テストを全て1つのチーム・一人の社内SEで実施するケースもあります。

一方、大企業のシステム開発の場合、システムテスト・性能テストは開発チーム、インフラテストはインフラの部署の人(プロジェクトにどっぷりではなく必要な工数参画)、運用テストはシステム開発チームと運用チームと連携しながら実施というケースもあります。

業務ユーザーのテスト担当範囲

業務ユーザーは、受入テスト(UAT)を担当していただきます。但し、小規模な開発の場合には、社内SEにてテストを代行し結果共有でシステム品質に承認いただく場合もあります。テストの有無にかかわらず、最終的には起案者・発注側がきちんと確認を行いシステム開発をクローズする重要な工程です。

システム開発のテスト工程と種類の全体像を理解しようのまとめ

システム開発におけるテストは、以下の8つのテストが一般的に存在します。

  • 単体テスト(UT:Unit Test)
  • 内部結合テスト
  • 外部結合テスト(CT:Combined Test)
  • システムテスト(ST:System Test)
  • インフラテスト
  • 性能テスト
  • 運用テスト
  • 受入テスト(UAT: User Acceptance Test)

それぞれ、前のプロセスで決められた仕様を確認する品質を担保する重要な工程です。なんの観点で確認するのか?を踏まえた分類は以下になります。それぞれの工程で担保する品質とは?を意識して覚えるようにしましょう。

業務要件に基づきテスト
・受入テスト(UAT: User Acceptance Test)

システム要件に基づきテスト
・運用テスト
・性能テスト
・インフラテスト
・システムテスト(ST:System Test)

基本・詳細設計に基づきテスト
・外部結合テスト(CT:Combined Test)
・内部結合テスト
・単体テスト(UT:Unit Test)

次の記事

2-15 現役社内SEが教えるシステムテストで抑えるべき観点・項目とは?
システムテストって何から準備すればいいの?上手く進めるためにはどうしたらいいの?といった疑問に答えます。記事前半で、システムテストの位置づけを解説します。記事後半では、システム開発の王道のプロセスから成功するための観点を解説しています。この記事で、システム開発を上手く進めるフレームワークを構築することが出来ます。