🦁

webのテストについて

2024/07/03に公開

テストについて

最近テストを書くことが増えたのですが、そもそもテストとは何かや何について書けばいいのかわかっていない節があるので、現時点で理解していることをまとめていきたいと思います。

テストとは

自分が行った実装に対して機械的に不具合がないかを担保するためのものです。
また、データがなくてもモックデータを設定することで動作確認をすぐ行うことができます。
私のチームではstorybookを使用したテストを書いています。
またテストはいくつか指標、重要度によって種類分けができます。
https://storybook.js.org/

テストの種類

Unit Test

  • 概要
    Unit Test(ユニットテスト)は、ソフトウェアの最小単位の動作を独立して検証することに重点を置いています。
  • 目的
    個々の関数やメソッド、クラスが正しく動作するかを確認する。
    バグを早期に発見し、修正する。
  • 特徴
    テスト対象が非常に小さく、特定の機能のみをテストする
    実行が早い

Integration Test

  • 概要
    Integration Testは複数のモジュールやコンポーネントが連携して正しく動作するかを検証するテストです
  • 目的
    依存関係やインターフェースが正しく機能しているかを検証
  • 特徴
    複数のユニットが統合された状態でテストを行う。
    データベースや外部APIなどの依存関係を含むことが多い。

E2E Test

  • 概要
    ユーザーがアプリケーションを使用する際のフロー全体をテストすることを目的としたテスト手法です。
  • 目的
    ユーザーの視点から、アプリケーション全体の動作を確認する。
    フロントエンドからバックエンドまで含む、システム全体のテストを行う。
  • 特徴
    実際のユーザー操作をシミュレートし、システム全体のフローをテストする。
    フルスタックテストであり、すべてのコンポーネントが統合された状態で行われる。

テストを書く流れ

テストの概要や種類について書いてきましたが、一番書きたかったのは書く流れです。
ウォーターフォールモデルを採用した開発の場合基本設計や詳細設計を洗い出していく際に、テストの内容も同時に洗い出すことができます。
完全にこの流れで考えるわけではないですが、対象範囲で考えるとこのようになるイメージです。
要件定義→E2E Test
基本設計→Integration Test
詳細設計→Unit Test
https://service.shiftinc.jp/column/4850/

まとめ

今回はテストの流れや種類について書きました。
まだコードベースで書けるほど理解できていないので、そこらも今後かけたらなと考えています。

Discussion