テストの本質を探る ――30年の歴史を持つ 「ソフトウェア工学」の知恵に学ぶ

伊藤昌夫

tag: 組み込み

技術解説 2004年4月24日

●○● Column ●○●
◆アジャイル・ソフトウェア開発について◆

 最近,オブジェクト指向の世界で話題になっていることばに「XP(eXtreme Programming)」というものがあります.XPの提唱者は,Kent Beck 氏ら「デザイン・パターン」の提唱者でもあります.extremeというのは「極端な」という意味ですが,その指し示すものに特に極端なところはありません.あえて日本語にすると,「十全なプログラミング」あるいは,「醍醐味プログラミング」といったところでしょうか注B

 XPは軽量の方法論(methodology)であると提唱者たちは主張しています.素朴すぎるようにも思いますが,デザイン・パターンがそうであったように,いくつかの経験的知識の総和によって開発プロセスや開発手法を示そうとしているように思います.ですから,特徴というのも難しいのですが,主要な点は次の二つだろうと思います.

 一つは繰り返しの重視です.ユーザ要求は絶え間なく変化し,その中でリスクを低減するためにはどうすればよいかを考えます.もう一つはテストの重視です.これまでのオブジェクト指向プログラミングの提唱者たちは問題のない良いプログラミング手法を提供してきましたが,これからはさらに品質の高いソフトウェアが求められます.XPは,これに対するテスト・フレームワークを中心とした対処法を示します.

 先にも述べたように,基本のアイデアはボトムアップです.特徴的なところは,いくつかの「規則と実践すべきことがら」です.これは28あります(2003年12月現在.数や文章は徐々に変化している).ここでは,テストに関するものだけを以下に示します.

   一,すべてのコードは単体テストしなければならない.
   一,すべてのコードは,リリースされる前にすべての単体テストに合格しなくてはならない.
   一,バグが見つかったとき,新たなテストが作られる.
   一,受け入れテストを頻繁に実施して,その結果を公表せよ.

 プログラマは単体テストを「いやいや実施するもの」と思うのではなく,テスト・フレームワークを利用して手間を軽減したり,自動化することを考えなさい,時間がなくて実施しなかったということがないようにしなさい,ということです.そして,「テスト第一(test
first)」という標語とテスト・フレームワークによって,単体テストに対する考えかたを変えなさい,ということを主張しています.ところで,ここでいうテスト・フレームワークとはなんでしょう.

 テストについては,テスト・ハーネスと呼ばれるテスト支援用アプリケーションがあります.テスト・フレームワークもまたテストを支援するためのものです.違いは,テスト・フレームワークは単独のアプリケーションではないということです.まず,個々のテスト・ケースや一連のテスト・ケースに相当するプログラムを書きます.そのためのベースとなるソフトウェアを提供します.これがテスト・フレームワークの役割です.代表的なものとして,Java言語用の「JUnit」があります.これは言語に応じて「なんとかUnit」と呼ばれる一連の単体テストを支援するためのテスト・フレームワークです.

 このXPというのは,アジャイル・ソフトウェア開発と呼ばれるものの一つです.ほかに,例えばDSDM,Crystal Family,SCRUMと呼ばれている手法があります.個々の説明はさておき,全体を見ると一つのことが言えます.DSDMは大規模システム向きであり,一方のXPは小規模プロジェクト向け,そしてCrystal Family は,それ自体がシステムの規模や特性に応じて異なるバージョンを持ちます.つまり,最近は,すべてに適応可能なやりかたがあるという説明ではなく,作るべきシステムの規模や特性によってやりかたは異なるという(考えてみれば)あたりまえの説明になっています.これはテストについても言えます.

 注B;デザイン・パターンの人々は,パターン・ランゲージのAlexander氏の主張に従って,ひとことでそれとわかるように特殊な名まえ付けをする.ファサード(建物正面)やメメント(記念品)などが良い例である.extremeというのは,Beck氏によれば,XP中での規則と実践が,グラフィック・イコライザの表示のようにすべて満足されている状態を表す.つまり,本文の訳ではまず「十全な」ということばを当てた.しかし,これでは普通のことばなので,少しくふうすることも考えられる.少し不そんなので本人たちは決して口にしないだろうが,略語の「XP」というのは「キリスト」を指すことばでもある.キリストに相当するのが仏陀であるとすると,「醍醐味プログラミング」はなかなか良い訳のように思える(当時のインドの人々は乳製品をよく飲み,そのうち,最高ランクの味を醍醐味と呼んだ).なお,この訳語は筆者自身は2年ほど前から使っているが,残念ながらまったく広まるようすはない.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日