0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ソフトウェア(Webアプリ開発)テストの種類

Posted at

ソフトウェア(Webアプリ開発)テストの種類と関係性

ソフトウェアのテストは、その種類が非常に多く、それぞれが異なる目的を持って実施されます。
ここでは、よく使われるテストの種類とその関係性について、できるだけ詳しく解説していきます。

注意点

ほぼ同じテスト内容を指していても組織やプロジェクト、人によって呼び方が違ったりする(ex 総合テストとST)
定義は抑えつつ、自分の所属している組織のルールや発言者が意図している範囲を確認することが大事

テストの種類と概要

1. 単体テスト (UT:Unit Test)

  • 目的: プログラムの最小単位(関数、メソッドなど)が意図したとおりに動作するかを検証します

  • 特徴: 開発者が行うことが多く、自動化ツールが活用されます

2. 結合テスト (Integration Test)

  • 目的: 複数のモジュールやコンポーネントを結合し、それらが相互に連携して動作するかを検証します

  • 種類:

    • 内部結合テスト (ITA): システム内部のモジュール間の結合を検証します
    • 外部結合テスト (ITB): システムと外部システム(外部API、決済システム、SNS認証など)との結合を検証します
  • 特徴:「統合テスト」と言うケースもある

3. システムテスト (ST:System Test)

  • 目的: システム全体が、要求仕様を満たし、意図したとおりに動作するかを検証します

  • 特徴:

    • 結合テストが完了した後に実施される
    • 機能テスト、性能テスト、セキュリティテストなどを含む
    • 総合テスト」というケースもある

4. 受入テスト (Acceptance Test)

  • 目的: システムが、ユーザーの要求を満たし、運用に耐えられるかを検証します

  • 種類:

    • ユーザー受入テスト(UAT: User Acceptance Test):実際のユーザーが使用感や機能を確認します
    • 運用受入テスト(OAT: Operational Acceptance Test):運用面での準備が整っているかを確認します

5. その他のテスト

  • スモークテスト: システムの「主要な機能」が動作することを簡単に確認するテスト

    • 「煙が出ない」という意味で、このテストで問題がなければ、本格的なテストに進めるというイメージから名付けられました
    • リリース可能な状態かどうかの初期確認
    • 細かくは確認しない
    • STやUATの前に実施されることが多い
  • 回帰テスト(リグレッションテスト): システムに変更を加えた後、既存の機能が壊れていないこと(デグレがないこと)を確認するテスト

    • ソフトウェア開発のライフサイクル全体を通して行われる(CI/CDの中など)
      • リリース前
      • バグ修正後
      • 機能追加後
  • 性能テスト: システムが、所定の負荷のもとで性能を発揮できるかを検証するテスト

    • システム全体が負荷に対して耐えられるかを確認するため、システムテスト(ST)に含まれることが多い
    • 主な種類:
      • a) 負荷テスト:通常の負荷下でのシステムの動作を確認
      • b) ストレステスト:極端な負荷下でのシステムの限界を測定
      • c) スケーラビリティテスト:負荷の増加に対するシステムの対応能力を評価
      • d) エンデュランステスト:長時間の連続使用下でのシステムの安定性を確認
  • セキュリティテスト: システムが、不正アクセスや情報漏洩に対して安全であるかを検証するテスト

    • システム全体の安全性を確保するため、システムテスト(ST)に含まれることが多い
      • 脆弱性の発見: システムにセキュリティホールがないか、既知の脆弱性(CVEなど)が含まれていないかなどを調べます
      • 侵入経路の特定: 攻撃者がシステムに侵入する可能性のある経路を特定します
      • リスク評価: 発見された脆弱性の危険度を評価し、優先順位付けを行います
  • ユーザビリティテスト: システムが、ユーザーにとって使いやすいかを検証するテスト

    • ユーザー受け入れテスト(UAT)に含まれることが多い
  • シナリオテスト: ユーザーが実際にシステムを使用する具体的なシナリオに基づいて、システムが期待通りに動作するかを確認するテスト

    • ex ユーザーが商品を検索して購入する一連の操作が問題なく行えるか
    • ユーザー受け入れテスト(UAT)やシステムテスト(ST)の一環として行われることが多い

テストの順番

一般的に、単体テスト → 結合テスト → システムテスト → 受入テストの順で実施されます。
ただし、開発手法によって順序は異なることもあります。

ITaとITbの「内部」と「外部」って何?

  • 内部:開発中のシステムやアプリケーション自体を指します

  • 外部:開発中のシステムの外にある、他のシステムやサービスを指します

ITBの具体例:

  • 例1:オンラインショッピングアプリ

    • 内部:ショッピングアプリ自体
    • 外部:決済サービス(PayPalなど)テスト内容:アプリから決済サービスへの連携が正しく機能するか確認
  • 例2:天気予報アプリ

    • 内部:天気予報アプリ自体
    • 外部:気象データ提供サービスのAPIテスト内容:アプリが外部APIから正しくデータを取得し、表示できるか確認
  • 例3:SNSアプリ

    • 内部:SNSアプリ自体
    • 外部:プッシュ通知サービステスト内容:アプリがプッシュ通知を正しく送信できるか確認

STとUATの違い

ST(システムテスト)とUAT(ユーザー受け入れテスト)は、どちらもソフトウェア開発の最終段階で行われるテストですが、目的や実施主体が異なります
それぞれの違いを具体的に見ていきましょう。

STは、システムが技術的に完成していることを確認するテストであり、
UATは、システムがユーザーの要求を満たしていることを確認するテストです。
STが合格した後にUATが行われ、両方のテストに合格することで、システムがリリースされます。

ST(システムテスト)

  • 目的: 開発されたシステム全体が、設計どおりに正しく機能するかを検証します

  • 実施主体: 開発チームやテスト担当者が実施します

  • テスト内容:

    • 機能テスト: すべての機能が仕様通りに動作するかを確認します
    • 性能テスト: システムが、想定される負荷に耐えられるかを確認します
    • セキュリティテスト: システムが、不正アクセスや情報漏洩に対して安全であるかを確認します
    • 互換性テスト: 他のシステムとの連携が問題なく動作するかを確認します
    • 信頼性テスト: システムが安定して動作し続けるかを確認します
  • テスト環境: 本番環境と同じか、それに近い環境で実施されます

UAT(ユーザー受け入れテスト)

  • 目的: 開発されたシステムが、実際のユーザーのニーズを満たし、業務に利用できるかを検証します

  • 実施主体: 実際のシステムのユーザー(エンドユーザー)が実施します

  • テスト内容:

    • 使いやすさ: システムが直感的で使いやすいかを確認します
    • 業務への適合性: システムが、実際の業務にスムーズに組み込めるかを確認します
    • 期待通りの結果が得られるか: システムが、ユーザーの期待する結果を出せるかを確認します
  • テスト環境: 本番環境と同じか、それに近い環境で実施されます

STとUATの違いをまとめた表

1726621912-lqLibHt84OpBcdVwNnFA1jIR.jpg

まとめ

ソフトウェアテストの種類は、テストの目的や対象によって多岐にわたります!
これらのテストを組み合わせることで、高品質なソフトウェアを開発することができます!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?