「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

サンドイッチテスト

pointこの用語のポイント

point結合テストの やり方だよ

pointトップダウンテストとボトムアップテストを同時並行でやるよ

スポンサーリンク

簡単に書くよ

サンドイッチテスト(英:sandwich testing)とは

「合体して、ちゃんと動く?」を確認するテスト(結合テスト)の やり方のひとつ
であり

例えば「部品A-[呼び出し]→部品B-[呼び出し]→部品C-[呼び出し]→(中略)→部品Y-[呼び出し]→部品Z」のような構成のプログラムにおいて「まず部品Aと部品Bをくっつけてテストし、大丈夫そうだったら部品A+Bと部品Cをくっつけてテストし、大丈夫そうだったら……」のように呼び出す側の部品から少しずつ合体させていくテスト(トップダウンテスト)と「まず部品Zと部品Yをくっつけてテストし、大丈夫そうだったら部品Z+Yと部品Xをくっつけてテストし、大丈夫そうだったら……」のように呼び出される側の部品から少しずつ合体させていくテスト(ボトムアップテスト)を同時並行でやる やり方
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として

結合テスト
ドライバ
スタブ
トップダウンテスト
ボトムアップテスト


について結構ガッツリ説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

結合テストは「合体して、ちゃんと動く?」を確認するテストです。
システム開発における工程のひとつです。

ある程度以上の規模のシステムを作るときは、システム全体をまとめて一気に作ることは、ほとんどありません。
機能や部品単位で分けて作って、最後にそれを合体させることで完成させます。

システムというのは普通のロボットではなくて合体ロボなのです。
ピヨレッドからピヨピンクまでが合体してピヨピヨ大魔神になります。

サンドイッチテスト

この合体ロボが「合体しても、ちゃんと動くか?」を確認するのが結合テストです。

サンドイッチテスト2

ちなみに「合体する部品は、ちゃんと動く?」を確認する工程は「単体テスト」と呼んだりします。

サンドイッチテスト3

気が向いたら、併せて覚えてあげてください。

単体テスト:合体前の部品のテスト
結合テスト:合体後の全体のテスト


です。

サンドイッチテスト4

ドライバは「テスト対象を呼び出す部品の代わりとなるやつ」です。
スタブは「テスト対象から呼び出される部品の代わりとなるやつ」です。

サンドイッチテスト5

例えば、そうですね。

ピヨピヨシステムを作っていたとしましょう。
ピヨピヨシステムは、ピヨ太ママプログラムから指令を受けたピヨ子プログラムが、ピヨ太プログラムに指示を出す構成になる予定です。

サンドイッチテスト6

おっと、ちまちま作っていたピヨ子さんが完成したようです。
早速、テストしましょう。

サンドイッチテスト7

ですが、ピヨ太ママとピヨ太君が、まだできていません。

サンドイッチテスト8

そこで、ピヨ太ママとピヨ太君の代役を用意しました。
代役のお仕事は

ピヨ太ママの代役:ピヨ子さんを呼び出す
ピヨ太君の代役:ピヨ子さんから呼び出されて、結果を返す


です。

サンドイッチテスト9

この話におけるピヨ太ママの代役に相当するのがドライバです。
ピヨ太君の代役に相当するのがスタブです。

サンドイッチテスト10

トップダウンテストは「呼び出す側の部品から少しずつ合体させてテストしていく やり方」です。
トップダウンテストは結合テストのやり方のひとつです。

サンドイッチテスト11

例えば、そうですね。

ピヨピヨシステム2を作っていたとしましょう。
ピヨピヨシステム2は、ピヨ太ママプログラムから指令を受けたピヨ子プログラムがピヨ太プログラムに指示を出して、ピヨ子プログラムから指示を受けたピヨ太プログラムが(ちょっと仕事をした振りをした後で)そのままアクマ君プログラムに仕事を丸投げする構成になる予定です。

サンドイッチテスト12

おっと、ピヨ太ママプログラム、ピヨ子プログラム、ピヨ太プログラム、アクマ君プログラムが完成したようです。
結合テストをやりましょう。

サンドイッチテスト13

とはいえ、いきなり全部くっつけて動かなかったら原因を探すのが大変です。
まずはピヨ太ママプログラムとピヨ子プログラムをくっつけて「ちゃんと動くかな?」を確認しました。
ピヨ太プログラムは代役(スタブ)を使います。

サンドイッチテスト14

ふむふむ、どうやら大丈夫そうです。
次はピヨ太プログラムをくっつけてみましょう。
今度はピヨ太ママプログラムとピヨ子プログラムとピヨ太プログラムを合体させて「ちゃんと動くかな?」を確認しました。
アクマ君プログラムは代役(スタブ)を使います。

サンドイッチテスト15

ふむふむ、どうやら大丈夫そうです。
いよいよ仕上げです。
アクマ君プログラムをくっつけてみましょう。
ピヨ太ママプログラムとピヨ子プログラムとピヨ太プログラムとアクマ君プログラムを合体させて「ちゃんと動くかな?」を確認しました。

サンドイッチテスト16

ふむふむ、どうやら大丈夫そうです。
これで全部の部品がくっつきました。
結合テストは完了です。

このような順番でやる結合テストがトップダウンテストです。

呼び出す方から少しずつ合体させてテストする やり方

です。

サンドイッチテスト17

ボトムアップテストは「呼び出される側の部品から少しずつ合体させてテストしていく やり方」です。
ボトムアップテストも結合テストのやり方のひとつです。

サンドイッチテスト18

例えば、そうですね。

ピヨピヨシステム2を作っていたとしましょう。
ピヨピヨシステム2は、ピヨ太ママプログラムから指令を受けたピヨ子プログラムがピヨ太プログラムに指示を出して、ピヨ子プログラムから指示を受けたピヨ太プログラムが(ちょっと仕事をした振りをした後で)そのままアクマ君プログラムに仕事を丸投げする構成になる予定です。

サンドイッチテスト19

おっと、ピヨ太ママプログラム、ピヨ子プログラム、ピヨ太プログラム、アクマ君プログラムが完成したようです。
結合テストをやりましょう。

サンドイッチテスト20

とはいえ、いきなり全部くっつけて動かなかったら原因を探すのが大変です。
まずはアクマ君プログラムとピヨ太プログラムをくっつけて「ちゃんと動くかな?」を確認しました。
ピヨ子プログラムは代役(ドライバ)を使います。

サンドイッチテスト21

ふむふむ、どうやら大丈夫そうです。
次はピヨ子プログラムをくっつけてみましょう。
今度はアクマ君プログラムとピヨ太プログラムとピヨ子プログラムを合体させて「ちゃんと動くかな?」を確認しました。
ピヨ太ママプログラムは代役(ドライバ)を使います。

サンドイッチテスト22

ふむふむ、どうやら大丈夫そうです。
いよいよ仕上げです。
ピヨ太ママプログラムをくっつけてみましょう。
アクマ君プログラムとピヨ太プログラムとピヨ子プログラムとピヨ太ママプログラムを合体させて「ちゃんと動くかな?」を確認しました。

サンドイッチテスト23

ふむふむ、どうやら大丈夫そうです。
これで全部の部品がくっつきました。
結合テストは完了です。

このような順番でやる結合テストがボトムアップテストです。

呼び出される方から少しずつ合体させてテストする やり方

です。

サンドイッチテスト24

以上を踏まえて

トップダウンテストとボトムアップテストを並行してやる やり方

が「サンドイッチテスト」です。
折衷テスト」とも呼ばれます。

サンドイッチテスト25

例えば……と書こうと思ったのですが長くなるので止めておきます。
トップダウンテストとボトムアップテストを理解できれば、そんなに難しくないはずです。
一番上(呼び出し元)からトップダウンテストをしつつ、一番下(呼び出し先)からボトムアップテストをやって、両者がぶつかったら終わりなやり方のテストです。


image piyo2

一言でまとめるよ

まぁ「サンドイッチテスト」って単語が出てきたら「トップダウンテスト(呼び出す方から少しずつ合体させてテストしていく やり方)とボトムアップテスト(呼び出される方から少しずつ合体させてテストしていく やり方)を同時並行でやるんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像014
書籍画像054

おまけ

■訳してみるよ

「sandwich(サンドイッチ)」は食べ物の「サンドイッチ」です。
「test(テスト)」はカタカナで「テスト」で分かりますよね。
何となく くっつけると

サンドイッチなテスト

となります。
サンドイッチのように上下から挟むやり方だからですかね。


■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
実務で役立つ ログの教科書 基礎知識から収集方法・分析手法・トラブルシューティング・パフォーマンス最適化・機械学習での活用まで
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
「技術書」の読書術 達人が教える選び方・読み方・情報発信&共有のコツとテクニック