注意: 要点を絞って整理されたものではなく、そこはかとない随筆です。結論だけ知りたい人は、最後の「まとめ」の3行だけ読んでください。
日本のソフトウェアテスト好きな技術者の大半が、一度は聞いてみたことがある(と勝手に思っている)「Ostrandの4つのビュー」1。多くの人は、電気通信大学のにしさんが作った、いずれかのスライド資料で目にしたんじゃないでしょうか。資料によって、その内容が多少異なっていたりしますが、概ね次の図2と同様なものかと思います。
私自身は、もはやいつ最初に見たのか記憶にないのですが、「確かにさまざまな側面からテストを考えるし、バランス大事よなー」と特に違和感なく、頭の片隅にはあったの程度の理解だったのですが、実務においてOstrandの4つのビューに基づいてテストアーキテクチャを組み立てているプロジェクトを支援する機会があり、その際にOstrandの4つのビューの正確な情報を確認するために原典にあたる機会がありました。
その時、原典にたどり着くのに地味に苦労したことと、私のように「Ostrandの4つのビュー」を見聞きしたことはあるものの原典まであたる機会がなかった人は少なくないようなので、改めて記事にまとめてみました3。
原典を探す
にしさんがqualab.jpで公開しているPDFの内、Ostrandについて言及している資料を調べてみると、次の通りでした。
-
テスト観点に基づくテスト開発方法論 VSTePの概要 P.19
- 図とともに
Ostrandの4つの主なテスト観点
としてUser-view
、Spec-view
、Design-view
、Fault-view
を示している。また、各ビューについて、簡単な説明を付記している。- User-view:
ユーザが何をするかを考える
- Spec-view:
仕様を考える
- Design-view:
設計やソースコードを考える
- Fault-view:
起こしたいバグを考える
- User-view:
- 図とともに
-
テスト観点に基づくテスト開発方法論 VSTePの概要 P.22
- 図は示さず、文章として
Ostrandの4つのビュー
、ユーザビュー
、仕様ビュー
、設計・実装ビュー
、バグビュー
を示している
- 図は示さず、文章として
-
Viewpoint-based Test Architecture Design P.22
- NGTで4つのビューをそれぞれ
User
、Spec
、Design
、Bug
として表し、Style based on Ostrand's article
と示している。
- NGTで4つのビューをそれぞれ
また、にしさんがSlideShareで公開しているさまざまな資料の中でも、Ostrandの4つのビューを示しています。しかし、上記以上に詳細にOstrandの4つのビューについて記述しているものはなく、また、どの資料にも出典がOstrandのどの文献なのかは示されていませんでした。
上記の資料とその周辺情報を確認していく中で、にしさんが何に基づいてこの4象限の図を作成したか、唯一言及されているであろうWebで見つけられた情報源は、次のものでした。
にしさんの資料の中ではなく、それを引用した記事の記述の中で示されていました。その中では、次のように示されています。
※出展:『ソフトウェア工学大事典』(片山卓也,鳥居宏次,土居範久 翻訳/朝倉書店/1998年)中のThomas.J Ostrandによる「テストの種別」をベースに,電気通信大学の西康晴氏によりNPO法人SESSAMEの初級セミナーテキストにて図示化されたものを引用
私がWebで探した範囲ではありますが、Ostrandのどの文献であるかまで言及してくれているものは、これだけでした。ありがたや。
なお、上記が示しているSESSAMEの初級セミナーテキストは、次のものと思われます。
この初級者向けテキストを見ると、スライド番号226(ページ番号113)にOstrandの4つのビューが出てきています。ここでは、Ostrandとは述べてはいないですが、内容はOstrandの4つのビューと同じものですね。この資料が、にしさんの資料をWebで確認できる範囲の中では、一番古い資料のようです4。
ともあれ、ここで示されている情報も、ここまで調べてきた範囲と変わらないため、より詳しく知るには、やはり上記に示されている原典である「ソフトウェア工学大事典」にあたるのが良さそうです5。
原典を調達する
さて、「ソフトウェア工学大事典」を調べてみると、朝倉書店から出版されていることがわかりました(原著は英語ですがが、こちらは訳書です)。
しかし、刊行日が2007年5月31日となっています。にしさんの(確認した範囲での)初出よりも後の日付とはどういうことでしょうか。本のタイトルをよく見ると、「普及版」と書かれています。初版は1998年12月1日とあり、どうも改訂版のようです(実際に手に取って確認できてないですが)。
改訂版の内容も気になりますが、ともあれ原典を調べるという意味では初版本の方がよいでしょう。残念ながら初版はすでに絶版なので古本で調達しました(より正確には、英語版の初版にあたるのが良いと思いますが、「大事典」の名を冠した、訳書で1688ページもある英語の書籍から、該当の箇所を見つけ出せる気がせず、日和りました)。
兎にも角にも「ソフトウェア工学大事典」の初版(日本語訳)の書籍をゲット。1668ページは、間違いなく自分が持っている書籍の中で一番分厚い書籍であり、その重さからして凶器レベルです。
原典を読む
そのP.924から927の約3ページ半に、Ostrandが書いたトピックとして「テストの種類(categories of testing)」が掲載されていました。そのなかの「テストを作るためのソース」というセクションの中で、以下の4つの分類を説明しています。
- 仕様ベースのテスト(specification-based test)
- 実現方法ベースのテスト(implementation-based test)
- 誤りベースのテスト(fault-based tests)
- 使用ベースのテスト(usage-based tests)
おおう、Ostrandはビューって言ってないですね。また、implementationがdesign、usageをuserとなっているなど、表現も微妙に異なっています。なお、Ostrandの原典では、テストのビューという意味合いというよりは、今で言うテストオラクルやテストベースを分類に近いニュアンスを受けました(以下の引用参照)。
テストケースを作るためのソースとしては、実際のテスト値を生成するための特定の情報が必要である。(中略)。テストデータを作るために、次のような4つのソースを区別することができる。問題仕様、問題の作り込み、欠陥情報とその履歴、および、プログラムの使用情報。
そして、この4つに分類の中において、こういったテスト(いまいでいう、テストタイプやテスト技法的なもの)があって、それらはこういったものだよと説明しているようです。さすがに、それを説明した文の全体を示すのは引用の範囲を超えてしまうので、詳細を知りたい方はぜひ原典を読んでいただければ思います6が、雑に要約すると次のような形です。
- 仕様ベースのテストは、機能テストやブラックボックステストとも。
- 実現方法ベースのテストは、コードやアーキテクチャの設計に基づく。コードベスのテストは、構造テストやホワイトボックスとも。より具体的には、制御フロー(control fow)とデータフローに基づく。
- 誤りベースのテストは、過去の誤り(fault)を蓄積した知識に基づく。mutation testingやエラーベースのテストの2つの技法。
- 使用ベースのテストは、使用情報やテストされたアプリケーションに対するする入力の履歴。ランダムテストを含む。
上記の内容はにしさんが示したOstrandの4つのビューから自分が想像していたものとは、結構異なるもののようです。どちらかというと、Ostrandが示したと言うよりも、Ostrandが示した4つの分類をベースとしつつも、にしさんがテストを考えるときに仕様だけではなく、他のさまざまな観点からも考えないとだめで、テストはバランスが大事である」という考えをアウトプットするために再構成したものと捉えた方が、腹落ちできそうです。
とはいえ、テストを考える上での指針的な意味合いで「Ostrandの4つのビュー」を示すことは、大半の人が「そうだよねー」と同意してくれるとおもいます。が、一方で、自分たちのテストの方針や戦略、もしくはテストアーキテクチャの骨子として「Ostrandの4つのビュー」を使う際には、自分たちの文脈として、そも「Ostrandの4つのビュー」と各ビューをどのようなものとして捉えていて、それをどのように落とし込んだかをしっかりと説明しておかないと、認識のギャップが生まれてもおかしくはないでしょう。元々の話からして抽象度が高く、詳細を定義しているものではないので。
まとめ
さて、だらだら書いてきましたが、ここまで書いてきたことをまとめると、次の3行に要約できるでしょう。
- にしさんの「Ostrandの4つのビュー」の源泉6は、「ソフトウェア工学大事典」でOstrandが記述した「テストの種類」における「テストを作るソース」の4つの分類に端を発する
- にしさんの「Ostrandの4つのビュー」は、上記をベースに独自に作った「テストを考えるときの4つの主なテスト観点」で、いろんな側面をバランス良く考えようという4象限のモデル
- にしさんの「Ostrandの4つのビュー」は、詳細に説明されたものはなく、また、抽象度の高いモデルなので、自分たちの文脈で使うのであれば、自分たちなりにしっかり定義して使おう
もし、機会があれば、ぜひ原典をあたってみると、新しい発見があるかもです。
-
もしくは、Ostrandの4つの主なテスト観点とも。 ↩
-
実は、この記事を執筆している途中、関係資料などを整理している中で、約3カ月ほど前にkz_suzukiさんが既にご自身のブログで「テスト設計技法を分類する「Ostrandの4つのビュー」の原典に一生たどり着けない」とい記事を発表されていました(タイトルは「たどり着けない」とありますが、その後の補足として原典までたどり着いてます)。そのため、二番煎じな記事を書くのもなーと考えたのですが、せっかく書いちゃったしもったいないという言い訳とともに投稿してます。まぁ、同じ主題の異なる二つの記事を読み比べるのも面白いかもなので、ゆる~く読んでいただければ幸いです。 ↩
-
kaz_suzukiさんのブログ記事を拝見するに、にしさんが初めてOstrandの4つのビューについて言及したのは、Java Workdの2002年10月号の特集記事ではないかという事らしい(辰巳さん談)ですが、さすがに手元にない…。SESSAMEの初級者向けテキストは、版を重ねているので確認できないですが、初版のころと変わっていなければこちらも2002年の10月とはいえ、雑誌の方が早いですね。 ↩
-
サポートページ:ソフトウェアテスト入門 押さえておきたい<<要点・重点>>:|技術評論社 (gihyo.jp)の記事の中では、実はにしさんのスライドよりも少しだけ具体的な説明があります。「ユーザー指向:ユーザーの明示的もしくは潜在的要求カず満たされているかどうかを検証。不具合指向: 想定した条件下にて、用途を満たすうえでの不具合の洗い出しとしての検証。要件指向: ユーザーと合意した用途 (要件) を満たせているかどうかを検証。設計指向: 開発視点で、設計で意図したとおりの実装/ 動作であることを検証」(P.46)。ただし、この記事のコンセプトは、SWEBOKにそった形で、ソフトウェアテストについて説明するものであり、必ずしも、Ostrandの4つのビューを具体的に説明しているものではありません。なお、この書籍は、雑誌のソフトウェア・テストPRESSを再編集したものです。同様の内容は、ソフトウェア・テストPRESS Vol.1のP.20でも確認できます。 ↩
-
後になって知ったのですが、kaz_suzukさんのブログ投稿経由で、@KeizoTatsumiさんのX(旧ツイッター)の投稿から知ったのですが、WILEY Online Libraryで、このOstrandのCategories of Testingのパートだけを購入できるようです。価格は42ドル。 ↩ ↩2