連載
» 2004年12月03日 12時00分 公開

ソフトウェアテスト・エンジニアの本音(2):テスト設計の基本とさまざまなテスト技法-1 (1/2)

[大西建児,株式会社豆蔵]

 今回もテストに「ずっぽり」とはまってしまっているエンジニアたちが集まって主催する「JaSST:ソフトウェアテストシンポジウム」実行委員会のメンバー(以降JaSSTメンバー)による、肩の力を抜きながらも、多少技術寄りでテストの味付けが濃い議論をお届けします。

 JaSST'05(2005年1月24〜25日に品川の東京カンファレンスセンターで実施予定)の開催が近づいてきており、気が付くと残すところ2カ月となりました。そこで本記事のための議論を行う懇親会前の、例会(本当はこっちがメイン)では、かなり具体的な企画の検討で盛り上がりました。ライブイベントも昨年以上に面白いものを実施する予定です。ぜひ楽しみにしてください。なお、本記事が掲載されるころには一般参加のご案内で詳細をお知らせできる予定です。

  では今回も聞き慣れない用語や表現にはできるだけ解説を加えつつ話を進めていきます。

議論パート

テスト技法に対する参加者のさまざまな認識

 10月某日、都内某所にてJaSST実行委員会が実施された後、議論で疲れつつ今宵(こよい)もテスト談義に花を咲かすべく、前回と同じ飲み屋にたどり着きました。まずは生ビールで乾杯をした後、完全に酔っ払わないうちに議論をすべく大西が議論の口火を切りました。


大西 話のネタ振りとして、まずは世間一般でどんなテスト技法が使われているのかを示せればよいですよね。ちょうど、この前テストの話をしてきたセミナーのアンケートに参考データが載っていたので、少し紹介しましょう。

 そういって大西がカバンから、「NPO法人組込みソフトウェア管理者・技術者育成研究

会(通称SESSAME:セサミまたはセッサミと発音)」のセミナーアンケート結果を取り出して、メンバーに見せました(2004年10月の中級者向けセミナーアンケート結果より抜粋)。


■ 制御パステスト[注1]

  1. 知っていて使っている 18.20%
  2. 知らないが似たようなことをやっている 23.60%
  3. 研修やセミナーなどで聞いたことがある 9.10%
  4. 知らなかったが、使ってみたい 29.10%
  5. 知っているが、使っていない 20.00%
  6. 興味はない 0.00%

■ 境界値テスト[注2]

  1. 知っていて使っている 69.60%
  2. 知らないが似たようなことをやっている 5.40%
  3. 研修やセミナーなどで聞いたことがある 1.80%
  4. 知らなかったが、使ってみたい 5.40%
  5. 知っているが、使っていない 17.90%
  6. 興味はない 0.00%

■ テスト・レビューを意識して行っているか

  1. きちんと行っている 26.80%
  2. 余裕があるときは行っている 57.10%
  3. 時々行っている 12.50%
  4. ほとんど行っていない 3.60%

【注1】 [制御パステスト] モジュール内のロジックをすべて通すようにテストデータを与えるテスト

【注2】 [境界値テスト] モジュールの引数などに与えるテストデータを、端っこの値(境界値)とするテスト


大西 この数字だけ見ると基本的なテスト技法が現場で広まりつつあるのは分かるけど、制御パステストは意外とまだまだ使われてない感じがありますね。昨年の数字からも、あんまりこの傾向は変わってないんですが、参考にどうぞ。

 といって、今度は昨年のセミナーアンケート結果も並べました(2003年10月の中級者向けセミナーアンケート結果より抜粋)。


■ 制御パステスト

  1. 知っていて使っている 17%
  2. 知らないが似たようなことをやっている 20%
  3. 研修やセミナーなどで聞いたことがある 15%
  4. 知らなかったが、使ってみたい 24%
  5. 知っているが、使っていない 8%
  6. 興味はない 1%

■ 境界値テスト

  1. 知っていて使っている 68%
  2. 知らないが似たようなことをやっている 9%
  3. 研修やセミナーなどで聞いたことがある 3%
  4. 知らなかったが、使ってみたい 4%
  5. 知っているが、使っていない 8%
  6. 興味はない 1%

■ テスト・レビューを意識して行っているか

  1. きちんと行っている 28%
  2. 余裕があるときは行っている 45%
  3. 時々行っている 16%
  4. ほとんど行っていない 4%

大西 テストやレビューは、余裕がないとやらないというのは去年も変わりなく寂しい限りです。ところで、皆さんのテスト技法に対する認識はどうでしょう?

榊原 テスト技法というわけじゃないけど、テストって昔からいわゆるKKD(経験・勘・度胸)だけでやってきたという現場が多いんじゃないですか。KKDでやっている限り、MMK(もうかってもうかって困る)という次元にはまず達しないから基本的なテスト技法くらいは押さえておかないとね。

松岡 そりゃあそうでしょう。境界値くらいはMustでしょう。

湯本 Mustというか、テスト担当者は境界値テストを本能でやっていますよ。

 ここでテスト実践派(動的テストによる検証をこよなく愛する人たちのことを指す)は一同、大きく首を縦に振ったのでした。


大西 確かに制御パステストにしろ、境界値テストにしろ、当たり前に使わなきゃいけないでしょうね。じゃあ、実際に使ってみて効果があるベーシックなテスト技法って何だと思います?

西 機能一覧のリストを使って、機能網羅テストするだけでも、地道だけれど以外と利くんですよ。ただ機能をリストしてるだけって、結構バカにされたりするけど、こんな基本的なことでさえ、実際にやるとびっくりするほど効果的なんですよね。

大西 機能網羅くらい当たり前だと思うんですが、何せ余裕がないとやってもらえないフェイズだから、逆に考えると少しでもやれば効果が上がるんでしょうね。さて、ほかにもないですか。

榊原 基本といえばデシジョンテーブルでしょう[注3]!


【注3】 [デシジョンテーブル] プログラムロジックを条件と動作に分け、マトリクスで表現した表


鈴木(三) 変則的なデシジョンジョンテーブルの使い方もありますね。

湯本 DBのテストをするときは、CRUD[注4]をちゃんと作って網羅性を確保するのも大事なんで結構真剣にやってますよ。TMap[注5]では、データライフサイクルテストなんていい方をします。


【注4】 [CRUD] CRUD(Create、Read、Update、Deleteの頭文字を取ったもの)は、テスト対象の完全性を網羅的に確認するときに使われるマトリクス。詳細は「ソフトウェア要求」(日経BPソフトプレス)を参照

【注5】 [TMap] ソフトウェアテスト方法論の1つ。「テストプロセス改善」(共立出版)の中にTMapの概要説明がある。詳細はオランダのソフトウェアテストを専門とするSogetiのWebサイトにある


鈴木(三) そうそう。僕もCRUDを使ってテスト設計してますよ。

榊原 CRUDは設計でやることじゃないの?

湯本 本来そうです。デシジョンテーブルも本来は設計できちんとやらなきゃいけないことだと思いますよ。テスト技法も突き詰めると設計と同じテクニックが求められるわけですよね。

テスト技法とモデルの重要性

大西 なるほど。ここまでは基本的な技法について話をしてきましたが今度は知っているようで知らないとか、よく分からないテスト技法について何か聞かせてもらえませんか。

榊原 テストマニアが心躍る技法もあるよね? 例えば、直交表[注6]が大好きな人たちもいるし。


【注6】 [直交表] 実験計画法(別名タグチメソッド)で用いられ、あらかじめ全ペアとなることが保証されている、変数と値で構成される表(実験計画法では因子と水準と呼ぶ)


 テスト実践派一同 確かに、実践派として直交表をきちんと使いこなせると、かっこいいかもしれない。


大西 昨年のJaSST'04では直交表に関する発表がベスト・スピーカー賞でしたね。あれは、きちんと使いこなせている良い事例ですね。

鈴木(三) ホワイトボックス[注7]とブラックボックステスト[注8]の中間的な位置付けのテストとして、グレーボックステストもはやっていますね。初めてこの技法名を聞いたエンジニアは結構、「へぇ〜」となりますね。


【注7】 [ホワイトボックス] テスト対象の中身や作り(プログラムの構成と仕組み)が全部見えているテスト

【注8】 [ブラックボックステスト] 中身や作りを見ずにインプットされ処理された結果としてのアウトプットを検証するテスト


湯本 いろいろ技法を論じていて思うんですけど、テストで大事なのも結局モデルですよね。状態遷移テストや制御パステストなど、モデルがしっかりしていないとテストの妥当性が確保できないですから。

西 しっかりとモデルを作らないと網羅できないでしょうしね。そういえば、話は変わりますが……。


 どうやら、前回同様モデルの話に行き着いたところで、話はテスト以外の議論へと移っていきましたので、今回の議論パートはここまでにしたいと思います。では次のパートでは、議論の後半に取り上げられたモデルベースのテストについて解説しましょう。前回でもモデルとテストの関連について取り上げましたが、それを補足する意味で、今回は角度を変えた説明を行います。以下の解説は湯本と本記事取りまとめ担当の大西がまとめました。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ