menu
書いてる野郎
orebike@gmail.com
テストをする場合テスト対象の関数、メソッドのパラメータが多いとそれが組合せ爆発してしまい効果的なテストを短い時間で作れなくなってしまう。
そこでちょっと工夫することでそれを手抜きする方法
どのように手抜きするかというと、各因子の組み合わせが各因子同士で網羅できればよしとする。
因子が 2、水準が 2 パターンあったとすると。
$$ 2 \times 2 = 4 $$
で完全網羅と同じになる。
因子が 3、水準が 2 パターンあったとすると、完全網羅だと
$$ 2 \times 2 \times 2 = 8 $$
因子1 | 因子2 | 因子3 | |
---|---|---|---|
試行1 | 0 | 0 | 0 |
試行2 | 0 | 0 | 1 |
試行3 | 0 | 1 | 0 |
試行4 | 0 | 1 | 1 |
試行5 | 1 | 0 | 0 |
試行6 | 1 | 0 | 1 |
試行7 | 1 | 1 | 0 |
試行8 | 1 | 1 | 1 |
これに対して強さ2で直交表を作成すると、各パターンが 4 パターンずつ出てくる。 つまり、4 + 4 + 4 で12パターンになっている。
因子1 | 因子2 | 因子3 | |
---|---|---|---|
試行1 | 0 | 0 | |
試行2 | 0 | 1 | |
試行3 | 0 | 0 | |
試行4 | 0 | 1 | |
試行5 | 1 | 0 | |
試行6 | 1 | 1 | |
試行7 | 1 | 0 | |
試行8 | 1 | 1 | |
試行9 | 0 | 0 | |
試行10 | 0 | 1 | |
試行11 | 1 | 0 | |
試行12 | 1 | 1 |
一見パターンが増えているように見えるが、歯抜けの部分は同時に試行できると考えると
こうなる。
因子1 | 因子2 | 因子3 | |
---|---|---|---|
試行1 | 0 | 0 | 0 |
試行2 | 0 | 0 | 1 |
試行3 | 0 | 0 | |
試行4 | 0 | 1 | |
試行5 | 1 | 1 | 0 |
試行6 | 1 | 1 | 1 |
試行7 | 1 | 0 | |
試行8 | 1 | 1 |
そしてここから重複分を除去すると
こうなる。
因子1 | 因子2 | 因子3 | |
---|---|---|---|
試行1 | 0 | 0 | 0 |
試行2 | 0 | 0 | 1 |
試行3 | 0 | 1 | |
試行4 | 1 | 1 | 0 |
試行5 | 1 | 1 | 1 |
試行6 | 1 | 0 |
ということで、6回試行で OK ということになる。これは因子が増えるほど水準が増えるほど試行数抑制の効果が大きくなる。
関数でいうと、各パラメータのこと
これならば、p1, p2, p3 という3つの因子があると考える
function hoge(p1, p2, p3){ }
各パラメータが取りうる値のこと
こうならば 因子 p1 の水準は 0, 1 となる。
function hoge(p1, p2, p3){ } hoge(0, 0, 0); hoge(1, 0, 0);
いくつの因子の組み合わせを網羅しないといけないか