regression verification project proposal
play

Regression Verification: Project Proposal Presentation by Dennis - PowerPoint PPT Presentation

Regression Verification: Project Proposal Presentation by Dennis Felsing within the Projektgruppe Formale Methoden der Softwareentwicklung SS 2013 1 / 18 Introduction How to prevent regressions in software development? 2 / 18 Introduction


  1. Regression Verification: Project Proposal Presentation by Dennis Felsing within the Projektgruppe Formale Methoden der Softwareentwicklung SS 2013 1 / 18

  2. Introduction How to prevent regressions in software development? 2 / 18

  3. Introduction Formal Verification Formally prove correctness of software ⇒ Requires formal specification Regression Testing Discover new bugs by testing for them ⇒ Requires test cases 3 / 18

  4. Introduction Formal Verification Formally prove correctness of software ⇒ Requires formal specification Regression Testing Discover new bugs by testing for them ⇒ Requires test cases Regression Verification Formally prove there are no new bugs 3 / 18

  5. Regression Verification Overview Equivalent? Function f Function g (val n ; ret r ) (val x ; ret y ) Uninterpreted Functions Function f Function g without recursions without recursions Static Single Static Single Assignment S f Assignment S g ( n = x ∧ S f ∧ S g ) → r = y SMT Solver Valid / Invalid 4 / 18

  6. Regression Verification Formally prove there are no new bugs • Goal: Proving the equivalence of two closely related programs • No formal specification or test cases required • Instead use old program version • Make use of similarity between programs 5 / 18

  7. Regression Verification Formally prove there are no new bugs • Goal: Proving the equivalence of two closely related programs • No formal specification or test cases required • Instead use old program version • Make use of similarity between programs f ( int n) { int g ( int x ) { int int r = 0; int y = 0; (n ≤ 0) { (x ≤ 1) { i f i f r = n ; y = x ; } else { } else { y = x + g ( x − 1 ) ; r = n + f (n − 1 ) ; } } return r ; return y ; } } 5 / 18

  8. Regression Verification Formally prove there are no new bugs • Goal: Proving the equivalence of two closely related programs • No formal specification or test cases required • Instead use old program version • Make use of similarity between programs f ( int n) { int g ( int x ) { int int r = 0; int y = 0; (n ≤ 0) { (x ≤ 1) { i f i f r = n ; y = x ; } else { } else { y = x + g ( x − 1 ) ; r = n + f (n − 1 ) ; } } return r ; return y ; } } 5 / 18

  9. Uninterpreted Functions Overview Equivalent? Function f Function g (val n ; ret r ) (val x ; ret y ) Uninterpreted Functions Function f Function g without recursions without recursions Static Single Static Single Assignment S f Assignment S g ( n = x ∧ S f ∧ S g ) → r = y SMT Solver Valid / Invalid 6 / 18

  10. Uninterpreted Functions • Given the same inputs an Uninterpreted Function always returns the same outputs. • Motivation: Proof by Induction, to prove f ( n ) = g ( n ) assume f ( n − 1) = g ( n − 1) f ( int n) { int g ( int x ) { int int r = 0; int y = 0; i f (n ≤ 0) { i f (x ≤ 1) { r = n ; y = x ; } else { } else { r = n + U (n − 1 ) ; y = x + U ( x − 1 ) ; } } r ; return y ; return } } 7 / 18

  11. Static Single Assignment Overview Equivalent? Function f Function g (val n ; ret r ) (val x ; ret y ) Uninterpreted Functions Function f Function g without recursions without recursions Static Single Static Single Assignment S f Assignment S g ( n = x ∧ S f ∧ S g ) → r = y SMT Solver Valid / Invalid 8 / 18

  12. Static Single Assignment • Translate program functions to formulas • Recursions: Abstraction by Uninterpreted Function • In assignments x = exp replace x with a new variable x 1 • Represents the states of the program 9 / 18

  13. Static Single Assignment • Translate program functions to formulas • Recursions: Abstraction by Uninterpreted Function • In assignments x = exp replace x with a new variable x 1 • Represents the states of the program int f ( int n) {  r 0 = 0 r = 0; int  i f (n ≤ 0) { S f =   r = n ; } else { r = n + U (n − 1 ) ; } r ; return } 9 / 18

  14. Static Single Assignment • Translate program functions to formulas • Recursions: Abstraction by Uninterpreted Function • In assignments x = exp replace x with a new variable x 1 • Represents the states of the program int f ( int n) {  r 0 = 0 ∧ r = 0; int n ≤ 0 → r 1 = n  i f (n ≤ 0) { S f =   r = n ; } else { r = n + U (n − 1 ) ; } r ; return } 9 / 18

  15. Static Single Assignment • Translate program functions to formulas • Recursions: Abstraction by Uninterpreted Function • In assignments x = exp replace x with a new variable x 1 • Represents the states of the program int f ( int n) {  r 0 = 0 ∧ r = 0; int n ≤ 0 → r 1 = n ∧  i f (n ≤ 0) { S f =  n > 0 → r 1 = n + U ( n − 1)  r = n ; } else { r = n + U (n − 1 ) ; } r ; return } 9 / 18

  16. Static Single Assignment • Translate program functions to formulas • Recursions: Abstraction by Uninterpreted Function • In assignments x = exp replace x with a new variable x 1 • Represents the states of the program int f ( int n) {   r 0 = 0 ∧ r = 0; int n ≤ 0 → r 1 = n ∧   i f (n ≤ 0) { S f =   n > 0 → r 1 = n + U ( n − 1) ∧   r = n ; r = r 1 } else { r = n + U (n − 1 ) ; } r ; return } 9 / 18

  17. Formula Overview Equivalent? Function f Function g (val n ; ret r ) (val x ; ret y ) Uninterpreted Functions Function f Function g without recursions without recursions Static Single Static Single Assignment S f Assignment S g ( n = x ∧ S f ∧ S g ) → r = y � �� � � �� � Equal inputs Equal outputs 10 / 18

  18. SMT Solver Overview Equivalent? Function f Function g (val n ; ret r ) (val x ; ret y ) Uninterpreted Functions Function f Function g without recursions without recursions Static Single Static Single Assignment S f Assignment S g ( n = x ∧ S f ∧ S g ) → r = y SMT Solver Valid / Invalid 11 / 18

  19. Extensions • SMT solver still complains: � − 1 if n = 0 f ( n ) = g ( n ) otherwise 12 / 18

  20. Extensions • SMT solver still complains: � − 1 if n = 0 f ( n ) = g ( n ) otherwise int f ( int n) { int g ( int x ) { r = 0; y = 0; int int i f (n ≤ 0) { i f ( x ≤ 1) { r = n ; y = x ; } else { } else { r = n + f (n − 1 ) ; y = x + g ( x − 1 ) ; } } r ; return y ; return } } 12 / 18

  21. Extensions • SMT solver still complains: � − 1 if n = 0 f ( n ) = g ( n ) otherwise int f ( int n) { int g ( int x ) { r = 0; y = 0; int int i f (n ≤ 0) { i f ( x ≤ 1) { r = n ; y = x ; } else { } else { r = n + f (n − 1 ) ; y = x + g ( x − 1 ) ; } } r ; return y ; return } } • But we can fix it: f (0) = 0 12 / 18

  22. Extensions Finding Counter Examples Equivalent? Function f Function g (val n ; ret r ) (val x ; ret y ) Uninterpreted Functions Function f Function g without recursions without recursions Static Single Static Single Assignment S f Assignment S g ( n = x ∧ S f ∧ S g ) → r = y SMT Solver Execute Valid / Invalid Counter Example 13 / 18

  23. Extensions Determining Corner Cases Equivalent? Function f Function g (val n ; ret r ) (val x ; ret y ) Uninterpreted Functions Function f Function g without recursions without recursions Static Single Static Single Assignment S f Assignment S g ( n = x ∧ S f ∧ S g ∧ U (0) = 0 ) → r = y Add SMT Solver Execute Valid / Invalid Counter Example 14 / 18

  24. Extensions Functional Condition Extraction Equivalent? Function f Function g (val n ; ret r ) (val x ; ret y ) Function f Function g Functional Condition without recursions without recursions Add Static Single Static Single Assignment S f Assignment S g ( n = x ∧ S f ∧ S g ∧ α ) → r = y SMT Solver Valid / Invalid 15 / 18

  25. Extensions Relational Equivalence Equivalent? Function f Function g (val n ; ret r ) (val x ; ret y ) Uninterpreted Functions Function f Function g without recursions without recursions Static Single Static Single Assignment S f Assignment S g ( n ≥ 0 ∧ n = x ∧ S f ∧ S g ) → r ∼ y SMT Solver Valid / Invalid 16 / 18

  26. Example Catalog • Collect examples: Papers, Refactoring Rules, ... • 51 program pairs so far • Test how well approach and extensions work 17 / 18

  27. Conclusion Regression Verification • Better chance of being adopted than Formal Verification • More powerful than Regression Testing • Extensions to cover more cases • Example Catalog for evaluation 18 / 18

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend