bert behavioral regression testing
play

BERT: BEhavioral Regression Testing Alessandro (Alex) Orso Tao Xie - PowerPoint PPT Presentation

BERT: BEhavioral Regression Testing Alessandro (Alex) Orso Tao Xie School of CS -- College of Computing Department of Computer Science Georgia Institute of Technology North Carolina State University http://www.cc.gatech.edu/~orso/


  1. BERT: BEhavioral Regression Testing Alessandro (Alex) Orso Tao Xie School of CS -- College of Computing Department of Computer Science Georgia Institute of Technology North Carolina State University http://www.cc.gatech.edu/~orso/ http://people.engr.ncsu.edu/txie/ Partially supported by : NSF, DHS, and US Air Force

  2. [...] the outage was due to an upgrade of the company’s Web site [...]

  3. -- Greg Kroah-Hartman keynote on the Linux kernel at OLS 2006

  4. Regression Testing Process and Issues Test suite T Program P

  5. Regression Testing Process and Issues Test suite T Program P Program P'

  6. Regression Testing Process and Issues ? Test suite T Program P Program P'

  7. Regression Testing Process and Issues Test suite T

  8. Regression Testing Process and Issues T e s t - s u i t e Test suite Tval m a i n t e n a n c e Test suite T Obsolete test cases

  9. Regression Testing Process and Issues T e s t - s u i t e Regression Test suite Tval Test suite T' m a i n t e n a n c e test selection Test suite T Obsolete test cases

  10. Regression Testing Process and Issues T e s t - s u i t e Regression Test-suite Test suite Tval Test suite T' Prioritized m a i n t e n a n c e test selection prioritization Test suite T' Test suite T Obsolete test cases

  11. Regression Testing Process and Issues T e s t - s u i t e Regression Test-suite Test suite Tval Test suite T' Prioritized m a i n t e n a n c e test selection prioritization Test suite T' Test suite T augmentation Test-suite Obsolete test cases Test suite Taug

  12. Regression Testing Process and Issues T e s t - s u i t e Regression Test-suite Test suite Tval Test suite T' Prioritized m a i n t e n a n c e test selection prioritization Test suite T' Test suite T augmentation Test-suite Obsolete test cases Redundant test cases Minimized Test-suite test suite Test suite Taug minimization

  13. Regression Testing Process and Issues T e s t - s u i t e Regression Test-suite Test suite Tval Test suite T' Prioritized m a i n t e n a n c e test selection prioritization Test suite T' Test suite T augmentation Test-suite Obsolete test cases Redundant test cases Modified Minimized Test-case Test-suite test suite test suite Test suite Taug manipulation minimization

  14. Regression Testing Process and Issues T e s t - s u i t e Regression Test-suite Test suite Tval Test suite T' Prioritized m a i n t e n a n c e test selection prioritization Test suite T' Test suite T augmentation Test-suite Obsolete test cases Redundant test cases Modified Minimized Test-case Test-suite test suite test suite Test suite Taug manipulation minimization

  15. Outline • Introduction • Our technique • Experience • Conclusion and future work

  16. Outline • Introduction • Our technique • Experience • Conclusion and future work

  17. Outline • Introduction • Our technique • Experience • Conclusion and future work

  18. Traditional regression testing Program P Program P' Test suite T

  19. Traditional regression testing Program P Program P' Test runner & Oracle checker Test suite T

  20. Traditional regression testing Program P Program P' Test runner & Oracle checker Test suite T Regression errors

  21. Traditional class BankAccount { double balance; regression bool deposit(double amount) { testing if (amount > 0.00) { balance = balance + amount; return true; } else { print("negative amount"); return false; } } Program P Program P' bool withdraw(double amount) { if (amount <= 0) { print("negative amount"); Test runner return false; & Oracle } checker if (balance < 0) print("account overdraft"); return false; Test suite T } balance = balance - amount; Regression errors return true; } }

  22. class BankAccount { double balance; bool deposit(double amount) { if (amount > 0.00) { balance = balance + amount; return true; } else { print("negative amount"); return false; } } bool withdraw(double amount) { if (amount <= 0) { print("negative amount"); return false; } if (balance < 0) print("account overdraft"); return false; } balance = balance - amount; return true; } }

  23. class BankAccount { double balance; bool deposit(double amount) { if (amount > 0.00) { balance = balance + amount; return true; } else { print("negative amount"); return false; } } bool withdraw(double amount) { if (amount <= 0) { print("negative amount"); return false; } if (balance < 0) print("account overdraft"); return false; } balance = balance - amount; return true; } }

  24. class BankAccount { class BankAccount { double balance; double balance; bool isOverdraft; bool deposit(double amount) { bool deposit(double amount) { if (amount > 0.00) { if (amount > 0.00) { balance = balance + amount; balance = balance + amount; return true; return true; } else { } else { print("negative amount"); print("negative amount"); return false; return false; } } } } bool withdraw(double amount) { bool withdraw(double amount) { if (amount <= 0) { if (amount <= 0) { print("negative amount"); print("negative amount"); return false; return false; } } if (balance < 0) if (isOverdraft) { print("account overdraft"); print("account overdraft"); return false; return false; } } balance = balance - amount; balance = balance - amount; if (balance < 0) isOverdraft = true; return true; return true; } } } }

  25. class BankAccount { class BankAccount { double balance; double balance; bool isOverdraft; bool deposit(double amount) { bool deposit(double amount) { if (amount > 0.00) { if (amount > 0.00) { balance = balance + amount; balance = balance + amount; return true; return true; } else { } else { print("negative amount"); print("negative amount"); return false; return false; } } } } bool withdraw(double amount) { bool withdraw(double amount) { if (amount <= 0) { if (amount <= 0) { print("negative amount"); print("negative amount"); return false; return false; } } if (balance < 0) if (isOverdraft) { print("account overdraft"); print("account overdraft"); return false; return false; } } balance = balance - amount; balance = balance - amount; if (balance < 0) isOverdraft = true; return true; return true; } } } }

  26. class BankAccount { class BankAccount { double balance; double balance; bool isOverdraft; bool deposit(double amount) { bool deposit(double amount) { if (amount > 0.00) { if (amount > 0.00) { balance = balance + amount; balance = balance + amount; return true; return true; } else { } else { print("negative amount"); print("negative amount"); return false; return false; } } } } bool withdraw(double amount) { bool withdraw(double amount) { if (amount <= 0) { if (amount <= 0) { print("negative amount"); print("negative amount"); return false; return false; } } if (balance < 0) if (isOverdraft) { print("account overdraft"); print("account overdraft"); return false; return false; } } balance = balance - amount; balance = balance - amount; if (balance < 0) isOverdraft = true; return true; return true; } } } }

  27. class BankAccount { class BankAccount { double balance; double balance; bool isOverdraft; bool deposit(double amount) { bool deposit(double amount) { if (amount > 0.00) { if (amount > 0.00) { balance = balance + amount; balance = balance + amount; return true; return true; } else { } else { print("negative amount"); print("negative amount"); return false; return false; } } } } bool withdraw(double amount) { bool withdraw(double amount) { if (amount <= 0) { if (amount <= 0) { print("negative amount"); print("negative amount"); return false; return false; } } if (balance < 0) if (isOverdraft) { print("account overdraft"); print("account overdraft"); return false; return false; } } balance = balance - amount; balance = balance - amount; if (balance < 0) isOverdraft = true; return true; return true; } } } }

  28. class BankAccount { double balance; bool isOverdraft; bool deposit(double amount) { if (amount > 0.00) { balance = balance + amount; return true; } else { print("negative amount"); return false; } Where is } bool withdraw(double amount) { if (amount <= 0) { the fault? print("negative amount"); return false; } if (isOverdraft) { print("account overdraft"); return false; } balance = balance - amount; if (balance < 0) isOverdraft = true; return true; } }

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