---
title: "スタブとドライバの違いとは？トップダウンテスト・ボトムアップテストで整理【FE試験】"
description: "基本情報技術者試験で混同しやすいスタブとドライバを、結合テスト、トップダウンテスト、ボトムアップテストの流れから整理します。上位モジュールからテストする場合は下位モジュールの代役としてスタブ、下位モジュールからテストする場合は上位モジュールの代役としてドライバを使う、という判断軸を確認します。"
last_modified_at: "2026-07-06"
canonical_url: "https://stemtazoo.github.io/fe/stub-driver/"
section: "fe"
---

## まず結論

**スタブ**は、未完成の **下位モジュール** の代わりになるテスト用モジュールです。

**ドライバ**は、未完成の **上位モジュール** の代わりになるテスト用モジュールです。

FE試験では、次のように切り分けます。

- **トップダウンテスト**：上位からテストする → 下位が足りない → **スタブ**
- **ボトムアップテスト**：下位からテストする → 上位が足りない → **ドライバ**

迷ったら、

> 上からならスタブ、下からならドライバ

と考えると判断しやすいです。

トップダウンテストとボトムアップテスト自体があいまいな場合は、先に次の記事を見ると理解しやすくなります。

- [トップダウンテストとは？上位モジュールから結合して確認する方法【基本情報技術者試験】](https://stemtazoo.github.io/fe/top-down-testing/)
- [ボトムアップテストとは？下位モジュールから結合して確認する方法【基本情報技術者試験】](https://stemtazoo.github.io/fe/bottom-up-testing/)

---

## 直感的な説明

ソフトウェアは、複数のモジュールを組み合わせて作られます。

たとえば、次のような階層があるとします。

- 上位モジュール：全体の流れを管理する
- 下位モジュール：具体的な処理を行う

結合テストでは、これらのモジュールをつなげて、正しく連携できるかを確認します。

しかし、開発中はすべてのモジュールが完成しているとは限りません。

そこで、まだ完成していないモジュールの代わりに、仮のテスト用モジュールを置きます。

この仮のモジュールが、**スタブ**や**ドライバ**です。

---

## 定義・仕組み

### 結合テスト

結合テストは、複数のモジュールを組み合わせて、モジュール間の連携を確認するテストです。

単体テストでは、1つのモジュールだけを確認します。  
結合テストでは、モジュール同士を接続して、呼び出しやデータの受け渡しが正しいかを確認します。

FE試験では、結合テストの進め方として、主に次の2つが問われます。

- [トップダウンテスト](https://stemtazoo.github.io/fe/top-down-testing/)
- [ボトムアップテスト](https://stemtazoo.github.io/fe/bottom-up-testing/)

---

### トップダウンテスト

トップダウンテストは、上位モジュールから順にテストする方法です。

上位モジュールを先に確認するため、まだ下位モジュールが完成していないことがあります。

そのとき、下位モジュールの代わりとして使うのが **スタブ** です。

スタブは、上位モジュールから呼び出されたときに、仮の処理や仮の値を返します。

つまり、

> 上位モジュールから呼ばれる、仮の下位モジュール

がスタブです。

詳しくは、[トップダウンテストの記事](https://stemtazoo.github.io/fe/top-down-testing/)で確認できます。

---

### ボトムアップテスト

ボトムアップテストは、下位モジュールから順にテストする方法です。

下位モジュールを先に確認するため、まだ上位モジュールが完成していないことがあります。

そのとき、上位モジュールの代わりとして使うのが **ドライバ** です。

ドライバは、下位モジュールを呼び出し、テストに必要な入力を与えます。

つまり、

> 下位モジュールを呼び出す、仮の上位モジュール

がドライバです。

詳しくは、[ボトムアップテストの記事](https://stemtazoo.github.io/fe/bottom-up-testing/)で確認できます。

---

### スタブとドライバの整理

| 観点 | スタブ | ドライバ |
|---|---|---|
| 使う場面 | トップダウンテスト | ボトムアップテスト |
| 代わりになるもの | 下位モジュール | 上位モジュール |
| 役割 | 呼び出される | 呼び出す |
| イメージ | 仮の部品 | 仮の呼び出し役 |

FE試験では、表を丸暗記するよりも、

> 上から見て足りない下を補うのがスタブ  
> 下から見て足りない上を補うのがドライバ

と考えると覚えやすいです。

---

## どんな場面で使う？

### 上位モジュールを先に確認したい場面

たとえば、画面操作や全体の処理の流れを先に確認したい場合です。

上位モジュールは完成しているけれど、細かい計算処理やデータ取得処理がまだ完成していないことがあります。

この場合、下位モジュールの代わりにスタブを置きます。

スタブは、仮の戻り値を返して、上位モジュールの動作確認を助けます。

---

### 下位モジュールを先に確認したい場面

たとえば、計算処理やデータベース処理など、部品として重要な下位モジュールを先に確認したい場合です。

下位モジュールは完成しているけれど、それを呼び出す上位モジュールがまだ完成していないことがあります。

この場合、上位モジュールの代わりにドライバを置きます。

ドライバは、下位モジュールを呼び出し、テスト用の入力を与えます。

---

## よくある誤解・混同

### ❌ スタブとドライバは同じ意味

これは誤りです。

どちらもテスト用の仮モジュールですが、役割が逆です。

- スタブ：呼び出される側の代役
- ドライバ：呼び出す側の代役

この違いを押さえます。

---

### ❌ 上位モジュールの代わりがスタブ

これは逆です。

上位モジュールの代わりは **ドライバ** です。

スタブは、下位モジュールの代わりです。

FE試験では、ここを逆に選ばせる問題がよくあります。

---

### ❌ 下位モジュールの代わりがドライバ

これも逆です。

下位モジュールの代わりは **スタブ** です。

ドライバは、下位モジュールをテストするために呼び出す側の役割をします。

---

### ❌ エミュレーターやシミュレーターと同じもの

スタブやドライバは、結合テストで使う仮のモジュールです。

一方、エミュレーターやシミュレーターは、装置や環境、現実の動作などを再現するものです。

今回のように、

> 上位・下位モジュールの代替

が問われている場合は、スタブかドライバを考えます。

---

## 確認問題（FE試験対策）

結合テストで、上位モジュールを先に確認したい。まだ完成していない下位モジュールの代わりに使うものとして、最も適切なものはどれか。

- ア. エミュレーター
- イ. シミュレーター
- ウ. スタブ
- エ. ドライバ

<details markdown="1">
<summary>▶ クリックして答えと解説を見る（ここを開く）</summary>

**正解：ウ**

### 解説

- ア：不適切です。エミュレーターは、他の装置や環境の動作を再現するものです。
- イ：不適切です。シミュレーターは、現実の事象や処理をモデル化して模擬するものです。
- ウ：正解です。スタブは、トップダウンテストで未完成の下位モジュールの代わりに使います。
- エ：不適切です。ドライバは、ボトムアップテストで未完成の上位モジュールの代わりに使います。

👉 判断ポイント  
**上位からテストする → 下位モジュールが足りない → スタブ** と考えます。

</details>

---

## 関連記事

- [トップダウンテストとは？上位モジュールから結合して確認する方法【基本情報技術者試験】](https://stemtazoo.github.io/fe/top-down-testing/)
- [ボトムアップテストとは？下位モジュールから結合して確認する方法【基本情報技術者試験】](https://stemtazoo.github.io/fe/bottom-up-testing/)

---

## まとめ（試験直前用）

- **スタブ**：下位モジュールの代役
- **ドライバ**：上位モジュールの代役
- **トップダウンテスト**：上から進めるので、下を補うスタブを使う
- **ボトムアップテスト**：下から進めるので、上を補うドライバを使う

FE試験では、

> 上からならスタブ、下からならドライバ

でまず切り分けます。

さらに、

> スタブは呼び出される側、ドライバは呼び出す側

まで押さえると、ひっかけに強くなります。
