Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Perspectives on White-Box Testing:
Coverage,Concurrency, and Concolic
Execution
著者 Azadeh Farzan, Andreas Holzer, Helmut V...
背景
近年 Concolic Testing 技術によるホワイト
ボックステストが盛り上がっている
ツールもいっぱいある
– http://mit.bme.hu/~micskeiz/pages/cod
e_based_test_generati...
Concolic Testingの活用
A. バグ検出
B. 全数探索
C. 部分探索
Bができるのが理想であるが、ソフトウェア規模が大きくなると非現実的
よってAの活用がすすんでいる
Cには課題あり
3
部分探索の課題
• 探索の網羅性と実行リソース・時間のト
レードオフを制御する手段が必要
• 探索アルゴリズムは網羅結果を報告し、
ユーザが探索戦略を調整できること
4
2つの取組み
テスト仕様(=探索したい対象)を厳密に
記述できるクエリ言語を開発し、探索する
空間を制御できる仕組みを構築
並行(マルチスレッド)プログラムにたい
するConcolic Testingの拡張技術を開発。
探索戦略の柔軟な調整が可...
クエリによるテストケースの選択
http://forsyte.at/download/ase-slides.pdf より抜粋
データベースからSQLによってデータを取
り出すように、
ソースコードからクエリ(※)によってテスト
ケースを取り出す...
テスト仕様としてのクエリ
テストしたい関心ごとを記載する
すべてのブランチを実行する
関数fooのすべてのステートメントを実行する
10行目を実行した後 j > 0 を満足するすべて
のステートメントを実行する
抽象的
具体的
7
FQLの文法
単純な文法、正規表現による拡張性
cover @CONDITIONEDGE
cover @BASICBLOCKENTRY & @FUNC(foo)
cover @BASICBLOCKENTRY passing ˆ(@LINE(10...
FQA実行のしくみ
2つの実行環境を開発した
FShell
CPA/Tiger
9
CPA/Tiger
述語抽象化法(Predicate Abstraction)
を利用したモデル検査にもとづく
アーキテクチャ
FShell
有界モデル検査(Bounded Model Checking)
にもとづくアーキテクチャ
10
(Con)2 Colic Testing
造語です。
Symbolic + Concrete Testing
→ Concolic Testing
Concolic + Concurrent Testing
→ (Con)2 colic Tes...
(Con)2 Colic Testing
並列実行プログラムにたいする
Concolic Testing の拡張
http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋12
実行の流れ
1.スレッド個別にConcolic Testingを実行
2.スレッド間の干渉を発見したら、探索
パス空間に組み込み
1,2を繰り返すことで段階的に
探索パス空間を拡張する
http://forsyte.at/wp-content/...
3スレッドプログラムの例
グローバル変数: x,y
ローカル変数: z
http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋14
各スレッドへのConcolic Testing実行
グローバル変数: x,y
ローカル変数: z
未達パス未達パス
http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋...
干渉の検出
グローバル変数: x,y
ローカル変数: z
干渉を発見!
http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋
16
探索パスへの組み込み
http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋
17
再びConcolic Testing実行
http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋
さっき未達だったところが
通った!そしてスレッドAと
の干渉を検出した!...
2回の干渉を組み込んだ結果
http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋
19
ツール
• FShell
– http://forsyte.at/software/fshell/
• CPA/Tiger
– http://forsyte.at/software/cpatiger/
• CONCREST
– C言語向けCon...
Upcoming SlideShare
Loading in …5
×

ICST 2015 まるわかりDay 論文紹介:Perspectives on white box testing

3,036 views

Published on

Published in: Engineering
  • Be the first to comment

ICST 2015 まるわかりDay 論文紹介:Perspectives on white box testing

  1. 1. Perspectives on White-Box Testing: Coverage,Concurrency, and Concolic Execution 著者 Azadeh Farzan, Andreas Holzer, Helmut Veith 紹介者: うえつきけいじICST 2015 まるわかりDay 論文紹介
  2. 2. 背景 近年 Concolic Testing 技術によるホワイト ボックステストが盛り上がっている ツールもいっぱいある – http://mit.bme.hu/~micskeiz/pages/cod e_based_test_generation.html 2
  3. 3. Concolic Testingの活用 A. バグ検出 B. 全数探索 C. 部分探索 Bができるのが理想であるが、ソフトウェア規模が大きくなると非現実的 よってAの活用がすすんでいる Cには課題あり 3
  4. 4. 部分探索の課題 • 探索の網羅性と実行リソース・時間のト レードオフを制御する手段が必要 • 探索アルゴリズムは網羅結果を報告し、 ユーザが探索戦略を調整できること 4
  5. 5. 2つの取組み テスト仕様(=探索したい対象)を厳密に 記述できるクエリ言語を開発し、探索する 空間を制御できる仕組みを構築 並行(マルチスレッド)プログラムにたい するConcolic Testingの拡張技術を開発。 探索戦略の柔軟な調整が可能 5
  6. 6. クエリによるテストケースの選択 http://forsyte.at/download/ase-slides.pdf より抜粋 データベースからSQLによってデータを取 り出すように、 ソースコードからクエリ(※)によってテスト ケースを取り出す ※ FQL: FShell Query Language 6
  7. 7. テスト仕様としてのクエリ テストしたい関心ごとを記載する すべてのブランチを実行する 関数fooのすべてのステートメントを実行する 10行目を実行した後 j > 0 を満足するすべて のステートメントを実行する 抽象的 具体的 7
  8. 8. FQLの文法 単純な文法、正規表現による拡張性 cover @CONDITIONEDGE cover @BASICBLOCKENTRY & @FUNC(foo) cover @BASICBLOCKENTRY passing ˆ(@LINE(10).{j>0}+NOT(@LINE(10)))∗$ すべてのブランチを実行する 関数fooのすべてのステートメントを実行する 10行目を実行した後 j > 0 を満足するすべて のステートメントを実行する 8
  9. 9. FQA実行のしくみ 2つの実行環境を開発した FShell CPA/Tiger 9
  10. 10. CPA/Tiger 述語抽象化法(Predicate Abstraction) を利用したモデル検査にもとづく アーキテクチャ FShell 有界モデル検査(Bounded Model Checking) にもとづくアーキテクチャ 10
  11. 11. (Con)2 Colic Testing 造語です。 Symbolic + Concrete Testing → Concolic Testing Concolic + Concurrent Testing → (Con)2 colic Testing 11
  12. 12. (Con)2 Colic Testing 並列実行プログラムにたいする Concolic Testing の拡張 http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋12
  13. 13. 実行の流れ 1.スレッド個別にConcolic Testingを実行 2.スレッド間の干渉を発見したら、探索 パス空間に組み込み 1,2を繰り返すことで段階的に 探索パス空間を拡張する http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋13
  14. 14. 3スレッドプログラムの例 グローバル変数: x,y ローカル変数: z http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋14
  15. 15. 各スレッドへのConcolic Testing実行 グローバル変数: x,y ローカル変数: z 未達パス未達パス http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋 15
  16. 16. 干渉の検出 グローバル変数: x,y ローカル変数: z 干渉を発見! http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋 16
  17. 17. 探索パスへの組み込み http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋 17
  18. 18. 再びConcolic Testing実行 http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋 さっき未達だったところが 通った!そしてスレッドAと の干渉を検出した! 18
  19. 19. 2回の干渉を組み込んだ結果 http://forsyte.at/wp-content/uploads/fse13-presentation.pdf より抜粋 19
  20. 20. ツール • FShell – http://forsyte.at/software/fshell/ • CPA/Tiger – http://forsyte.at/software/cpatiger/ • CONCREST – C言語向けConcolic Testing ToolであるCREST を(Con)2 Colicに拡張 – http://forsyte.at/software/concrest/ 20

×