テストの種類を知ろう
ストーリー
「テストをしてね」と言われたけど、テストってどんな種類があるの?
「テストにはいろいろな種類があるんだ。まずは全体像を把握しよう」
「全部覚えないといけないんですか?」
「全部を深く知る必要はないよ。でも種類を知っていれば、どのテストの話をしているか理解できるようになる」
テストの全体像
ソフトウェアテストは、テストする範囲によって種類が分かれます。
小さい範囲 大きい範囲
←─────────────────────────────────────────→
[単体テスト] → [結合テスト] → [システムテスト] → [受入テスト]
部品1つ 部品の組合せ システム全体 顧客の確認
4つのテストレベル
1. 単体テスト(Unit Test)
1つの関数やクラスが正しく動くか確認するテストです。
javascript
// テスト対象の関数
function add(a, b) {
return a + b;
}
// 単体テスト
test('1 + 2 は 3 になる', () => {
expect(add(1, 2)).toBe(3);
});
test('0 + 0 は 0 になる', () => {
expect(add(0, 0)).toBe(0);
});
test('-1 + 1 は 0 になる', () => {
expect(add(-1, 1)).toBe(0);
});| 項目 | 内容 |
|---|---|
| テスト範囲 | 関数1つ、クラス1つ |
| 実行速度 | 非常に速い(数ミリ秒) |
| 誰がやるか | 開発者 |
| 目的 | 部品が正しく動くか確認 |
2. 結合テスト(Integration Test)
複数の部品を組み合わせたときに正しく動くか確認するテストです。
例: ユーザー登録機能のテスト
[入力フォーム] → [バリデーション] → [データベース保存] → [メール送信]
それぞれの部品は単体テストでOKでも、
組み合わせたときに問題が起きることがある
| 項目 | 内容 |
|---|---|
| テスト範囲 | 複数のモジュールの連携 |
| 実行速度 | やや遅い(データベースやAPIとの通信が発生) |
| 誰 がやるか | 開発者 |
| 目的 | 部品同士の連携が正しいか確認 |
3. システムテスト(System Test)
システム全体が仕様通りに動くか確認するテストです。
例: ECサイトのシステムテスト
テスト項目:
- 商品検索ができるか
- カートに商品を追加できるか
- 購入処理が完了するか
- 注文確認メールが届くか
- 管理画面で注文が確認できるか
| 項目 | 内容 |
|---|---|
| テスト範囲 | システム全体 |
| 実行速度 | 遅い(システム全体を動かす) |
| 誰がやるか | テスト担当者(QA) |
| 目的 | システム全体が仕様通りに動くか確認 |
4. 受入テスト(Acceptance Test)
顧客やユーザーの視点で、要件を満たしているか確認するテストです。
例: 受入条件に基づくテスト
受入条件: 「ユーザーはメールアドレスでログインできること」
テスト:
1. ログインページを開く
2. メールアドレスとパスワードを入力する
3. ログインボタンを押す
4. ダッシュボードが表示されることを確認する
| 項目 | 内容 |
|---|---|
| テスト範囲 | ビジネス要件 |
| 実行速度 | 遅い(人間が操作する場合も) |
| 誰がやるか | 顧客、プロダクトオーナー |
| 目的 | ビジネス要件を満たしているか確認 |
テストの比較表
| 種類 | 範囲 | 速度 | コスト | 実行頻度 |
|---|---|---|---|---|
| 単体テスト | 小 | 速い | 低 | 毎コミット |
| 結合テスト | 中 | 普通 | 中 | 毎日〜毎週 |
| システムテスト | 大 | 遅い | 高 | リリース前 |
| 受入テスト | 全体 | 遅い | 高 | リリース前 |
テストピラミッド
理想的なテストの量は「ピラミッド型」です。
/\
/ \ 受入テスト(少数)
/ \
/------\
/ \ システムテスト(適度)
/ \
/------------\
/ \ 結合テスト(多め)
/________________\ 単体テスト(最も多い)
下の層(単体テスト)を多く、上の層(受入テスト)を少なくするのが効率的です。
新人が関わるテスト
最初のうちは、すべてのテストに関わる必要はありません。
| テスト | 新人の関わり方 |
|---|---|
| 単体テスト | 自分のコードにテストを書く |
| 結合テスト | テスト手順書に従って実行する |
| システムテスト | テスト手順書に従って実行する |
| 受入テスト | 見学・補助(理解を深める) |
まとめ
| ポイント | 内容 |
|---|---|
| 単体テスト | 1つの関数やクラスの動作確認 |
| 結合テスト | 複数の部品の連携確認 |
| システムテスト | システム全体の動作確認 |
| 受入テスト | ビジネス要件の確認 |
| テストピラミッド | 単体テストを多く、受入テストを少なく |
チェックリスト
- 4つのテストレベルをそれぞれ説明できる
- テストピラミッドの考え方を理解した
- 新人として最初に関わるテストがイメージできた
次のステップへ
テストの種類が理解できましたか?
次のセクションでは、テストケースの読み方を学びます。 テスト手順書を渡されたときに、何が書いてあるか理解できるようになりましょう。
推定読了時間: 30分