« ソフトウェアテストPRESS vol.1 - テスト駆動開発と単体テストのカンケイ | トップページ | 考慮漏れのディメンジョン »

単体テスト~結合テスト

単体テストをするとき、「スタブ」と「ドライバ」が必要になってくる。

Photo

スタブとは、テストのために用意されるテスト対象が呼び出す予定のメソッドや関数、サブルーチンのこと。ドライバは、テストのために用意されるテスト対象を読み出すメソッドや関数、サブルーチン。ひとつのテスト対象にはひとつずつスタブとドライバが必要になってくる。ただし、一般的には単体テストをトップダウンあるいはボトムアップで行うことが多いため、スタブとドライバの片方はすでにテスト実施済みのメソッドや関数、サブルーチンがあてられる。

そこでだ。世の中で結合テストといわれているのはどこを指すのか。

Photo_1

あくまで僕の認識だが、上図でいうと呼び出しa、呼び出しb、呼び出しcを「単体テストの通し」と考えている。この最上位の単体テストにたどり着くとそれはほとんどモジュールAの機能テスト=結合テストの一部とみなせるんじゃないか。

なんでこんなことを書いているかというと、結合テストって単体テストやシステムテスト、非機能テストに比べて定義があいまいな気がしたので。誰かこれっていう定義を知ってたら教えてください。

ちなみに、Softeware Testing のコラムでは、

結合テストは、モジュール間のインターフェースや組み合わせを対象としたテストです。C言語などではモジュールの呼び出しや戻り、Javaなどではメッセージのやり取りになります。モジュール間のインターフェースに食い違いがあるバグや、(単一のモジュールでバグが見つからないのに)複数のモジュールを組み合わせた時にだけ見つかるバグを検出します。

となってます。

|

« ソフトウェアテストPRESS vol.1 - テスト駆動開発と単体テストのカンケイ | トップページ | 考慮漏れのディメンジョン »

コメント

結合が何を指すかは、単体が何を指すかと表裏一体なんじゃないでしょうか。
本来は(と言い切ってよいか解りませんが)、単体はボトムアップでもボトムダウンでもなく、全てにわたってスタブとドライバで挟みこんでやるものだと思います(スタビングが面倒だから端折るだけで)。
で、単体を、コンパイル単位と見るか、コンパイル単位の集合であるモジュールと見るか、あるいはパッケージと見るか、サブシステムと見るか、単一システムと見るかは、そのテストの意図しだいだと思います。そして、単体として区切ったもののインタフェースを結合して行うものが結合テストじゃないでしょか。
つまり、単体テストとか結合テストという言葉の前にその区別の名称を付けて、~~単体テスト、~~結合テスト、と表現するのが妥当だと思います(例えばサブシステム単体テスト、サブシステム結合テストとか)。
製品の規模や品質の確保のために、どういう粒度でテスト計画を立てるかという問題とリンクしていると思います。
XPでいう単体テストはクラスレベルの単体テストで、それより大きいテストはいきなり機能テスト(受入れテスト)になっていますが、機能テストを結合テストとしていますよね。

投稿: geo | 2006年12月10日 (日) 00:41

>geoさん

はじめまして、コメントありがとうございます。
なるほど。ご指摘の通り、単体/結合テストの分類というよりは「どこを単体(あるいはユニット)と定義し、
どことどこを結合するか」といった定義がまずありきな
気がしてきました。

そこらへんも実装の難易度を鑑みて、粒度や規模を決定するといった分析が重要な気がしています。

投稿: softest | 2006年12月11日 (月) 10:00

自分も、テストをしていて、これは単体か結合か区別がつかなくなるときがあります。単に自分の技術や知識が足りないだけかもしれませんが、geoさんのおっしゃるとおり、どこを単体と定義するかがありきだと思います。単に書籍を読んだだけでは理解できないものってありますよね。

投稿: ただいま修行中 | 2006年12月11日 (月) 21:44

>ただいま修行中さん

コメントありがとうございます。
書籍を読んだ上で本物のテスト工程で試してみないと、って感じます。試してみて自分のプロジェクトに
適した工夫を加えるまでを1サイクルにしたいです。

投稿: softest | 2006年12月12日 (火) 09:27

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/155415/4470419

この記事へのトラックバック一覧です: 単体テスト~結合テスト:

« ソフトウェアテストPRESS vol.1 - テスト駆動開発と単体テストのカンケイ | トップページ | 考慮漏れのディメンジョン »