CS527 Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 30, 2011.

Slides:



Advertisements
Similar presentations
CHESS : Systematic Testing of Concurrent Programs
Advertisements

Runtime Techniques for Efficient and Reliable Program Execution Harry Xu CS 295 Winter 2012.
1 Chao Wang, Yu Yang*, Aarti Gupta, and Ganesh Gopalakrishnan* NEC Laboratories America, Princeton, NJ * University of Utah, Salt Lake City, UT Dynamic.
A Program Transformation For Faster Goal-Directed Search Akash Lal, Shaz Qadeer Microsoft Research.
Chair of Software Engineering From Program slicing to Abstract Interpretation Dr. Manuel Oriol.
CS527: Advanced Topics in Software Engineering (Software Testing and Analysis) Darko Marinov September 18, 2008.
Background for “KISS: Keep It Simple and Sequential” cs264 Ras Bodik spring 2005.
CSE , Autumn 2011 Michael Bond.  Name  Program & year  Where are you coming from?  Research interests  Or what’s something you find interesting?
Iterative Context Bounding for Systematic Testing of Multithreaded Programs Madan Musuvathi Shaz Qadeer Microsoft Research.
CHESS: A Systematic Testing Tool for Concurrent Software CSCI6900 George.
Tom Ball, Sebastian Burckhardt, Madan Musuvathi, Shaz Qadeer Microsoft Research.
 Thomas Ball Principal Researcher Microsoft Corporation  Sebastian Burckhardt Researcher Microsoft Corporation  Madan Musuvathi Researcher Microsoft.
Limited Time and Experience: Parallelism in CS1 Fourth NSF/TCPP Workshop on Parallel and Distributed Computing Education (EduPar-14) Steven Bogaerts.
CS533 Concepts of Operating Systems Class 3 Data Races and the Case Against Threads.
C. FlanaganSAS’04: Type Inference Against Races1 Type Inference Against Races Cormac Flanagan UC Santa Cruz Stephen N. Freund Williams College.
CS294, YelickESC, p1 CS Extended Static Checking
CS533 Concepts of Operating Systems Class 3 Monitors.
Previous finals up on the web page use them as practice problems look at them early.
CS 300 – Lecture 20 Intro to Computer Architecture / Assembly Language Caches.
1 A Modular Checker for Multithreaded Programs Cormac Flanagan HP Systems Research Center Joint work with Shaz Qadeer Sanjit A. Seshia.
April 13, 2004CS WPI1 CS 562 Advanced SW Engineering General Dynamics, Needham Tuesdays, 3 – 7 pm Instructor: Diane Kramer.
Applying Dynamic Analysis to Test Corner Cases First Penka Vassileva Markova Madanlal Musuvathi.
Topic ? Course Overview. Guidelines Questions are rated by stars –One Star Question  Easy. Small definition, examples or generic formulas –Two Stars.
272: Software Engineering Fall 2012 Instructor: Tevfik Bultan Lecture 4: SMT-based Bounded Model Checking of Concurrent Software.
Thread-modular Abstraction Refinement Thomas A. Henzinger, et al. CAV 2003 Seonggun Kim KAIST CS750b.
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
1 Testing Concurrent Programs Why Test?  Eliminate bugs?  Software Engineering vs Computer Science perspectives What properties are we testing for? 
CS527 Topics in Software Engineering (Software Testing and Analysis) Darko Marinov September 15, 2011.
Advanced Operating Systems CIS 720 Lecture 1. Instructor Dr. Gurdip Singh – 234 Nichols Hall –
Cs498dm Software Testing Darko Marinov January 15, 2008.
CS527: (Advanced) Topics in Software Engineering -- Software Testing, Debugging, Analysis, Analytics – Course Logistics Tao Xie ©D. Marinov, T. Xie.
Bug Localization with Machine Learning Techniques Wujie Zheng
Dynamic Analysis of Multithreaded Java Programs Dr. Abhik Roychoudhury National University of Singapore.
What Change History Tells Us about Thread Synchronization RUI GU, GUOLIANG JIN, LINHAI SONG, LINJIE ZHU, SHAN LU UNIVERSITY OF WISCONSIN – MADISON, USA.
CS527: Advanced Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 28, 2008.
Race Checking by Context Inference Tom Henzinger Ranjit Jhala Rupak Majumdar UC Berkeley.
Use of Coverity & Valgrind in Geant4 Gabriele Cosmo.
CS527 Topics in Software Engineering (Software Testing and Analysis) Darko Marinov September 9, 2010.
Widespread Integration of Parallelism Steven Bogaerts.
Cpr E 308 Spring 2004 Real-time Scheduling Provide time guarantees Upper bound on response times –Programmer’s job! –Every level of the system Soft versus.
Java PathFinder (JPF) cs498dm Software Testing January 19, 2012.
CS527 Topics in Software Engineering (Software Testing and Analysis) Darko Marinov September 16, 2010.
CS527 Topics in Software Engineering (Software Testing and Analysis) Darko Marinov September 22, 2011.
11/18/20151 Operating Systems Design (CS 423) Elsa L Gunter 2112 SC, UIUC Based on slides by Roy Campbell, Sam.
An Undergraduate Course on Software Bug Detection Tools and Techniques Eric Larson Seattle University March 3, 2006.
“Isolating Failure Causes through Test Case Generation “ Jeremias Rößler Gordon Fraser Andreas Zeller Alessandro Orso Presented by John-Paul Ore.
Exam Review Andy Wang Operating Systems COP 4610 / CGS 5765.
CAPP: Change-Aware Preemption Prioritization Vilas Jagannath, Qingzhou Luo, Darko Marinov Sep 6 th 2011.
Cs498dm Software Testing Darko Marinov January 27, 2009.
/ PSWLAB Thread Modular Model Checking by Cormac Flanagan and Shaz Qadeer (published in Spin’03) Hong,Shin Thread Modular Model.
CS527 Topics in Software Engineering (Software Testing and Analysis) Darko Marinov September 7, 2010.
CS527: (Advanced) Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 24, 2010.
Where Testing Fails …. Problem Areas Stack Overflow Race Conditions Deadlock Timing Reentrancy.
Cs498dm Software Testing Darko Marinov January 24, 2012.
1 Active Random Testing of Parallel Programs Koushik Sen University of California, Berkeley.
Advanced Operating Systems CIS 720
Sarah Diesburg Operating Systems COP 4610
CSC 591/791 Reliable Software Systems
Sequentializing Parameterized Programs
Games Development 2 semester 1 Review & Revision
CS533 Concepts of Operating Systems Class 3
Effective Data-Race Detection for the Kernel
CS527: (Advanced) Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 25, 2011.
Over-Approximating Boolean Programs with Unbounded Thread Creation
CS533 Concepts of Operating Systems Class 3
Andy Wang Operating Systems COP 4610 / CGS 5765
Andy Wang Operating Systems COP 4610 / CGS 5765
Andy Wang Operating Systems COP 4610 / CGS 5765
Darko Marinov February 5, 2009
Sarah Diesburg Operating Systems CS 3430
Presentation transcript:

CS527 Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 30, 2011

Course Info Everyone on the mailing list and “People” –Hopefully no more registration changes Coursework –PROJECT [40%] Already received some proposals –Presentation [20%] –Participation (reports and discussion) [20%] –Homework assignment(s) [20%] Fair warning: this is NOT easy –Project requires that you explore some topic in great DEPTH

Schedule First few lectures to help you select projects –Last week: Intro, Reading/Writing papers –Today: CHESS (find multithreaded bugs) –Sep 1: IMUnit (writing multithreaded tests) –Sep 6: CAPP & Setac (more concurrent testing) –Sep 8: iComment (analyzing source comments) –Your preferences? (I’ll also read HW0) Software testing, model checking, static analysis Your presentations from Oct 4 –1 or 2 presentations per lecture

(Y)our Paper Reports Start on NEXT Thursday (Sep 6) Four items: 1.One good point 2.One bad point 3.One potential project (help for proposals) 4.One question for discussion Looking for DEPTH –Length is not important; answers that are too long can make it hard to find the depth

Discussion Before/After Meeting Starting the discussion online before the meeting? –Pro: the discussion starts shortly after you read the paper –Con: potential issues with copying ideas or statements for the paper reports –Could use rule that every report needs to address an issue not raised previously Two NO votes so far

Paper Today Iterative Context Bounding for Systematic Testing of Multithreaded Programs Madan Musuvathi & Shaz Qadeer (PLDI 2007)Iterative Context Bounding for Systematic Testing of Multithreaded Programs Slides from a tutorial by Sebastian Burckhardt, Madan Musuvathi & Shaz QadeerSlides –Not only about this specific paper What would you write for the four items: 1.One good point 2.One bad point 3.One potential project 4.One question for discussion

Paper Overview Problem –Testing multithreaded code is hard –Trying all thread interleavings doesn’t scale Solution –Bound the number of preemptive context switches –Tool for Windows: CHESS (stateless, reexecutes) –Evaluation also for ZING (stateful) Evaluation –6 programs of various sizes –Found 14 previously unknown bugs

Old Questions for Discussion, 1 Missing by 12:30: [CR], [AS] Can POR improve CHESS & how much? [JC] How often CHESS goes to infinite loop in state space graph? [MG] Does this paper assume correct use of synchronization variables? [AA] What is the difference between observable and non-observable race? [AA] Better to limit rather than test threading? [HY] How to automatically close open systems? [MK]

Old Questions for Discussion, 2 How to know the size of state space? [AL] Any advantages inserting (removing??) a scheduling point between two syncs? [DM] Why not bound nonpreempting switches? [JN] Can iterative context bounding be applied to message passing programs? [ST] What’s used in industry, stress testing? [QL] Soundness vs. completeness –False positives vs. false negatives –Precision vs. recall Combine CHESS and Pex (or X and Y)?

Old Questions for Discussion, 3 Why not report all accessed to shared data not protected by a synchronization variable? How are data races identified? How are other bugs identified? Assertions? What other heuristics can one use? POR? If you analyze models (ZING), how do you know there is bug in actual code? How to test a complex multithreaded algorithm in mostly sequential code? Extract it out?

Old Questions for Discussion, 4 How does it reduce time to polynomial? What about dynamically changing number of threads in programs? Or dynamically created? Can CHESS handle locks, mutexes, semaphores, etc.? How to identify preemption or nonpreemption in Java code? What are limits of this approach? Is it LOC, 10k, 100k, 1M? Is it # of threads, preemptions? Can it be combined with DFS?

Older Questions for Discussion 1 Which part of JPF/CHESS can be incorrect? Can a compiler be model checked? How difficult is it to set environments? –How to “close a system”? Comparison of testing, model checking, and static analysis When is model checking applicable? What kind of bugs it can find? Why work with language X not Y?

How well does it scale? What about memory requirements? What about time requirements? How can I apply this on my code? What’s recent work in this area? –A lot of work in many group, including mine How to use the tool in practice? How does CHESS/JPF compare states? How good are heuristics? Older Questions for Discussion 2

Old Sample Project Ideas Apply CHESS on some software –Did you read the optional reading/report on JPF? –Compare with more tools and techniques Consider other heuristics for exploration –Message-passing programs? Evolving code? Automate creation of environments Extend JPF implementation of CHESS –Contributed by Igor Andjelkovic, Steven Lauterburg, and Mirko Stojmenovic Reimplement in another model checker Improve debugging of multithreaded code

Next Meeting Thursday, September 1 –Guest presentation by Vilas Jagannath Read a paper (listed on Wiki) –Improved Multithreaded Unit Testing V. Jagannath, M. Gligoric, D. Jin, Q. Luo, G. Rosu, and D. Marinov (ESEC/FSE 2011)Improved Multithreaded Unit Testing –NO report due yet –Consider four points: good, bad, potential project, discussion question