Distribution naite19

40
岡野 麻子(NaITE) ©NaITE 1 NaITE #19 数学を学ぼう ~数学の知識を利用した ソフトウェアテスト~ 2017/1/21

Transcript of Distribution naite19

Page 1: Distribution naite19

岡野 麻子(NaITE)

©NaITE 1

NaITE #19

数学を学ぼう~数学の知識を利用したソフトウェアテスト~

2017/1/21

Page 2: Distribution naite19

自己紹介

• 岡野 麻子(おかのあさこ)

• 経歴• 自社では、SEPGに所属(2010~)。

• 主に、CMMIによるプロセス改善に従事。「定量的プロジェクト管理」の推進をしています。統計分析(プロセス実績ベースラインやプロセス実績モデルの構築)、ツールの管理、プロジェクト推進、・・・なんでも屋さんです。

• その前はQAをやっていました(2004~2010)。

• 所属しているコミュニティなど• NaITE(長崎IT技術者会) スタッフ

• PM学会 PDA研究会

• JFPUG FP活用研究会 など

• Twitter:@acha_821 (あさこ)

©NaITE 22017/1/21

Page 3: Distribution naite19

参考資料

• 統計学入門 東京大学教養学部統計学教室 (編集)

• 数学ガールの秘密ノート/やさしい統計 結城 浩 著

• ソフトウェアメトリクス統計分析入門

―現場エンジニアによる直観的解説と実践ドリル 小池 利和 著

©NaITE 32017/1/21

Page 4: Distribution naite19

本セッションの目的(ゴール)

• 一番大事なゴール:ツールとして、数学を少しでも身につけて頂くこと

• 探針テストで用いられている基礎知識を理解• 探針テストの理解や使い方を学ぶことが目的ではなく、使われている数学知識とそ

の知識利用の背景を理解することを目的とする。

• ディスカッションをしてみよう!• 本日の内容がどんな場面で用いられているか、どういう応用が出来るかなどをはなしあってみよう。

©NaITE 42017/1/21

Page 5: Distribution naite19

だいじなこと

• 探針テスト自身の理解や使い方を学ぶことが目的ではなく、使われている考え方の理解を目的とする。

• NaITE14勉強会でもお伝えしましたが・・・再掲!

• データの「見る切り口」「料理の仕方」は「手段」。

• データの意味をちゃんと理解してから料理しましょう。

• 目的が「データ分析」にならないように気をつけましょう!

→目の前にあるデータが、今の事実すべてだと思ってしまう現場によくある。

あくまでも、「全体の一部」であることを念頭においてください。

「母集団」の中の、ひとつの「標本」にすぎないのです。

©NaITE 52017/1/21

Page 6: Distribution naite19

本セッションの全体像

• 探針テストの中で使われている「区間推定」をざっくり理解

• 区間推定の中の、信頼区間が使われている

• 区間推定・信頼区間は、正規分布を理解する必要がある

• 正規分布には、分散・平均・標準偏差・標準誤差などの基礎知識が出てくる

ということで、基礎知識から区間推定までを1時間で駆け抜けてご紹介しますっ!

©NaITE 62017/1/21

Page 7: Distribution naite19

イメージでつかもう

2017/1/21 7©NaITE

Page 8: Distribution naite19

2017/1/21©NaITE 8

※ 画像引用元:wikipedia

σ が既知の場合σ は標準偏差σ2 は分散

イメージでつかもう

Page 9: Distribution naite19

2017/1/21©NaITE 9

※ 画像引用元:wikipedia

σが未知の場合この考えを用いて区間推定を行う

⇒探針テストで利用されている

イメージでつかもう

Page 10: Distribution naite19

ということで、はじめます!

2017/1/21 10©NaITE

Page 11: Distribution naite19

アジェンダ1. 事例:探針テスト

i. 探針テストの意味と目的

ii. 探針テストの使用事例(リリカルくんより)

iii. サンプリングテスト

iv. 推定?

2. 統計学

i. 母集団と標本、その関係

ii. 統計学の目的

iii. 平均・分散・標準偏差

iv. 正規分布(イメージ)

3. 区間推定

i. 信頼区間とは?

ii. 標準誤差

iii. 信頼区間

iv. 実際に導いてみよう!

4. まとめ! 2017/1/21 11©NaITE

Page 12: Distribution naite19

アジェンダ1. 事例:探針テスト

i. 探針テストの意味と目的

ii. 探針テストの使用事例(リリカルくんより)

iii. サンプリングテスト

iv. 推定?

2. 統計学

i. 母集団と標本、その関係

ii. 統計学の目的

iii. 平均・分散・標準偏差

iv. 正規分布(イメージ)

3. 区間推定

i. 信頼区間とは?

ii. 標準誤差

iii. 信頼区間

iv. 実際に導いてみよう!

4. まとめ! 2017/1/21 12©NaITE

Page 13: Distribution naite19

1.事例:探針テスト

2017/1/21 13©NaITE

Page 14: Distribution naite19

探針テスト

•製品検査に先立って、デバッグ・テスト段階における品質を検

査が実際に測定・評価するもの

•基本的には検査項目をサンプリングし、その結果から全体の母

不良率を求め残バグ件数を推定する方法

奈良隆正氏の資料(※)より

•バグ件数を統計的手法で推定するため

使用する目的

©NaITE 142017/1/21

※ http://www.sea.jp/SPIN/Reports/SPIN040226-Nara-handout3d.pdf

Page 15: Distribution naite19

サンプリングテスト

•たくさんのテストケースから、ランダムに選択したテストケースを実行するこ

サンプリングテストとは(HAYST法紹介ページより(※))

•全テストケースのうちの10~20%をサンプリングしてテストをする。そこで検

出されるバグ数をカウントしていく。

実施の例

•残りのバグ数を予測する

目的

©NaITE 152017/1/21

※ http://www.hayst.com/Pages/qptest.aspx

Page 16: Distribution naite19

探針テスト

実務での使用方法を紹介。

~某社 QA部門での事例~

2017/1/21 16©NaITE

Page 17: Distribution naite19

推定?

•全バグ件数

何を推定?

•確率を利用してバグの分布状況を把握し、全体の件数を推定する

統計的?

• 統計的手法・・つまり・・正規分布を利用して推定する

手法は?

©NaITE 172017/1/21

Page 18: Distribution naite19

アジェンダ1. 事例:探針テスト

i. 探針テストの意味と目的

ii. 探針テストの使用事例(リリカルくんより)

iii. サンプリングテスト

iv. 推定?

2. 統計学

i. 母集団と標本、その関係

ii. 統計学の目的

iii. 平均・分散・標準偏差

iv. 正規分布(イメージ)

3. 区間推定

i. 信頼区間とは?

ii. 標準誤差

iii. 信頼区間

iv. 実際に導いてみよう!

4. まとめ! 2017/1/21 18©NaITE

Page 19: Distribution naite19

2.統計学

2017/1/21 19©NaITE

Page 20: Distribution naite19

母集団と標本

母集団

• 調査の対象となる全体

• 事例のケースでは、テストケー

ス全体

標本

• 母集団の中から選んだもの

• 事例のケースではサンプリング

されたテストケース

2017/1/21©NaITE 20

Page 21: Distribution naite19

母集団と標本の関係

2017/1/21©NaITE 21

母集団テストケース

全体

𝑥 標本

X

母集団

X

𝑥1 𝑥2𝑥3

毎回、標本の値は異なる

母集団(対象となる全体)から一つの標本を抽出する。これは母集団の正規分布に従う確率変数 𝑿 が 𝒙 という値をとることに相当

𝑥 サンプリング

Page 22: Distribution naite19

統計学の目的

2017/1/21©NaITE 22

母集団

𝑥 標本

X

母集団

X

𝑥1 𝑥2𝑥3

毎回、標本の値は異なる

標本から母集団を規定する母平均や母分散を推定すること

=>サンプリングした標本の中で測定されたものから、テストケース全体を推定する

Page 23: Distribution naite19

平均・分散・標準偏差

平均

• 𝑛回試行したときの値の合計を試行回数 𝑛で

割ったもの

• ҧ𝑥 =1

𝑛σ𝑖=1

𝑛 𝑥𝑖

分散 (標準偏差の二乗)

標準偏差:平均からのズレ

•確率変数 𝑋1 − ത𝑋, 𝑋2 − ത𝑋, ⋯ , 𝑋𝑛 − ത𝑋 に対

しては,恒等式 𝑋1 − ത𝑋 + 𝑋2 − ത𝑋 + ⋯ +

𝑋𝑛 − ത𝑋 ≡ 0が成り立つため,変数 𝑋𝑖 − ത𝑋

の自由度は 𝑛から 𝑛 − 1に減少する.した

がって,分散は 𝑛 − 1で割って

• 𝑆2 =1

𝑛−1σ𝑖=1

𝑛 𝑋𝑖 − ത𝑋 2

2017/1/21©NaITE 23

Page 24: Distribution naite19

考えてみよう:

自由度とは?n? n-1?

2017/1/21 24©NaITE

Page 25: Distribution naite19

解いてみよう(10分):

ҧ𝑥 =1

𝑛σ𝑖=1

𝑛 𝑥𝑖 をもちいて、

𝑋1 − ത𝑋 + 𝑋2 − ത𝑋 + ⋯ + 𝑋𝑛 − ത𝑋 ≡ 0

2017/1/21 25©NaITE

Page 26: Distribution naite19

2017/1/21©NaITE 26

※ 画像引用元:wikipedia

σが未知の場合この考えを用いて区間推定を行う

⇒探針テストで利用されている

正規分布

Page 27: Distribution naite19

アジェンダ1. 事例:探針テスト

i. 探針テストの意味と目的

ii. 探針テストの使用事例(リリカルくんより)

iii. サンプリングテスト

iv. 推定?

2. 統計学

i. 母集団と標本、その関係

ii. 統計学の目的

iii. 平均・分散・標準偏差

iv. 正規分布(イメージ)

3. 区間推定

i. 信頼区間とは?

ii. 標準誤差

iii. 信頼区間

iv. 実際に導いてみよう!

4. まとめ! 2017/1/21 27©NaITE

Page 28: Distribution naite19

3.区間推定

2017/1/21©NaITE 28

Page 29: Distribution naite19

信頼区間って?

•母集団から標本を取ってきて、その平

均から95%信頼区間を求める、という

作業を100回やったときに、95回はそ

の区間の中に母平均が含まれる

考え方(95%信頼区間?)

2017/1/21©NaITE 29

Page 30: Distribution naite19

標準誤差

•ある実験で 𝑛個のデータ {𝑥1(1)

, 𝑥2(1)

, ⋯ , 𝑥𝑛(1)

} をとり,平均値 ҧ𝑥(1) = σ𝑖 𝑥𝑖(1)

/𝑛を計算する.

•引き続き同じ実験を𝑁回繰り返し,平均値 ҧ𝑥(2), ⋯ , ҧ𝑥(𝑁) を算出する.

•同じ条件で実験をしても,これらの平均値 は 𝒎 ≡ (ഥ𝒙(𝟏) + ⋯ + ഥ𝒙(𝑵))/𝑵のまわりにばらつく.

•このばらつきを表す指標が標準誤差

概念

•実験で標本平均 ҧ𝑥 = σ𝑖=1𝑛 𝑥𝑖 /𝑛と標本分散 𝑠2 = σ𝑖=1

𝑛 𝑥𝑖 − ҧ𝑥 2 /(𝑛 − 1)が得られているとする.

•母平均 𝜇の推定値は 𝐸 ത𝑋 = 𝜇より 𝜇 = ҧ𝑥

•その推定精度である標準誤差は 𝑉 ഥX = 𝜎2/𝑛と 𝐸 𝑆2 = 𝜎2 より 𝑆𝐸 ≃ 𝜎/ 𝑛 ≃ 𝑠/ 𝑛

• 𝑆𝐸 ≃𝑠

𝑛=

σ𝑖=1𝑛 𝑥𝑖− ҧ𝑥 2

𝑛(𝑛−1)

成り立つ式

2017/1/21©NaITE 30

Page 31: Distribution naite19

信頼区間・t分布・二項分布

• 信頼区間=標本平均 ± t × 標本標準誤差

成り立つ式

•結果が成功か失敗のいずれかである n 回の独立な試行を行ったときの成功数で表される離散確

率分布である(wikipediaより)

•サンプリングしたテストケースにおいて、「バグがでる」「バグが出ない」という結果を想定

した独立なテストを実施

二項分布

•連続確率分布の一つであり、正規分布する母集団の平均と分散が未知で標本サイズが小さい場

合に平均を推定する問題に利用される(wikipediaより)

t 分布

2017/1/21©NaITE 31

Page 32: Distribution naite19

実際に導く:探針テスト

• 探針テスト 引用先の頁(※)(※:http://www.hayst.com/Pages/qptest.aspx)

に記載されている内容:

上限値(上限不良率)の式は、

Pu = p + u(α) √(p(1-p)/n)

どういうこと??

2017/1/21 32©NaITE

Page 33: Distribution naite19

実際に導く:信頼区間 関係式の導出

Pu = p + u(α) √(p(p-1)/n) を出す!

⇒二項分布を利用する

• 上限信頼区間=標本平均 + t × 標本標準誤差

=𝑝+ 𝑢 α ×𝑝(1−𝑝)

𝑛

このとき、標本平均(標本不良率) = p , t = u(α)

tは、二項確率紙を参照

2017/1/21 33©NaITE

Page 34: Distribution naite19

導いてみよう(二項分布)

• 期待値 𝐸 𝑋 = 𝑖𝑝

• 分散 𝑉 𝑋 = 𝑖𝑝 1 − 𝑝 =σ2

• 標準誤差 𝑆𝐸 = 𝑉 𝑋 ≃σ

𝑛

上記をもちいて、

標準誤差=𝑖𝑝(1−𝑝)

𝑛となる。

注:探針テスト(※)では、サンプリング1回により、期待値はpとなっている。数回実施するときは 𝑖 をかけること。

(※:http://www.hayst.com/Pages/qptest.aspx)

2017/1/21 34©NaITE

Page 35: Distribution naite19

まとめ

2017/1/21©NaITE 35

Page 36: Distribution naite19

まとめ

1.統計といえば確率!分布種類・その意図・背景を踏まえて基本を覚えてしまうとさまざまな場所で応用ができる

2.期待値・平均・分散・区間推定(信頼区間)を使いこなせば、様々なテスト(取得できるメトリクス)の評価ができる

3.探針テストは、全ケースをテストするという前提の上で、サンプリングを行い、そのサンプルケースの中でどの程度「バグがでるか」という独立な試行を行ってバグの出方を推定する。そのため、二項分布が使われている。改めて二項分布の定義・背景を学んでみよう。

4.統計は使えばいいってものじゃない。意味があって使われています。

2017/1/21 36©NaITE

Page 37: Distribution naite19

≪第2部≫~ディスカッションた~いむっ~

2017/1/21 37©NaITE

Page 38: Distribution naite19

議論しましょう!

•5人一班になってください!•統計的にデータを扱っていますか?•ソフトウエアテスト実施時にこのような“統計的手法”を使っていますか?

•探針テストのような区間推定を使ったバグ予測は、どのように応用できるでしょうか?

2017/1/21©NaITE 38

Page 39: Distribution naite19

議論結果(抜粋)

• 見積もり

• 規模(kstep,fp)とテスト項目⇒テスト密度

• 規模と工数

• 最大値、最小値

• 探索的テストをやめる判断←信頼度成長曲線、信頼区間

• センサの精度、実測と計画の差

• モジュールごとの難易度

• バグ予測、テストケース見積もり

• ほかにも必要なメトリクスがあるのでは。

⇒複雑度、難易度・・・ドメイン、関連技術を示すようなもの・・・

• こういった判断基準になるようなものをツール化し、やり方を書いたドキュメントとともに提供しても、やらない人はやらない。。。。。

• 探針テストはバグを見つけるために実施されるのではない。最初の層別やサンプリングするとことに技術が集約されている!!

2017/1/21©NaITE 39

Page 40: Distribution naite19

Thank you!実務にて、是非活用して下さい!

2017/1/21©NaITE 40