PINCETTE project: Validation of changes and upgrades in large software systems Unique challenges and suggested solutions Hana Chockler.

Slides:



Advertisements
Similar presentations
1 Verification by Model Checking. 2 Part 1 : Motivation.
Advertisements

Object Oriented Analysis And Design-IT0207 iiI Semester
March 25, 2012 Organizing committee: Hana Chockler IBM Daniel Kroening Oxford Natasha Sharygina USI Leonardo Mariani Giovanni Denaro UniMiB.
Formal Methods and Testing Goal: software reliability Use software engineering methodologies to develop the code. Use formal methods during code development.
Chapter 14 Software Testing Techniques - Testing fundamentals - White-box testing - Black-box testing - Object-oriented testing methods (Source: Pressman,
Delta Debugging and Model Checkers for fault localization
CS 267: Automated Verification Lecture 8: Automata Theoretic Model Checking Instructor: Tevfik Bultan.
A Program Transformation For Faster Goal-Directed Search Akash Lal, Shaz Qadeer Microsoft Research.
Verification of Evolving Software Natasha Sharygina Joint work with Sagar Chaki and Nishant Sinha Carnegie Mellon University.
White Box and Black Box Testing Tor Stålhane. What is White Box testing White box testing is testing where we use the info available from the code of.
Data-Flow Analysis Framework Domain – What kind of solution is the analysis looking for? Ex. Variables have not yet been defined – Algorithm assigns a.
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Model Checker In-The-Loop Flavio Lerda, Edmund M. Clarke Computer Science Department Jim Kapinski, Bruce H. Krogh Electrical & Computer Engineering MURI.
Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
Rigorous Software Development CSCI-GA Instructor: Thomas Wies Spring 2012 Lecture 13.
A survey of techniques for precise program slicing Komondoor V. Raghavan Indian Institute of Science, Bangalore.
David Brumley, Pongsin Poosankam, Dawn Song and Jiang Zheng Presented by Nimrod Partush.
Best-First Search: Agendas
CMSC 345, Version 11/07 SD Vick from S. Mitchell Software Testing.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
16/27/2015 3:38 AM6/27/2015 3:38 AM6/27/2015 3:38 AMTesting and Debugging Testing The process of verifying the software performs to the specifications.
Testing Components in the Context of a System CMSC 737 Fall 2006 Sharath Srinivas.
1 Formal Engineering of Reliable Software LASER 2004 school Tutorial, Lecture1 Natasha Sharygina Carnegie Mellon University.
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
272: Software Engineering Fall 2012 Instructor: Tevfik Bultan Lecture 4: SMT-based Bounded Model Checking of Concurrent Software.
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
272: Software Engineering Fall 2012 Instructor: Tevfik Bultan Lecture 17: Code Mining.
System/Software Testing
Software Testing. Recap Software testing – Why do we do testing? – When it is done? – Who does it? Software testing process / phases in software testing.
Reverse Engineering State Machines by Interactive Grammar Inference Neil Walkinshaw, Kirill Bogdanov, Mike Holcombe, Sarah Salahuddin.
CMSC 345 Fall 2000 Unit Testing. The testing process.
TOPIC R Software Maintenance, Evolution, Program Comprehension, and Reverse Engineering SEG4110 Advanced Software Design and Reengineering.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
Ch6: Software Verification. 1 Decision table based testing  Applicability:  Spec. is described by a decision table.  Tables describe:  How combinations.
Software Testing Testing types Testing strategy Testing principles.
Foundations of Software Testing Chapter 5: Test Selection, Minimization, and Prioritization for Regression Testing Last update: September 3, 2007 These.
Testing Workflow In the Unified Process and Agile/Scrum processes.
Inferring Specifications to Detect Errors in Code Mana Taghdiri Presented by: Robert Seater MIT Computer Science & AI Lab.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
A Review of Software Testing - P David Coward Reprinted: Information and Software Technology; Vol. 30, No. 3 April 1988 Software Engineering: The Development.
Learning Symbolic Interfaces of Software Components Zvonimir Rakamarić.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
SOFTWARE TESTING. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Foundations of Software Testing Chapter 5: Test Selection, Minimization, and Prioritization for Regression Testing Last update: September 3, 2007 These.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
Verification vs. Validation Verification: "Are we building the product right?" The software should conform to its specification.The software should conform.
On the Relation Between Simulation-based and SAT-based Diagnosis CMPE 58Q Giray Kömürcü Boğaziçi University.
Software Testing Strategies for building test group
Software Testing.
Testing Tutorial 7.
Software Testing.
SS 2017 Software Verification Bounded Model Checking, Outlook
Software Testing.
Testing and Debugging PPT By :Dr. R. Mall.
SOFTWARE TESTING OVERVIEW
Software Engineering (CSI 321)
Chapter 8 – Software Testing
Types of Testing Visit to more Learning Resources.
Software Testing (Lecture 11-a)
Lecture 09:Software Testing
Over-Approximating Boolean Programs with Unbounded Thread Creation
Software testing.
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Algorithms and Problem Solving
Software Testing “If you can’t test it, you can’t design it”
Model Checking and Its Applications
Presentation transcript:

PINCETTE project: Validation of changes and upgrades in large software systems Unique challenges and suggested solutions Hana Chockler

2 Motivation: Challenges of validation of evolving software  Large software systems are usually built incrementally:  Maintenance (fixing errors and flaws, hardware changes, etc.)  Enhancements (new functionality, improved efficiency, extension, new regulations, etc.)  Changes are done frequently during the lifetime of most systems and can introduce new software errors or expose old errors  Upgrades are done gradually, so the old and new versions have to co- exist in the same system  Changes often require re-certification of the system, especially for mission-critical systems

3 "Upgrading a networked system is similar to upgrading software of a car while the car's engine is running, and the car is moving on a highway. Unfortunately, in networked systems we don't have the option of shutting the whole system down while we upgrade and verify a part of it.“ source: software update

4 PINCETTE Project – Validating Changes and Upgrades in Networked Software Checking for crushes Static Analysis Component Black box testing Dynamic Analysis Component Front end Methodology book Using function summaries Verifying only the change White box testing

5 What does it mean to validate a change in a software system? Equivalence checking – when the new version should be equivalent to the previous version in terms of functionality Changes in the underlying hardware Optimizations No crashes – when several versions need to co-exist in the same system, and we need to ensure that the update will not crash the system When there is no correctness specification, this is often the only thing we can check Checking that a specific bug was fixed A counterexample trace can be viewed as a specification of a behavior that needs to be eliminated in the new version Validation of the new functionality If a correctness specification for the change exists, we can check whether the new (or changed) behaviors satisfy this specification

6 Why is it validation of evolving software different from standard software validation? Software systems are too large to be formally verified or exhaustively tested at once Even if it is feasible to validate the whole system, often the process is too long and expensive and does not fit into the schedule of small frequent changes When validating the whole system, there is a danger of overlooking the change How can we use the fact that we are validating evolving software? If the previous version was validated in some way, we can assume that it is correct and not re-validate the parts that were not changed If the results of previous validation exist, we can use them as a basis for the current validation – especially useful when there are many versions that differ from each other only slightly The previous version can be used as a specification

7 After more than two years of PINCETTE: 1.How to verify an evolving system that does not have assertions? 2.How to verify only the change without relying on results of previous verification?

8 1.How to verify an evolving system that does not have assertions?

9 Dynamically Discovering Assertions to Support Formal Verification Motivation: “Gray-box” components (such as OTS components) – poor specifications, partial view of internal details Lack of specification complicates validation and debugging Lack of description of the correct behavior complicates integration Idea: Analyze gray-box components by dynamic analysis techniques: Monitor system executions by observing interactions at the component interface level and inside components Derive models of the expected behavior from the observed events Mark the model violations as symptoms of faults ©Leonardo Mariani, UniMiB

10 Dynamically Discovering Assertions at BCT (UniMiB tool) Combining dynamic analysis and model-based monitoring Combining classic dynamic analysis techniques (Daikon) with incremental finite state generation techniques (kBehavior) to produce I/O models and interaction models FSA are produced and refined based on subsequent executions Extracting information about likely causes of failures by automatically relating the detected anomalies Filtering false positives in two steps: Identify and eliminate false positives by comparing failing and successful executions with heuristics already experienced in other contexts Rank the remaining anomalies according to their mutual correlation and use this information to push the related likely false positives far from the top anomalies ©Leonardo Mariani, UniMiB

11 Extracting a set of valid assertions for regression Program V.0Program V.1 Testing set of traces Analysis Set of candidate assertions Formal methods Set of assertions that hold in V.0 Set of invalid assertions in V.1 Formal methods Set of assertions that hold in V.0 + Efficient and automatic regression verification user UniMiB+Oxford+USI

12 Parameters of the assertions discovery Scope of monitoring All lines Function invocations Loops Particular variables Output refinement Many violations – maybe leave only those in the slice of the change Look for a minimal set How to design the search algorithm? Can we check properties of the type “if P_1, P_2,…P_n are true then Q_1, Q_2,..Q_m” where each property may hold at a different code location?

13 1.how 2.How to verify only the change without relying on results of previous verification? The main idea: Verify only the change ignoring the rest of the program Using ExpliSAT Joint work with Sitvanit Ruah

14 What is ExpliSAT? A model-checker that combines explicit traversal of CFG with symbolic representation of data: Traverses CFG Ensure that we traverse only real paths by computing a representative path with real data values Builds a SAT formula for each path on the control flow graph and invokes a SAT solver Bugs-hunting heuristics can be added to change the order of traversal of the graph, so that the places where bugs are more likely to occur are traversed first The concolic approach is widely used in testing concrete+symbolic Heuristics direct the search towards areas in which bugs are more likely to occur

15 The path representative – checking that the symbolic path is real ExpliSAT traverse the CFG and create all possible control paths Symbolically represent data variables of all executions that follow the same control path A path representative for a certain control path is a valuation of every variable in the control path that holds the path constraint. For every legal control path there exists a path representative The representative is computed iteratively A Update the representative until A and look at command in A Use the representative prefix until A to decide which branch to take a control path with a representative is a legal control path The other branch may be infeasible – checked by trying to construct a representative

16 Ordering - Heuristically deciding in which order to traverse the control paths 1 1: x=input(); 2: if (x>N) then else 3:y=x; 4:y=N; 1: x=input(); 2: if (x>N) then else 4:y=N; 5: assert(y>=N); The particular heuristic depends on the verification goals – for updates, we use the update- checking heuristic

17 Extracting the part of the control- flow graph affected by a change change subgraph induced by the changed node initial state Backward reachability of the initial state from the changed node

18 ExpliSAT with update-checking ExpliSAT with update checking goto-ccSAT solver syntactic marking of changes Old version New version only the new version with marking is passed Checks paths that go through a changed node first result: goto- program with the change marking Parser + translation to a goto-program Cprover framework

19 Update-checking heuristics in ExpliSAT Turns the model- checker to a bug hunter Two options: Check only the change Check the change first, then continue checking the whole program Very efficient New bugs will be discovered quickly The whole process is complete

20 Effect of a change on functionality of the program Claim: in sequential programs, the algorithm from the previous slide finds all paths affected by a change straightforward Observation: in concurrent programs, a change can also affect other paths – future work Changes in global variables

21 Experimental results Compared performance of ExpliSAT on the whole program with the performance of ExpliSAT on the change only Not surprisingly, ExpliSAT on changes only is much faster Real-life example: a C++ program supplied by VTT Technical Research Center of Finland, computing the velocity and acceleration of a robot used in the European ITER project – a new type of a reactor based on energy of nuclear fusion ExpliSAT found a bug in update in several seconds On the whole program ExpliSAT doesn’t terminate

22 VTT (Finland) - the ITER EU Project: the thermo-nuclear reactor ITER is an international magnetic confinement fusion experimental project participated by the EU, India, Japan, China, Russia, South Korea, and the USA. The expected budget of ITER is €5B with 50% of funding provided by the EU. The reactor will be constructed in Cadarache, France, around ITER is one of the most important and complex research projects in the history of the EU. divertor: goes at the bottom of the reactor; should be changed periodically Robot that changes the divertor cassette

23