Skip to main content

HAYST法

Highly Accelerated and Yield Software Testing.

HAYST法
TIPS
テスト技法ポジショニングマップ
探針テスト
いろはかるた
お問い合わせ
サイト マップ
メンバーのログイン
探針テスト
探針テストのヒントです。


サンプリングテスト

サンプリングテストとは、たくさんのテストケースからランダムに選択したテストケースを実行することで、「テストを全て実施したときに発見されるであろうバグ数を予測する」テストです。
どんなときに、使用するかと言うと、例えば(開発部門による)「統合テスト」まで終わった段階で(第三者評価部門によって)「システムテスト」のサンプリングテストを実施して残りのバグ数を予測し、「システムテスト」にフェーズ移行してもよいかといった判断に使用されます。
 
バグ数の予測方法は、比例関係から推定しようというもので、
 全テストケース数(Tt): 1,000件
 ランダムサンプリングして選んだテストケース数(Ts): 100件
 上記100件のテスト結果(Es): 7件のバグを発見
 もし全部テストしたら(Ep): 70件位見つかっただろう
です。式で書けば、Ep = ES(Tt/Ts)となります。



探針テスト

探針テストとは、奈良隆正氏の資料によると、次の通りです。
 探針とは、製品検査に先立って、デバッグ・テスト段階における品質を検査が実際に測定・評価するものである。これは製品検査と同様に実際の計算機を使用して実施し、この時の摘出バグ件数から製品検査時のバグ件数を統計的手法で推定する。それにより、バグ内容の分析・評価による弱点の具体的指摘でデバッグ・テスト段階でのバグの先取りを加速し、品質向上施策への指針を与えようというものである
探針は、基本的には検査項目をサンプリングし、その結果から全体の母不良率を求め残バグ件数を推定する方法である。 
赤字でマークした「統計的手法で推定」と「品質向上施策への指針を与える」点がポイントと思います。
 
つまり、サンプリングテストで、
もし全部テストしたら(Ep): 70件位見つかっただろう
としているところが、
もし全部テストしたら(Ep): 90%の確率で28件~112件の間になるだろう
といったように、「統計的手法で区間推定」できるようになる点がポイントです。
また、「見つかったバグ件数とその傾向から、開発部門が行ってきたテストについてその弱点を指摘し、品質向上施策への指針を与える」ことが重要です。テスト内容を探針によってコントロールするのですね。



探針テストの方法

探針テストの方法については、上記の奈良氏の資料にありますが、ここではもう少し具体的に上に書いたサンプリングテストの例を使って手順を追ってみます。奈良氏の資料と合わせて読んでください。
 
1. サンプリング方法
 
探針テストでは、全テスト項目の10%から20%をサンプリングします。
そのサンプリング方法は「層化抽出方法」です。「層化抽出方法」とは、具体的にはテストタイプごとにランダムにサンプリングするということです。テスト全体に対してランダムにサンプリングしてしまうと、テスト件数が少ないテストタイプについては1件もテストされないといったことになってしまいます。それでは、「弱点の指摘」に漏れが生じる危険があるため、「層化抽出方法」を取ります。
 
 
2. 標本不良率(p) 

標本と言うのは、サンプリングってことなので、サンプリングしたらどの位のバグが出たかって言うのが標本不良率になります。 

つまり、 標本不良率をpとすると、

 p = (サンプリングテストで検出されたバグ数)/(サンプリングテスト数) 
  = Es / Ts 
  = 7 / 100 
  = 0.07 

です(率で言うと7%ってことです)。 


3. 母不良率の信頼限界の上限値と下限値 

サンプリングでは0.07(7%)という不良率が推定されました。これを点推定と呼びます。探針テストでは、本当の不良率はどういった幅(上限・下限)を持っているか考えてみようというわけです。 

上限値(上限不良率)の式は、 
 Pu = p + u(α) √(p*(1-p)/n) 

です。問題は、u(α)です。u(α)の値を答えから書くと、 
 1.65  → 90%で区間推定したい時(探針テストで通常採用する値) 
 1.96  → 95%で区間推定したい時 
 2.58  → 99%で区間推定したい時 

です。例えば、90%で推定したいのなら、u(α)は、1.65ということなので、 
 Pu = p + u(α) √(p*(1-p)/n) 
   = 0.07 + 1.65 * √(0.07 * 0.93 / 100) 
   = 0.07 + 1.65 * 0.025515 
   = 0.07 + 0.042099 
   = 0.112099 

になります。あとは、全テストケース数(Tt)の1,000件を書ければ上限のバグ推定数112件が得られます。 
下限値は、+が-になるだけなので28件になります。 
 

4. u(α)を自分で求めたい場合 

90%, 95%, 99%以外で区間推定したい時は、標準正規分布表というのを使います。要するに正規分布を仮定して区間推定しているわけです。 

標準正規分布表は、こちらにあります。 

このEXCELシートを開いて、95%なら、 
 (1 - 0.95) / 2 = 0.025 
に最も近いセルを探します。2で割っているのは両端があるからです。 
この場合は、H22セルにある0.024998が一番近いので、その行の左端(A22)にある1.9と、その列のタイトル(H2)にある0.06を足して1.96を求めます(2元表のように見えますが、縦に書くと長くなるので小数点2桁目が横方向に割り振られているだけです)。 

80%なら、 
 (1 - 0.8) / 2 = 0.1 
から、1.28(セルでいうとJ15)が得られます。 

上の例で言えば、37件から102件に範囲が狭まりました(その代わりそこに入る確率は90%から80%に減っています)。 

※ 奈良氏の資料にあるように通常は90%で推定(α=5%)して、「上限値を目指してバグを見つけてくるように」と開発に差し戻すのが探針の方法とのことでした(もちろん、探針テストで見つけたバグ情報を渡してその近辺を重点的に探すようにとの情報もつけます)。 

※ サンプリング件数が少ないとこの正規分布を当てはめた区間推定方法は使えません。奈良氏の資料によると、その場合は二項確率紙から区間推定するとのことです。二項確率紙は、文房具屋さんに売っています。



二項確率紙の使い方

区間推定の精度を上げるためには、正規分布ではなくF分布を使用する必要があります。F分布は(電卓もなかった昔には)計算が面倒でした。
そこで、二項分布紙といった、計算無しに区間推定ができる魔法の紙が発明されました。その紙と使い方については、『二項確率紙の使い方』という本に詳しく書いてあります。二項確率紙の実物は、次のものです。目盛りの数字が平方根に刻まれていることに注目してください。





EXCELを使った方法

今は、電卓やEXCELがあるのでF分布やベータ分布を基にした区間推定が簡単に行えるようになりました。こちらに計算式が入ったものを用意しました。使い方は以下の通りです。
 
1. データの入力
 
「元データ」と書かれている行の黄色いセルに探針テストの情報と、信頼水準(何パーセントで推定したいか)を入力します。
 
2. 結果の見方
 
「ベータ分布による方法」と書かれている行に結果が表示されます。
EXCELにサンプルとして入れている霊では、
 上限のバグ推定数: 422.7
 下限のバグ推定数: 204.2
ですから、、「母集団の平均値は95%の確率で204.2から422.7の間にある」と読みます。簡単に書くと、「全部をテストしていたら、95%の確率で204件から423件の間でバグが発見されていただろう」ということです。
 
※ 「正規分布による近似法」の行は、あくまでも、分布を正規分布とした場合の近似結果なので、式(ロジック)として数値の精度が落ちています。
 
※ また、「F分布による方法」は、式(ロジック)としては同じ精度なのですが、演算式が複雑になるのでEXCELの計算精度(丸め誤差など)の影響で精度が落ちています(この例ではPuの最終桁が変わっているだけでで、ほとんど変わりませんが)。



HAYST法への応用

HAYST法では、通常は、3因子間の網羅率100%を目指していません。
もし、仮にランダムサンプリングに近いものと仮定した場合の3因子間網羅率を100%としない場合の危険性について考えてみましょう。
 
HAYST法で、L64に割り付いた場合、3因子間網羅率は40%から60%くらいになっていることが多いものです。
そして、その時に、3因子間の全ての水準の組合せ数は、20,000から50,000程度です。
 
そこで、ここでは、
 3因子間網羅率: 50%
 3因子間組合せ数: 50,000個
 L64で検出された3因子間の組合せが原因のバグ数: 2件
だったと仮定して上記EXCELシートに入れて計算してみます。結果は、
 
  「全部をテストしていたら、90%の確率で1件から13件の間でバグが発見されていただろう」
 
となりました。
つまり、平均は7件(残数で言えば5件)です。また、最悪のケースでは11件のバグが残っている可能性があります。
 
これを嫌って3因子間の網羅率を100%にするという作戦もあるでしょう。ただし、その場合にはテストケース数は64件から300件位に増加します(工数としては1人月位増加します)。
 
システムが求める品質、検出された2件の重要度(致命的、重大、軽微のどれか?)、かける工数(コスト)、等々を総合的に判断して決断することになりますが、このような区間推定を用いた値は大いに参考になることでしょう。