本連載では、開発プロセスの中でも重要な位置を占めるテストプロセスに着目し、全体最適を実現させるために、どのように現実のテストプロセスに取り組んでいくべきかを考察しています。今回も前回に引き続きソフトウェアテストのトレンドにフォーカスを当て、テストケース生成の技法「MBT」について解説します。

Model Based Testingの略で、その名の通り開発で作られた設計モデルをもとにテスト設計する技法です。

テスト設計するための材料のことをテストベースと呼びますが、MBTではテストベースとして設計モデルを使います。MBTではテストベースの設計モデルの表記法として、広くソフトウェア開発で用いられているOMG:Object Management Groupが定めているUML:Unified Modeling Languageや通信分野の国際標準団体であるITU-T(国際電気通信連合)が定めるTTCN-3が用いられています。

ちなみに、UMLではテスト分析、設計、実装のためのプロファイルであるU2TP :UML2.0 Testing Profileも用意されています(『情報処理 Vol.49 No.2 Feb. 2008』P.147-139、小野塚荘一、情報処理学会)。

テストベースに設計モデルを用いることはMBT以外の方法でも行われています。

MBTの特徴は単にテストベースとして設計モデルを利用するだけではなく、テストコード(スクリプト)まで自動生成する点にあります。

これはMDD:Model Driven Developmentの分野にて、UMLで設計されたモデルからコードへの自動生成がかなり実用的になっていることと同じ動きであると考えていいでしょう。MDDのように設計モデルからコードを自動生成できるならテストコードも同じようにできるというアイデアだからです。

MBTではテストベースの設計モデルとして、次のモデルが挙げられています。

・フローモデル:制御フローグラフやデータフローダイアグラムなど
・状態遷移モデル(FSM):ステートマシン図や状態遷移図、状態遷移マトリクスなど
・トレースベースドモデル:シーケンス図やコラボレーション図
・組み合わせモデル:直交表やAll-pairなど
・統計モデル:ユーザープロファイルモデルなど
・代数的モデル:プロセス代数、ペトリネットなど
・形式モデル:Spec#、JML、 B、 UML with OCL、 Zなど

実際には以下の図のように、設計モデルをそのまま使うのではなく、テスト項目に変換するためのひと手間が必要とされています。

図6 モデルベースドテストの流れ(出典:この図は電気通信大学 西氏によるもので(※2)、参考文献『Model Based Testing: What? Why? How? and Who cares?" Alan Hartman、IBM Research Haifa Labs』をベースに作成されています)

※2 出典:モデルベースドテスト入門、西康晴、JaSST'07東京のチュートリアル資料(本資料はJaSSTのサイトからダウンロードできます)

その分、設計モデルからテスト項目(テストデータ)やその期待値までを自動生成できますから、テストの合否判定まで自動化が可能となります。かなり期待できる分野であるのは事実ですが、現在でも進化しつつある技法(というより実際は技術の集まり)です。このため課題も多く、テストケースの自動生成のためのモデルの表記法の洗練化や、複数のチャート(例えばステートマシン図とシーケンス図)を組み合わせたテストケースの自動生成、自動生成のためのアルゴリズムの検証、MDDとの連携などが挙げられます。

本稿では、あくまで筆者がよく目にしたり耳にしたりするテストの方法論や手法、技法のいくつかを取り上げただけですから、主要な事柄をすべて網羅できているわけではありません。また内容についても、静的テスト(技法)の領域となる静的解析や形式手法、モデル検査などは含めず、動的テストに絞っています。

もっと深く知りたい方は、本文中で紹介した参照文献に加え、テストに関するトレンドやトピックを調べる上で有用なWebサイトをいくつか文末に掲載しましたので、こちらもチェックしてみてください(テストの最新情報は、どうしても英語圏のサイトが多くなってしまいますが、ご了承ください)。

今回説明できなかった「テスト自動化」に関する話題は、冒頭で述べたように、次回の筆者である湯本氏に引き継ぎます。どうぞお楽しみに。

~謝辞~
本稿を執筆するにあたり、文献や資料の引用についてご快諾くださった、
秋山浩一氏、池田暁氏、鈴木三紀夫氏、西康晴氏に厚く御礼申し上げます。

参考URL

stickyminds(英語)  http://www.stickyminds.com/testandevaluation.asp softwaretestingclub(英語)  http://www.softwaretetingclub.com/ testing experience(英語)  http://www.testingexperience.com/ HAYST法  http://hayst.com MBT(英語)  http://www.goldpractices.com/practices/mbt/index.php TPI(英語)  http://www.sogeti.nl/Home/Expertise/Testen/index.jsp TMMi(英語)  http://www.tmmifoundation.org/

執筆者プロフィール

大西建児 (Kenji Onishi)
株式会社豆蔵 シニアコンサルタント。国内電機メーカー、外資系通信機器ベンダーで培ったテストや品質保証などの経験を生かし、テスト手法や技術の普及、発展に取り組む。NPO法人ソフトウェアテスト技術振興協会(ASTER)副理事長。JaSST’08東京 共同実行委員長。著書に「ステップアップのためのソフトウェアテスト実践ガイド」(日経BP社)などがある。

『出典:システム開発ジャーナル Vol.5(2008年7月発刊)
本稿は原稿執筆時点での内容に基づいているため、現在の状況とは異なる場合があります。ご了承ください。