incremental symbolic execution
play

Incremental Symbolic Execution Sarmad Makhdoom 2012-03-0019 - PowerPoint PPT Presentation

Incremental Symbolic Execution Sarmad Makhdoom 2012-03-0019 Supervisors Dr Junaid Haroon Siddiqui Dr Arif Zaman Introduction What is soAware tesCng? Its


  1. Incremental Symbolic Execution Sarmad ¡Makhdoom ¡ 2012-­‑03-­‑0019 ¡ ¡ Supervisors ¡ Dr ¡Junaid ¡Haroon ¡Siddiqui ¡ Dr ¡Arif ¡Zaman ¡

  2. Introduction • What ¡is ¡soAware ¡tesCng? ¡ ▫ It’s ¡all ¡about ¡finding ¡bugs ¡ • Why ¡do ¡we ¡need ¡to ¡test? ¡ ▫ Bugs ¡fixing ¡cost ¡is ¡increasing ¡ • How ¡do ¡we ¡test? ¡ ▫ StaCc ¡vs ¡Dynamic ¡analysis ¡ • Famous ¡failures ¡ ¡ ▫ Ariane ¡5 ¡Explosion ¡($500m) ¡ [h#p://www.ima.umn.edu/~arnold/disasters/ariane.html] ¡ ▫ NASA ¡Mars ¡Climate ¡Orbiter ¡($125m) ¡ [h#p://mars.jpl.nasa.gov/msp98/news/mco991110.html] ¡

  3. Outline • Background ¡ • MoCvaCon ¡ • Technique ¡ • EvaluaCon ¡ • Related ¡Work ¡ • Conclusion ¡

  4. Background

  5. Concrete Execution x=1 ¡ y=3 ¡ z=2 ¡ int ¡mid(int ¡x, ¡int ¡y, ¡int ¡z) ¡{ ¡ ¡ ¡if ¡(x<y){ ¡ ¡ ¡ ¡ ¡if ¡(y<z){ ¡ Concrete ¡test ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡y; ¡ {} ¡ ¡ ¡ ¡}else{ ¡ ¡ ¡ ¡ ¡ ¡ ¡if ¡(x<z) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡z; ¡ ¡ ¡ ¡ ¡ ¡ ¡else ¡ x < y ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡x; ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡}else{ ¡ x < y, y ≥ z ¡ ¡ ¡ ¡if ¡(x<z){ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡x; ¡ ¡ ¡ ¡ ¡}else{ ¡ ¡ ¡ ¡ ¡ ¡ ¡if ¡(y<z) ¡ x < z ≤ y ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡z; ¡ ¡ ¡ ¡ ¡ ¡ ¡else ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡y; ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡} ¡ } ¡

  6. Symbolic Execution Demo int ¡mid(int ¡x, ¡int ¡y, ¡int ¡z) ¡{ ¡ {} {} ¡ ¡if ¡(x<y){ ¡ ¡ ¡ ¡ ¡if ¡(y<z){ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡y; ¡ ¡ ¡ ¡ ¡}else{ ¡ x < y x < y x ≥ y x ≥ y ¡ ¡ ¡ ¡ ¡ ¡if ¡(x<z) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡z; ¡ ¡ ¡ ¡ ¡ ¡ ¡else ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡x; ¡ x < y, y < z x < y, y < z x < y, y ≥ z x < y, y ≥ z x ≥ y, x < z x ≥ y, x < z x ≥ y, x ≥ z x ≥ y, x ≥ z ¡ ¡ ¡ ¡} ¡ ¡ ¡}else{ ¡ ¡ ¡ ¡ ¡if ¡(x<z){ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡x; ¡ x < z ≤ y x < z ≤ y z ≤ x < y z ≤ x < y y < z ≤ x y < z ≤ x z ≤ y ≤ x z ≤ y ≤ x ¡ ¡ ¡ ¡}else{ ¡ ¡ ¡ ¡ ¡ ¡ ¡if ¡(y<z) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡z; ¡ ¡ ¡ ¡ ¡ ¡ ¡else ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡y; ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡} ¡ x=1 ¡ Path ¡condiCon ¡ } ¡ Concrete ¡Test ¡ Solve ¡ y=3 ¡ (feasible) ¡ z=2 ¡

  7. Symbolic Execution [CACM’76] • Concrete ¡execuCon ¡fixes ¡input ¡variables ¡and ¡exercises ¡one ¡path ¡per ¡ input ¡ • Symbolic ¡execuCon ¡uses ¡symbols ¡with ¡no ¡restricCons ¡other ¡than ¡type ¡ • Both ¡branches ¡of ¡every ¡condiCon ¡in ¡the ¡program ¡are ¡explored ¡ • A ¡path ¡condiCon ¡is ¡built ¡for ¡every ¡path ¡and ¡contains ¡the ¡constraints ¡ required ¡to ¡take ¡this ¡path ¡ “Symbolic ¡ExecuFon ¡and ¡Program ¡TesFng” ¡– ¡CACM ¡1976 ¡

  8. Ranged Symbolic Execution [OOPSLA’12] {} x > y x ≥ y x < y, y < z x < y, y ≥ z x ≥ y, x < z x ≥ y, x ≥ z x < z ≤ y z ≤ x < y y < z ≤ x z ≤ y ≤ x x=1 ¡ explored ¡ unexplored ¡ y=3 ¡ z=2 ¡ Scaling ¡symbolic ¡execuFon ¡using ¡ranged ¡analysis. ¡ACM-­‑OOPSLA ¡2012 ¡

  9. Ranged Symbolic Execution [OOPSLA’12] {} x > y x ≥ y x < y, y < z x < y, y ≥ z x ≥ y, x < z x ≥ y, x ≥ z x < z ≤ y z ≤ x < y y < z ≤ x z ≤ y ≤ x x=1 ¡ x=2 ¡ Skip ¡ Skip ¡ Explore ¡ y=3 ¡ y=1 ¡ z=2 ¡ z=3 ¡ Scaling ¡symbolic ¡execuFon ¡using ¡ranged ¡analysis. ¡ACM-­‑OOPSLA ¡2012 ¡

  10. KLEE [OSDI’08] • An ¡open ¡source ¡symbolic ¡executor ¡based ¡on ¡LLVM ¡ ▫ Generate ¡high ¡coverage ¡test ¡cases ¡ • LLVM ¡(Low ¡Level ¡Virtual ¡Machine) ¡ ▫ Converts ¡ code ¡into ¡ bytecode ¡ • Constraint ¡Solving ¡ L L LLVM C code bytecode ▫ STP ¡(fast ¡SMT ¡solver) ¡ V M x ¡= ¡-­‑2 ¡ SYMBOLIC K L E E x ¡= ¡1234 ¡ ENVIRONMENT x ¡= ¡3 ¡ x ¡ ≥ ¡0 ¡ x ¡= ¡3 ¡ x ¡ ≠ ¡1234 ¡ Constraint Solver (STP) KLEE: ¡Unassisted ¡and ¡AutomaFc ¡GeneraFon ¡of ¡High-­‑Coverage ¡Tests ¡for ¡Complex ¡Systems ¡Programs, ¡OSDI ¡2008 ¡

  11. Incremental Testing X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡ Test ¡Suite ¡ ModificaCon ¡ Code ¡v1.0 ¡ Code ¡v1.1 ¡

  12. Incremental Testing X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡ Test ¡Suite ¡ ModificaCon ¡ Code ¡v1.0 ¡ Code ¡v1.1 ¡

  13. Incremental Testing X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡ X ¡X ¡X ¡X ¡X ¡ Test ¡Suite ¡ Test ¡Suite ¡ ModificaCon ¡ Code ¡v1.0 ¡ Code ¡v1.1 ¡

  14. Incremental Testing X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡X ¡ X ¡X ¡X ¡X ¡X ¡ Test ¡Suite ¡ Test ¡Suite ¡ Final ¡Test ¡Suite ¡ ModificaCon ¡ Code ¡v1.0 ¡ Code ¡v1.1 ¡

  15. Motivation

  16. Motivation • All ¡execuCon ¡paths ¡may ¡be ¡very ¡large ¡and ¡may ¡not ¡be ¡of ¡interest ¡ • Only ¡execuCon ¡paths ¡that ¡differ ¡between ¡two ¡versions ¡are ¡of ¡interest ¡ • Test ¡only ¡program ¡changes ¡not ¡the ¡whole ¡program ¡ • Incremental ¡symbolic ¡execuCon ¡is ¡useful ¡in ¡bug ¡finding ¡and ¡regression ¡ tesCng ¡

  17. Technique

  18. Key Ideas • Majority ¡of ¡search ¡space ¡is ¡invalid ¡ • Solving ¡path ¡condiCons ¡is ¡expensive ¡ • Comparing ¡and ¡validaCng ¡of ¡path ¡condiCons ¡is ¡cheap ¡ • One ¡way ¡is ¡to ¡compare ¡both ¡CFGs ¡ [DiSE’11] ¡ ▫ StaCc ¡analysis ¡ ▫ Inexact ¡(in-­‑depth ¡node ¡changes ¡are ¡problemaCc) ¡ ¡ ¡ ▫ Scalability ¡issues ¡

  19. Technique • Full ¡symbolic ¡execuCon ¡with ¡iniCal ¡version: ¡ ▫ Generates ¡inputs ¡for ¡each ¡disCnct ¡path ¡ • Incremental ¡symbolic ¡execuCon ¡on ¡subsequent ¡versions ¡ ▫ On ¡exploraCon ¡divide ¡tests ¡based ¡on ¡each ¡branch ¡condiCon ¡ ▫ Compare ¡and ¡validate ¡tests ¡ – If ¡test ¡is ¡valid, ¡don’t ¡use ¡solver ¡ – If ¡test ¡is ¡invalid, ¡explore ¡the ¡program ¡for ¡new ¡states ¡

  20. Algorithm Algorithm ¡to ¡explore ¡new ¡ranges ¡and ¡not ¡solving ¡the ¡present ¡ path ¡condiCons ¡in ¡the ¡new ¡program ¡

  21. Technique t 1 , ¡t 2 , ¡t 3 , ¡t 4 , ¡t 5 , ¡t 6 ,…, ¡t n ¡ t 1 , ¡t 2 , ¡t 3 , ¡t 4 ¡ ¡ ¡ t 1 , ¡t 2 , ¡t 3 ¡ t 1 , ¡t 2 ¡ t 1 ¡ Evaluate ¡& ¡Compare ¡ P ¡

  22. Technique t 1 , ¡t 2 , ¡t 3 , ¡t 4 , ¡t 5 , ¡t 6 ,…, ¡t n ¡ t 1 , ¡t 2 , ¡t 3 , ¡t 4 ¡ ¡ ¡ t 1 , ¡t 2 , ¡t 3 ¡ t 1 , ¡t 2 ¡ t 2 ¡ Evaluate ¡& ¡Compare ¡ P ¡

  23. Technique t 1 , ¡t 2 , ¡t 3 , ¡t 4 , ¡t 5 , ¡t 6 ,…, ¡t n ¡ Ï ¡ Invalidates ¡ ¡ ¡

  24. Technique t 1 , ¡t 2 , ¡t 3 , ¡t 4 , ¡t 5 , ¡t 6 ,…, ¡t n ¡ Ï ¡ Invalidates ¡ ¡ ¡

  25. Technique t 1 , ¡t 2 , ¡t 3 , ¡t 4 , ¡t 5 , ¡t 6 ,…, ¡t n ¡ t 5 , ¡t 6 , ¡t 7 , ¡t 8 ¡ ¡ ¡ t 5 , ¡t 6 , ¡t 7 ¡ t 6 , ¡t 7 ¡ t 8 ¡ Evaluate ¡& ¡Compare ¡ P ¡

  26. Technique t 1 , ¡t 2 , ¡t 3 , ¡t 4 , ¡t 5 , ¡t 6 ,…, ¡t n ¡ ¡ ¡ Range ¡need ¡to ¡be ¡explored ¡

  27. What ¡if ¡there ¡is ¡some ¡infeasible ¡path ¡become ¡feasible ¡now? ¡ ”New ¡code ¡in ¡two ¡consecuFve ¡valid ¡test ¡cases” ¡

  28. Explanation Change ¡ Infeasible ¡area ¡ Ï ¡ Valid ¡Test ¡1 ¡ Valid ¡Test ¡2 ¡

  29. Evaluation

Recommend


More recommend