本サイトは広告により収益を得ています

テストの基礎(ユニットテストの書き方)

テストの基礎(ユニットテストの書き方)

2025年10月09日
フリー検定
広告

目次

現在: 10 / 10

バックエンドエンジニアに関する検定はこちら

面倒な会員登録も不要!すぐに受験!

無料で受験する

信頼性の高いバックエンドシステムを構築するには、開発したコードが意図通りに動作することを保証するテストが不可欠です。特に、コードの最小単位を検証するユニットテストは、バグの早期発見と機能の品質維持において最も重要です。


1. テストの種類とユニットテストの位置づけ

  • テストの目的 / 説明: コードの品質を保証し、変更や機能追加を行った際に既存の機能が壊れていないか(デグレードしていないか)を確認することです。

  • ユニットテスト (Unit Test) / 説明: プログラムの最小単位(ユニット)、つまり個々の関数、メソッド、クラスなどが正しく動作するかを検証するテストです。

  • インテグレーションテスト / 説明: 複数のユニット(例:関数とデータベースの連携)を結合(インテグレーション)して、それらが連携して正しく動作するかを検証するテストです。

  • E2Eテスト (End-to-End Test) / 説明: ユーザーと同じ視点に立ち、システム全体(クライアントからサーバー、データベースまで)の動作を一連の流れで検証するテストです。


2. ユニットテストの基本原則

ユニットテストを効果的に書くための基本原則は、AAA原則として知られています。

  • Arrange (準備) / 説明: テストに必要な初期状態(データ、変数の初期化、テスト対象のインスタンス化など)を準備します。

  • Act (実行) / 説明: テスト対象のコード(関数やメソッド)を実行します。

  • Assert (検証) / 説明: 実行結果(戻り値、副作用など)が期待通りの結果と一致するかを検証(表明)します。

  • 理想的な特性 / 説明: ユニットテストは、F.I.R.S.T.(Fast, Independent, Repeatable, Self-Validating, Timely)の原則に従い、高速で、他のテストに依存せず、常に同じ結果を返すことが求められます。


3. ユニットテストの記述要素

ユニットテストは、プログラミング言語ごとのテスティングフレームワーク(例: PHPUnit, Jest, JUnit, GoConveyなど)を使って記述されます。

  • テストケース(Test Case) / 説明: 検証したい特定のシナリオや条件を定義したものです。通常はメソッドや関数として記述されます。

  • アサーション(Assertion) / 構造: assert_equal(期待値, 実際の結果) / 説明: 「もし結果が期待値と等しくなければ失敗」のように、検証を行うための関数やメソッドです。

  • モック(Mock)とスタブ(Stub) / 説明: テスト対象のユニットが依存している外部のコンポーネント(例:データベース接続、外部API)を、本物そっくりに偽装(模擬)した代替オブジェクトです。これにより、テスト対象のユニット単体に集中してテストできます。


4. ユニットテストの基本的な書き方(例)

以下は、add(a, b) というシンプルな足し算関数をテストする際のイメージです。

  1. テストファイル作成 / 説明: テスト対象のファイル(例:calculator.js)とは別に、対応するテストファイル(例:calculator.test.js)を作成します。

  2. Arrange (準備) / 説明: テストで使用する入力値(a=2, b=3)や期待値(expected = 5)を定義します。

  3. Act (実行) / 説明: テスト対象の関数を呼び出し、結果を変数に格納します(actual = add(2, 3))。

  4. Assert (検証) / 説明: 実際の結果(actual)が期待値(expected)と等しいことをアサーション関数で確認します(例:assertEquals(5, actual))。


⭐ 演習課題

以下の関数(またはメソッド)について、最低でも2つ以上のテストケースを考えてみましょう。

  1. is_adult(age) 関数:年齢(age)を受け取り、20歳以上なら true、そうでなければ false を返す関数。

  2. format_name(first_name, last_name) 関数:名と姓を受け取り、「姓 名」の形式で結合して返す関数。

(ヒント:is_adult では、境界値である 1920 をテストするのが効果的です。)

バックエンドエンジニアに関する検定はこちら

面倒な会員登録も不要!すぐに受験!

無料で受験する
広告

検定一覧はこちらから

様々なジャンルの検定から選んで、あなたの知識を試してみましょう。

検定一覧を見る

関連記事

広告