直交表――組み合わせ全部なんて食べられませんから
今回は、先日の第3バイオリンさんのコラム 「WACATE 2012 夏」参加レポート(その1)――組み合わせ全部テストするなんて無理ですから でも説明のあった「直交表」について、日常生活に活かすことを考えてみた。
■直交表の前提
ソフトウェアのテストパターンを作るときに使われる直交表は、「2つの因子の組み合わせを網羅してテストしておけば、ほとんどのバグを検出できるだろう」という前提に基づいている。
第3バイオリンさんにならってラーメンに例えて、麺の堅さ、スープ、トッピングの3つの因子があるとしよう。すべての組み合わせを味見するには、アルバイトにギャル曽根を連れて来なくてはいけない。一般人が味見するにはテストパターンを減らすことを考える。まずそのうちの2つ、例えば麺の堅さとスープの組み合わせについてすべてを網羅する。
麺の堅さ | スープ |
堅め | 味噌 |
堅め | 醤油 |
堅め | 塩 |
普通 | 味噌 |
... | ... |
軟らかめ | 醤油 |
軟らかめ | 塩 |
次にスープとトッピングについて、「味噌×焼豚」「味噌×もやし」……とすべての組み合わせを網羅する。 最後に麺の堅さとトッピングの組み合わせも網羅する。それらをまとめると2つの因子の組み合わせを網羅したテストパターンを作ることができる。
ここでは、「軟らかめ×塩×焼豚」も「軟らかめ×味噌×もやし」も「堅め×塩×もやし」もおいしいが、「軟らかめ×塩×もやし」の組み合わせだけマズい」というような、3つの因子の特定の組み合わせでのみ不具合が起こる可能性は低い、ということが前提となっている。
■直交表とは
上記の前提で、2つの因子を網羅して上から順に単純に組み合わせたのが、All-Pairs法。ただしこれだと同じパラメータ、例えば堅めの麺ばかりが多くテストされてしまう。因子と水準がまんべんなくテストされるように工夫してあるのが直交表だ。
■直交表を日常生活に活かそう(?!)
私の友人Aは、子供が5人いるがすべて息子である。一方、別の友人Yには5人の娘がいる。A氏は娘、Y氏は息子が欲しかったと言っている。
それに対して、ITの仕事で直交表の理論を覚えた私には4人の子供がいるが、その組合わせは以下のようになっている(名前は架空)。
名前 | 性別 | 血液型 | 利き腕 |
一郎 | 男 | B | 左 |
二郎 | 男 | A | 右 |
三奈 | 女 | B | 右 |
四つ美 | 女 | A | 左 |
性別×血液型、性別×利き腕、血液型×利き腕、ですべての組み合わせを網羅している(親の血液型からAB型とO型はありえないので除外)!
IT技術で学んだ直交表を使うことで、バラエティに富んだ子供を産み分けることが...…
できるわけがないっ!
こうのとりか神様が直交表を使ったのかもしれないな。(~_~;)
お笑い系コラムニスト abekkanでした。