platform support for developing analysis and testing plugins

20
Platform Support for Developing Analysis and Testing Plugins Shauvik Roy Choudhary with Jeremy Duvall, Wei Jin, Dan Zhao, Alessandro Orso School of Computer Science – College of Computing Georgia Institute of Tech nology

Upload: holly-gilbert

Post on 02-Jan-2016

21 views

Category:

Documents


0 download

DESCRIPTION

Platform Support for Developing Analysis and Testing Plugins. Shauvik Roy Choudhary with Jeremy Duvall, Wei Jin, Dan Zhao, Alessandro Orso School of Computer Science – College of Computing Georgia Institute of Tech nology. Development Environment. IDE features. IDE. Plug-in. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Platform Support  for Developing  Analysis and Testing Plugins

Platform Support for Developing

Analysis and Testing Plugins

Shauvik Roy Choudharywith

Jeremy Duvall, Wei Jin, Dan Zhao, Alessandro Orso

School of Computer Science – College of Computing

Georgia Institute of Technology

Page 2: Platform Support  for Developing  Analysis and Testing Plugins

Development Environment

Page 3: Platform Support  for Developing  Analysis and Testing Plugins

IDE features

Source CodeEditor

RuntimeBuilders

SCM

Debugger

Views

Testing

IDE

… … …

Plug-in

Plug-in

Plug-in

Note: Plug-ins are called as Add-ins in Visual Studio

Page 4: Platform Support  for Developing  Analysis and Testing Plugins

IDE features

Source CodeEditor

RuntimeBuilders

SCM

Debugger

Views

Testing

IDE

… … …

Plug-in

Plug-in

Plug-in

Note: Plug-ins are called as Add-ins in Visual Studio

Focus of this talk:IDE Features for developing plug-ins that

support“Program Analysis and Software

Testing”Case Study: BERT

(BEhavioral Regression Testing)[WODA’08][ICST’10][FSE-demo’10]

Page 5: Platform Support  for Developing  Analysis and Testing Plugins

Regression TestingProcess and Issues

?

Page 6: Platform Support  for Developing  Analysis and Testing Plugins

Regression Testing Process and Issues

Page 7: Platform Support  for Developing  Analysis and Testing Plugins

Existing test suites typically target a small subset of the program behavior

Tests focus on core functionality

Oracles often approximated

Traditional Regression

Testing

Page 8: Platform Support  for Developing  Analysis and Testing Plugins

Traditional Regression

Testing

BERT

Page 9: Platform Support  for Developing  Analysis and Testing Plugins

Phase I: Generation of test cases for changed code

BERT

Page 10: Platform Support  for Developing  Analysis and Testing Plugins

BERT

Phase II: Behavioral comparison

Page 11: Platform Support  for Developing  Analysis and Testing Plugins

BERT

Phase III: Differential behavior analysis and reporting

Page 12: Platform Support  for Developing  Analysis and Testing Plugins

BERTTraditional Regression

Testing

Page 13: Platform Support  for Developing  Analysis and Testing Plugins

Our Experience

Programming language Java C#

Intercepting save and build events ✔ ✔

Triggering and checking build process ✔ ✔

Computing program differences ✔ ✖ (custom)

Generating test cases ✔ (Randoop, JPF) ✔ (PEX, Randoop.NET)

Instrumenting code ✔ (Javassist) ✔ (CCI)

Running test cases and code ✔ ✔

Visualizing information for user ✔ ✔

Page 14: Platform Support  for Developing  Analysis and Testing Plugins

IDE Support for Program Analysis and Testing Plug-ins

Dynamic InformationProject Artifacts and Events

Static Information

Plug-in Development Support

Graphical Features

Page 15: Platform Support  for Developing  Analysis and Testing Plugins

1. Project Artifacts and Events

Page 16: Platform Support  for Developing  Analysis and Testing Plugins

2. Static Information

Intermediate representations

Program differencing

Instrumentation

Build parameters

AST

Page 17: Platform Support  for Developing  Analysis and Testing Plugins

3. Dynamic Information

Test Execution

Runtime Metrics

Debugging information

RunTest

Page 18: Platform Support  for Developing  Analysis and Testing Plugins

4. Graphical Features

Provide GUI hooks to access plug-in functionality

Obtain user input or tool preferences

Present data to user and allow them to interact with it

Page 19: Platform Support  for Developing  Analysis and Testing Plugins

5. Plug-in Development Support

DevelopmentAPI Documentation

Sample Code and Informal Documentation

Testing, Debugging, and MaintenanceLaunch and monitor IDE instance

Page 20: Platform Support  for Developing  Analysis and Testing Plugins

Summary