マルコフ連鎖モンテカルロ法によるソフトウェアテ...

21
マルコフ連鎖モンテカルロ法によるソフトウェアテストケー スの設計 周搏,岡村寛之,土肥正 広島大学大学院工学研究科 1

Upload: others

Post on 07-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

マルコフ連鎖モンテカルロ法によるソフトウェアテストケースの設計

周搏,岡村寛之,土肥正 広島大学大学院工学研究科1

Page 2: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

自己紹介

所属

広島大学大学院工学研究科情報工学専攻ソフトウェア信頼性工学講座システム信頼性工学研究科目(研究室)

専門分野

ソフトウェア信頼性工学確率統計によるシステムの性能評価

2

Page 3: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

信頼性評価ツールSRATS: Software Reliability Assessment Tool on Spreadsheet Software

http://www.rel.hiroshima-u.ac.jp/~okamu/SRATS/manual/home.html

Microsoft Excel で動くソフトウェア信頼性評価ツール

3

Page 4: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

発表概要

背景テストケース設計と確率・統計

ベイズ統計を応用したテストケース設計モデル化MCMCによる手法

数値例

4

Page 5: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

ソフトウェアテスト技法Black Box Testing同値分割

White Box Testing

判定条件網羅命令網羅

限界値分析

条件網羅

なぜ良いか?理論的な裏付け

5

Page 6: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

経験則の本質プログラム処理の境界にバグあることが多い

経験的に獲得した(学習した)知識何かしらの形でモデルを形成し学習した

バグはたった2つの入力の組み合わせがで原因になってることが多い

代表値だけで大丈夫だ

各命令は最低1回は実行しておくべきだ

6

Page 7: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

発表の目的経験則を確率・統計的に扱うモデルの考察

マルコフ連鎖モンテカルロ法によるテストケース設計の試み

既存の統計手法をモデルに適用したテストケース設計手法の考察

テストケース設計を統一的に議論する数学的な基礎

7

Page 8: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

ソフトウェアテストモデルソフトウェアテストを数学的に抽象化

ソフトウェアの入力領域 テスト

0

1

成功

失敗

テスト関数の出力が1となる領域を効率的に探す手がかりは入力領域の特徴

8

Page 9: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

Contd.例えば...

同じ結果を出力する(と思われる)領域の代表値をテストする命令を1回ずつ実行する領域の出力が0ならばそれ以外の領域も0である(と考える)

プログラムの構造と経験則統計的にもっと単純化

9

Page 10: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

Contd.統計モデルとして...

同値クラス:同じ結果を出力する確率が高い入力(出力の相関が強い)命令を1回ずつ実行する領域の出力が0ならばそれ以外の領域も0である確率が高い(領域間の相関が強い)

入力間の出力に対する相関の強弱をモデル化

10

Page 11: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

例ある int 型の引数をもつ関数

void func(int x)

0 1 2-1-2

1 0 000

入力領域

出力(テスト結果)0 を入力したらエラー

相関が強い 相関が強い相関が弱い

11

Page 12: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

Contd.1 0 000

現在のテスト結果相関が強い 相関が強い

相関が弱い

部分のテストをする必要はない

1 0 000

現在のテスト結果相関が強い 相関が強い

相関が弱い

部分のテストをする必要がある

12

Page 13: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

Contd.1 0 000

相関が強い 相関が強い相関が弱い

部分のテストをする必要はない

1 0 000

相関が強い 相関が強い相関が弱い

部分のテストをする必要がある

経験則の定式化

経験則の定式化

13

Page 14: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

テストケースモデル2次元格子 void func(int x, int y)

0 0 0 0 0

0 1 0 1 0

0 0 0 0 0

0 0 1 0 0

0 0 0 0 1

14

Page 15: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

Contd.経験則:周辺のテスト結果に対する条件付き確率

North

West East

South

Center\North success failure

success 0.8 0.2

failure 0.3 0.7Center

Center\West success failure

success 0.8 0.2

failure 0.5 0.5

Center\East success failure

success 1.0 0.0

failure 0.0 1.0

Center\South success failure

success 0.8 0.2

failure 0.2 0.8

15

Page 16: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

ベイズ推定ベイズ推定により周辺(North, West, East, South)のテスト結果から中心(Center)の結果を推測

North

West East

South

Center1

0 0

1

FN, FS: North, South にバグがある SW, SE: West, East にバグがないFC: Center にバグがある

16

Page 17: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

MCMCサンプリングを用いてベイズの事後確率を求める一手法

テストの途中経過,経験則(事前分布,条件付き確率)から各入力にバグが潜んでいる確率を算出する

テストケース設計への応用

バグが潜んでいる確率が高い入力を優先してテストする

テスト結果をフィードバック

17

Page 18: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

数値例簡単なテストに関するモデル+MCMCによる入力の選択

2次元格子(20×20)の入力領域

障害シナリオPoint: 無作為にバグStrip: 線状に相関を持つバグBlock: 長方形に相関を持つバグ

(point) (strip) (block)

18

Page 19: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

相関各入力から4方向(North, South, West, East)に隣接した入力に対して次の条件付き確率

Center\NWES success failure

success 0.9 0.1

failure 0.1 0.9

Center\NWES success failure

success 0.8 0.2

failure 0.2 0.8

Center\NWES success failure

success 0.7 0.3

failure 0.3 0.7

19

Page 20: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

結果バグが潜んでいる確率の高い入力からテスト通常のランダムテストと比較

最初のバグが発見されるまでのテスト回数

評価尺度(Point) (Strip) (Block)

Figure 2 フォールト潜在パターンの例(黒丸はフォールトを含むテストケースを表す).

Table 1 RT および MCMC-RT を適用したときの F-measure 値.Point Strip Block

RT 19.4 (301.7) 19.5 (270.1) 19.8 (304.1)

MCMC-RT p = 0.9 18.1 (298.4) 18.7 (293.0) 18.6 (263.5)

p = 0.8 17.9 (279.6) 18.5 (284.0) 18.2 (249.2)

p = 0.7 17.3 (253.0) 18.0 (253.0) 17.0 (233.9)

て記述されるソフトウェアテストモデルに対しても適用することができ,各テストケースのフォールト潜在確率を推定することによって効率的なテストケース生成の支援が可能である.具体的に本稿では,ソフトウェアテスト入力領域がイジングモデルで記述される場合に MCMC-RT による検証を行い,通常のランダムテストよりもフォールト検出能力が向上することを確認した.ここでの例では,最も簡単なイジングモデルによってソフト

ウェアテスト領域をモデル化したが,MCMC-RT は一般のベイジアンネットワークで記述されたモデルに対して適用可能である.これは,予め潜在しているフォールトの検出パターンを有機的に推論する仕組みが利用できる(ノウハウのモデル化)ことを意味しており,ランダムテストの利点である広い状態空間における有効性を考慮すれば,出荷直前のテストに対する効率的なテストケース作成などへの応用が考えられる.今後の課題として,境界値分析やペアワイズテストなどを表

現するベイジアンネットワークからソフトウェアテストモデルを構築し,実際のプログラムを用いたフォールト検出能力の検証を行う.また,適応的ランダムテストとの数理的な関係を明らかにした後に,これらとの比較を行い,MCMC-RT の有効性についてさらなる詳細を行う予定である.

References

[1] B. Beizer. Software Testing Techniques. Van NostrandReinhold, 2nd edition, 1990.

[2] T. Y. Chen and D. H. Huang. Adaptive random testing bylocalization. In Proceedings of the 11th Asia-Pacific Soft-

ware Engineering Conference. IEEE CS Press, 2004.

[3] T. Y. Chen, D. H. Huang, T. H. Tse, and Z. Yang. An in-novative approach to tackling the boundary e!ect in adap-

tive random testing. In Proceedings of the 40th AnnualHawaii International Conference on System Sciences. IEEE

CS Press, 2007.

[4] T. Y. Chen, F.-C. Kuo, and H. Liu. Distributing test casesmore evenly in adaptive random testing. The Journal of

Systems and Software, 81:2146–2162, 2008.[5] T. Y. Chen, F.-C. Kuo, R. G. Merkel, and T. H. Tse. Adap-

tive random testing: the art of test case diversity. The

Journal of Systems and Software, 2009 (to apper).

[6] I. Ciupa, A. Leitner, M. Oriol, and B. Meyer. ARTOO:

Adaptive random testing for object-oriented software. InProceedings of 30th International Conference on Software

Engineering, pages 71–80. ACM Press, 2008.[7] B. Jiang, Z. Zhang, W. K. Chan, and T. H. Tse. Adap-

tive random test case prioritization. In Proceedings of the

24th IEEE/ACM International Conference on AutomatedSoftware Engineering. IEEE CS Press, 2009.

[8] J. D. Musa. Operational profiles in software reliability en-gineering. IEEE Software, 10(2):14–32, 1993.

[9] M. Z. Tsoukalas, J. W. Duran, and S. C. Ntafos. On

some reliability estimation problems in random and parti-tion testing. IEEE Transactions on Software Engineering,

SE-19(7):687–697, 1993.

— 5 —

20

Page 21: マルコフ連鎖モンテカルロ法によるソフトウェアテ …jasst.jp/archives/jasst10e/pdf/D2-4.pdfマルコフ連鎖モンテカルロ法によるソフトウェアテストケー

まとめソフトウェアテストの統計からのモデル化

テストアクティビティのモデル化

ベイズ統計を用いたテスト設計アプローチ

実プログラムおよび経験則の関連

今後の課題

21