FTFI -どうして2因子間網羅なのか-

しつこいようだが、ソフトウェアテストは、いかにして少ない手数で多くの欠陥を見つけるか、がキーである。

どこに欠陥が入り込みやすいか、という問いにはいくつかの解答があるだろうが、直交表・HAYST法・All-pair法などを勉強する場合、勘所は組み合わされる条件の個数になることが一般的。なぜか。

ソフトウェア・テストPRESSでもネットにも資料があるのだが、欠陥の多くは単因子の場合と2つの因子による場合とでほとんどが構成される。

Ftfi

(引用元: http://www.jasst.jp/jasst05w/pdf/S4-3.pdf)

ちなみに、NetscapeやApacheなどは2因子まででは欠陥混在数が収束せず、3因子の関係も考慮する必要があるプロダクトといえる。これはプロジェクトが大規模でメンバーが数多い場合には、多数因子の組み合わせでも欠陥が少なくない、との見方がされる。

2因子あるいは3因子までの組み合わせを考慮すれば、ほとんどの欠陥は検出できる、というのはこの経験則によるところが大きいと思われる。(田口博士による、バグの数は因子数で指数的に小さくなるという理論もあるかな)

==

ここからは私見。

All-pair法は2因子間網羅を特に意識しているが、テスト実施者=開発担当者であれば、2因子間網羅すら間引いてもいいんじゃないかって思う。抽象化・グルーピングによって2因子間網羅率は低下するだろうが、先の条件下であれば極端な品質低下にはつながらないし、効率もいいのかな、と。ホワイトボックス的なアプローチができるはずなので。


| | コメント (0) | トラックバック (0)

タグチメソッド for ソフトウェアテスト ≠ HAYST法 と思ってます

久しぶりに直交表/HAYST法関連のブログ記事~。

==

以前ご紹介したブログで直交表やHAYST法についての考察が出された。

マイリストに「ソフトウェアテストにおける直交表(HAYST法、All-pair法)の利用」をアップ by つれづれなる技術屋日記



・ソフトウェアテスト開発技術者やソフトウェアテスト技術者にとって未知の世界
・タグチメソッド自体が賛否両論
・直交表自体の学習の難しさ
 ・実験計画法の記述のほとんどが、数式と表
 ・ベースとなる統計や代数・幾何

直交表とかタグチメソッドとかいう名前を会社の上司に話したとしても、知ってる程度で実際に直交表の書かれた紙や画面を見せると、苦笑い、といったことが多い。これは指摘の通り、未知の世界だということが大きいかも。今や大学在籍時の専攻が理学系だったとしても、なかなか数学って敬遠されがちな分野。行列とかベクトル空間とかあんまり記憶にないのが現実。だから、「直交(orthogonalかな?)」という概念もすぅ~っと頭に入りにくい。

僕はちなみに数学を主専攻にしていたので、大学時代ぶりの数式を見るとけっこう楽しい。ツボだね。それは同僚からすると意外に稀有な存在に映るらしい。



・タグチメソッド(品質工学)との間隙

(中略)

 ・SN比など重要な概念が、電気・機械・化学等の計測した数値の場合が多い
 ・体系が、電気・機械・化学等の事例をベースに確立されている

タグチメソッドについて浅学すぎて議論についていっていないかもしれないが、ここで僕の考えは少し違う。そもそもタグチメソッドを利用したソフトウェアテストという体系と、直交表を使ったソフトウェアテストという体系は別物だと考えてます。どういう理屈からかというと、、、

# 以下、浅学なため見当違いの意見を含むかもしれませんので、ご指摘を。。

  • タグチメソッドとはいかに分散を抑えるかが目的
  • タグチメソッドを説明するサイトで多く見られるのが、平均値が正確な技術と分散が小さい技術、どちらを優秀と評価するか、といった例が挙げられている。このメソッドによって、例えばどういった環境とどういったデータでソフトウェアは想定した動作をするかを評価はできる。あるいは、サーバのCPU性能、メモリ搭載量、ディスク性能といったパラメータがどのように処理性能に影響するかを評価するときに利用できる。

  • 直交表の性質から、効率的な組み合せパターンを作成できる
  • 直交表は任意の2列が直交という性質を持っていて、それをテスト条件の因子に当てはめると、効率的なテストケースのパターン作成に役立つ。例えば、ON/OFFの2種類の条件が7つあった場合、組み合せ数は2の7乗=128通りが想定できるが、任意の2条件についてすべて網羅できるという制約をつければたった8通りのテストケースで網羅できる。また、ソフトウェアによっては3条件以上の網羅を必要とする場合があるが、それも田口博士の工夫によって網羅率を高める方法が存在する。

    以上のように、ソフトウェアテストへの応用について言えば、タグチメソッドと直交表とは区別したほうがいいのではないか。と、私見ではあるが考える。



    少ない利用事例

    ・タグチメソッド自体、ソフトウェアでの利用事例発表が少ない
    ・HAYST法利用での発表も同様
    ・All-pair法利用での発表は皆無(特に日本。参考文献5は貴重)

    ほんっとに、少ない。ソフトウェアテスト全般に活用できるとは思っていないが、局所的にはすごく便利なツールなのでもっと文献や資料、事例がないと、なあ。タグチメソッド(というかSN比)の活用については、負荷分析に利用できる、といった示唆はあったが、それくらい。



    ・ソフトウェアテストのイメージ(困難な直交表経験者の流用)

    (中略)

     ・従来のタグチメソッド用ツールが使えない(HAYST法のツールはソフトウェア専用。たぶんAll-pairも)
     ・逆にソフトウェア直交表ツールを、ハードウェアのタグチメソッドに使えない

    お互いのツールがお互いを意識していないから、だろうか。



    ・ホワイトボックステストへの利用

    (中略)

    function funcA(a1, a2:integer)
     :
     :
    function funcA(b1, b2, b3:integer)
     :
     :
    function funcA(c1, c2:integer)
     :
     :

      funcA~funcCを因子へ
      a1~c2を水準へ

    なるほど。この考え方は僕にとっては新鮮でした。単体テストケースで直交表を利用するというのはやってみたいな。ただし、関数I/Fが変更された場合はおそらくゼロから単体テストケースを作り直す必要はありそうだ。


    ==

    いや~、PDF76ページの大作。読みごたえあり。すべてについて感想や意見を書く時間はなかったけれど、何かアクションしたかったので記事にしてみました。直交表って魔法に見えたり、難解なパズルに見えたり、いろんな顔を持ってるので、感じ方も千差万別かな。


    | | コメント (2) | トラックバック (0)

    直交表もだいぶわかってきたので、次はHAYST法の研究

    直交表についてはだいぶわかってきたし、性質も見えてきた。そろそろHAYST法のほうも本格的に研究対象にしてみようっと。

    ==

    HAYST法とは、富士ゼロックスの秋山浩一氏などが中心となって考案したソフトウェアテストにおける組み合せ手法のひとつ。ベースとなっているのは田口玄一博士で有名な実験計画法で用いられる直交表であり、

  • 2水準系直交表の利用

  • 禁則回避処理

  • 組み合せ網羅率をテスト品質指標として採用

  • 不具合の即時原因解析

  • パフォーマンステストの解析
  • といった特徴/手法を持っている。詳細の解説については今後記事として書いていけたら、と思っている。


    ※以下の資料を参考/引用しています

  • 直交表を利用したソフトウェアテスト

  • 直交表を活用したソフトウェアテストの効率化 - HAYST法の活用 -
  • | | コメント (0) | トラックバック (1)