Ongoing projects in the Program Analysis Group Marcelo d’Amorim Informatics Center, Federal University of Pernambuco (UFPE) Belo Horizonte, MG-Brazil,

Slides:



Advertisements
Similar presentations
Program Slicing and Debugging Elton Alves Informatics Center Federal University of Pernambuco (UFPE) V Encontro Brasilieiro de Testes de Software (EBTS),
Advertisements

Runtime Techniques for Efficient and Reliable Program Execution Harry Xu CS 295 Winter 2012.
Delta Debugging and Model Checkers for fault localization
Symbolic Execution with Mixed Concrete-Symbolic Solving
PLDI’2005Page 1June 2005 Example (C code) int double(int x) { return 2 * x; } void test_me(int x, int y) { int z = double(x); if (z==y) { if (y == x+10)
Parallel Symbolic Execution for Structural Test Generation Matt Staats Corina Pasareanu ISSTA 2010.
Model Counting >= Symbolic Execution Willem Visser Stellenbosch University Joint work with Matt Dwyer (UNL, USA) Jaco Geldenhuys (SU, RSA) Corina Pasareanu.
Seminars & Projects © Marcelo d’Amorim 2010.
Symbolic execution © Marcelo d’Amorim 2010.
A survey of techniques for precise program slicing Komondoor V. Raghavan Indian Institute of Science, Bangalore.
© SERG Dependable Software Systems (Slicing) Dependable Software Systems Topics in Program Slicing Material drawn from [Weiser84,Gallagher91,DeMillo96]
Ongoing projects in the Program Analysis Group Marcelo d’Amorim Informatics Center, Federal University of Pernambuco (UFPE) Belo Horizonte, MG-Brazil,
Automated Fitness Guided Fault Localization Josh Wilkerson, Ph.D. candidate Natural Computation Laboratory.
Statistical Debugging: A Tutorial Steven C.H. Hoi Acknowledgement: Some slides in this tutorial were borrowed from Chao Liu at UIUC.
DART Directed Automated Random Testing Patrice Godefroid, Nils Klarlund, and Koushik Sen Syed Nabeel.
1 Today More on random testing + symbolic constraint solving (“concolic” testing) Using summaries to explore fewer paths (SMART) While preserving level.
Software Bug Localization with Markov Logic Sai Zhang, Congle Zhang University of Washington Presented by Todd Schiller.
State coverage: an empirical analysis based on a user study Dries Vanoverberghe, Emma Eyckmans, and Frank Piessens.
Testing Dr. Andrew Wallace PhD BEng(hons) EurIng
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
Computer Programming and Basic Software Engineering 4. Basic Software Engineering 1 Writing a Good Program 4. Basic Software Engineering.
Verification and Validation Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Locating Causes of Program Failures Texas State University CS 5393 Software Quality Project Yin Deng.
Bug Localization with Machine Learning Techniques Wujie Zheng
Aditya V. Nori, Sriram K. Rajamani Microsoft Research India.
Which Configuration Option Should I Change? Sai Zhang, Michael D. Ernst University of Washington Presented by: Kıvanç Muşlu.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
Well-behaved objects Main concepts to be covered Testing Debugging Test automation Writing for maintainability Objects First with Java - A Practical.
Effective Test Execution for SPLs Sabrina Souto (Supervisor: Marcelo d’Amorim) Federal University of Pernambuco - UFPE.
Symbolic Execution with Abstract Subsumption Checking Saswat Anand College of Computing, Georgia Institute of Technology Corina Păsăreanu QSS, NASA Ames.
Automated Patch Generation Adapted from Tevfik Bultan’s Lecture.
Xusheng Xiao North Carolina State University CSC 720 Project Presentation 1.
Chapter 11: Dynamic Analysis Omar Meqdadi SE 3860 Lecture 11 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
References: “Pruning Dynamic Slices With Confidence’’, by X. Zhang, N. Gupta and R. Gupta (PLDI 2006). “Locating Faults Through Automated Predicate Switching’’,
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
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.
1 CEN 4072 Software Testing PPT12: Fixing the defect.
A Test Case + Mock Class Generator for Coding Against Interfaces Mainul Islam, Christoph Csallner Software Engineering Research Center (SERC) Computer.
Using Symbolic PathFinder at NASA Corina Pãsãreanu Carnegie Mellon/NASA Ames.
Objects First With Java A Practical Introduction Using BlueJ Well-behaved objects 2.1.
CAPP: Change-Aware Preemption Prioritization Vilas Jagannath, Qingzhou Luo, Darko Marinov Sep 6 th 2011.
Chapter 1 Software Engineering Principles. Problem analysis Requirements elicitation Software specification High- and low-level design Implementation.
Grigore Rosu Founder, President and CEO Professor of Computer Science, University of Illinois
Automating Configuration Troubleshooting with Dynamic Information Flow Analysis Mona Attariyan Jason Flinn University of Michigan.
( = “unknown yet”) Our novel symbolic execution framework: - extends model checking to programs that have complex inputs with unbounded (very large) data.
The Ins and Outs of Gradual Type Inference Avik Chaudhuri Basil Hosmer Adobe Systems Aseem Rastogi Stony Brook University.
On the Relation Between Simulation-based and SAT-based Diagnosis CMPE 58Q Giray Kömürcü Boğaziçi University.
Test Case Purification for Improving Fault Localization presented by Taehoon Kwak SoftWare Testing & Verification Group Jifeng Xuan, Martin Monperrus [FSE’14]
Phoenix Based Dynamic Slicing Debugging Tool Eric Cheng Lin Xu Matt Gruskin Ravi Ramaseshan Microsoft Phoenix Intern Team (Summer '06)
Testing and Debugging PPT By :Dr. R. Mall.
C++ Plus Data Structures
Localizing Errors in Counterexample Traces
APEx: Automated Inference of Error Specifications for C APIs
Learning Software Behavior for Automated Diagnosis
A Test Case + Mock Class Generator for Coding Against Interfaces
runtime verification Brief Overview Grigore Rosu
SwE 455 Program Slicing.
RDE: Replay DEbugging for Diagnosing Production Site Failures
White-Box Testing.
Business Rule Based Configuration Management and Software System Implementation Using Decision Tables Olegas Vasilecas, Aidas Smaizys VGTU, Vilnius, Lithuania.
White-Box Testing.
Test Case Purification for Improving Fault Localization
PPT1: How failures come to be
Automated Fitness Guided Fault Localization
Automated Patch Generation
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Example (C code) int double(int x) { return 2 * x; }
50.530: Software Engineering
CSE 1020:Software Development
Presentation transcript:

Ongoing projects in the Program Analysis Group Marcelo d’Amorim Informatics Center, Federal University of Pernambuco (UFPE) Belo Horizonte, MG-Brazil, UFMG, 2010

Our approach is to explore best of each verification technique. Our goal is to find errors in software as opposed to prove their correctness.

Student members  Elton is a first year MS student interested in automated debugging * MS=Master Student, URI=Undergraduate Research Initiation.

Student members  Mateus Borges and Matheus Souza are URI students interested in constraint solving for automated testing * MS=Master Student, URI=Undergraduate Research Initiation.

Active projects  Improved precision for lightweight debugging  Elton Alves (MS)  Improved solving of complex constraints  Mateus Borges and Matheus Souza (URI)  Other projects…

Goal of this talk is to present our areas of interest and approach

Improved precision for lightweight debugging  People involved:  Elton Alves (UFPE)  Milos Gligoric, and Vilas Jagananth (University of Illinois)

Context and Problem  Context  Debugging is important. Manual debugging is time-consuming.  Lightweight debugging (LD) has been proposed to complement precise but more expensive automated debuggers (e.g., DD)  Problem  Lightweight debugging can be rather imprecise Precision measured with number of statements the user needs to inspect.

Quick outlook: TARANTULA*  Identify which statements contribute more to failures These statements appear relatively more in failing runs than in passing * J. Jones et al. Empirical Evaluation of test information to assist fault localization. ICSE 2002.

Quick outlook: TARANTULA  Identify which statements contribute more to failures These statements appear relatively more in failing runs than in passing Precision of debugging measured with the position of * in this rank

Observation  Two approaches to improve precision of LD  Use evolution information  Discard statements covered but unrelated to bug Filter changed code (lossy)

Observation  Two approaches to improve precision of LD  Use evolution information  Discard statements covered but unrelated to bug Dynamic slice the code (sound) Filter changed code (lossy)

Quick outlook: Dynamic Slicing*  Identify which statements influence the evaluation of variables at specific points * Agrawal and Horgan. Dynamic Progam Slicing. PLDI class Foo { int x,y,z;.. void method bar() { if (x > y) { y = 20; z = 10; void test() { Foo foo = new Foo(10,5); foo.bar(); assert(foo.z > 10); } class Foo {.. void method bar() { if (x > y) { y = 20; z = 10; }

Proposal  Change-aware forward slicing computation  A statement is related if it appears in the slice. It is relevant if it is related and depends on changed code.  Number of lines  Approach: Modify Forward Dynamic Slicing  A set is relevant only if it depends on a modified location  Set union can ignore irrelevant sets! covered (baseline) > related > relevant

Improved solving of complex constraints  People involved:  Mateus Borges and Matheus Souza (UFPE)  Corina Pasareanu (NASA/CMU)

Context and Problem  Context  Symbolic execution (SE)  Problem Execution engine foo($x) Solver foo(10) foo(0) foo(int x) { x = x + 1; if (x > 10) { // PC: $x + 1 > 10 } else { // PC: $x + 1 <= 10 } PC: $x + 1 > 10 PC: $x + 1 <= 10

Context and Problem  Context  Symbolic execution (SE)  Problem Execution engine foo($x) Solver foo(?) foo(double x) { x = x + 1; if (x > Math.pow(Math.sin(x),2)){ // PC: $x + 1>($x + 1)^2 } else { // PC: $x + 1<=($x + 1)^2 } PC: $x + 1 > sin($x + 1)^2 PC: $x + 1 <= sin($x + 1)^2

Context and Problem  Context  Symbolic execution (SE)  Problem  Inability to deal with complex constraints! Execution engine foo($x) Solver foo(?) foo(double x) { x = x + 1; if (x > Math.pow(Math.sin(x),2)){ // PC: $x + 1>($x + 1)^2 } else { // PC: $x + 1<=($x + 1)^2 } PC: $x + 1 > sin($x + 1)^2 PC: $x + 1 <= sin($x + 1)^2 constraints are non-linear and use mathematical functions!

Proposal  Use heuristic search to find solutions to path constraints  Path constraint: AND [b1,…, bn]  Fitness function: weighted sum of clause scores  Score measures distance to satisfaction. Range is  Status  Particle Swarm Optimization search performed best  Compared CORAL with CVC3, Choco, and Yices  Two case studies from NASA  Integrated with NASA’s Symbolic PathFinder

Future Projects  Improved Delta Execution for Analysis of Variation  Improved Maintenance of Product Line Models

New Recife ~1.5 million people ~77F (25C) avg. temp. Intl. airport with flights to major cities Old Recife

Informatics Center (CIn) on Federal University of Pernambuco (UFPE)