スタブ(Stub)とは、プログラム開発の途中で、まだ完成していない部分の代わりに一時的に用意する、簡易的なダミーのプログラムのことです。呼び出されると決まった値をそのまま返すだけの単純な作りになっており、本来の処理はまだ実装されていません。
現実世界に例えると、スタブは撮影現場の代役のようなものです。主役の役者がまだ現場に到着していなくても、代役を立てておけば、カメラの位置や周りの段取りを先に確認できます。本番の役者(本来の処理)と入れ替えるまでの、つなぎの存在です。
スタブが使われる理由
大きなシステムの開発では、すべての部分が同時に完成するとは限りません。ある機能が別の未完成の機能を呼び出す必要がある場合、スタブを代わりに置いておくことで、待たされることなく開発やテストを先に進めることができます。
スタブとモックの違い
| 用語 | 特徴 |
|---|---|
| スタブ | 決まった値を返すだけの、単純な代役 |
| モック | 呼び出された回数や内容まで記録・検証できる代役 |
スタブを使うメリット
未完成の部分に依存せず開発を進められるため、チーム内で複数の機能を並行して開発しやすくなります。また、外部のサービスと通信する処理をスタブに置き換えれば、通信環境がない状態でもテストを行うことができます。
テストにおける位置づけ
ソフトウェアのテストでは、確認したい部分以外をスタブに置き換えることで、本来確かめたい処理だけを切り分けて検証できるという利点があります。関係のない部分の不具合に振り回されず、テストの対象を絞り込めます。
スタブの具体例
例えば、天気情報を外部のサービスから取得して表示する機能を開発している場合、実際の外部サービスの代わりに「常に晴れという結果を返すだけのスタブ」を用意しておけば、外部サービスの状態に左右されずに、表示部分の開発やテストを進められます。
開発の後工程での役割
開発が進み、該当する機能が完成した段階では、スタブを本来の処理に置き換えていく作業が行われます。スタブはあくまで一時的な代役であり、最終的にはすべて本物の処理に差し替えられることを前提に用意されています。
ドライバーとの違い
似た文脈で登場する言葉に「ドライバー」がありますが、こちらはスタブとは反対に、まだ完成していない部分を呼び出す側のダミーを指します。テストしたい部品を上から呼び出す代役がドライバー、下から呼び出される代役がスタブという関係になります。
あわせて知っておきたい用語
- モック:
呼び出された内容まで記録できる、より高機能な代役のプログラムです。 - 単体テスト(ユニットテスト):
プログラムを小さな単位に分けて行うテストの手法です。 - API:
ソフトウェアの機能を外部から呼び出すための窓口です。 - テスト駆動開発:
テストを先に用意してから実装を進める開発手法です。 - ドライバー(テスト用):
未完成の部品を上から呼び出す、テスト用のダミープログラムです。 - 結合テスト:
複数の部品を組み合わせて、正しく連携するかを確認するテストです。

コメント