Continuous Testing in Eclipse

Slides:



Advertisements
Similar presentations
Extending Eclipse Kai-Uwe Mätzel IBM OTI Labs Zurich
Advertisements

CACORE TOOLS FEATURES. caCORE SDK Features caCORE Workbench Plugin EA/ArgoUML Plug-in development Integrated support of semantic integration in the plugin.
Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
OVERVIEW TEAM5 SOFTWARE The TEAM5 software manages personnel and test data for personal ESD grounding devices. Test and personnel data may be viewed/reported.
Introduction To Java Objectives For Today â Introduction To Java â The Java Platform & The (JVM) Java Virtual Machine â Core Java (API) Application Programming.
Real-Time Systems Scheduling Tool Developed by Daniel Ghiringhelli Advisor: Professor Jiacun Wang December 19, 2005.
MICROCONTROLLED HOME Keith Jones EKU Deparment of Technology CEN.
1 Introducing Collaboration to Single User Applications A Survey and Analysis of Recent Work by Brian Cornell For Collaborative Systems Fall 2006.
Combining Static and Dynamic Data in Code Visualization David Eng Sable Research Group, McGill University PASTE 2002 Charleston, South Carolina November.
University of Kansas Construction & Integration of Distributed Systems Jerry James Oct. 30, 2000.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Delta Debugging - Demo Presented by: Xia Cheng. Motivation Automation is difficult Automation is difficult fail analysis needs complete understanding.
1 Plug-in Development Environment (PDE) Guide. 2 Introduction to PDE l What is PDE: »a tool designed to help you develop platform plug-ins while working.
1 Software Reuse in Eclipse Kellie-Ann Smith Norgye Yuanyuan Song Xiang Yin Jia Xu.
Red-Green-Refactor! EclipseCon 2008 Kevin P. Taylor, Nicolaus Malnick Test-Driven Development (TDD) for Eclipse RCP.
Java Swing Joon Ho Cho. What is Java Swing? Part of the Java Foundation Classes (JFC) Provides a rich set of GUI components Used to create a Java program.
EclipseME Java Micro Edition The Eclipse Way Craig Setera April 19, 2006.
© 2005 by IBM; made available under the EPL v1.0 | March 1, 2005 Tim deBoer Gorkem Ercan Extend WTP Server Tools for your.
Duke University Program Design & Construction Course Application Development Tools Sherry Shavor
1 22 August 2001 The Security Architecture of the M&M Mobile Agent Framework P. Marques, N. Santos, L. Silva, J. Silva CISUC, University of Coimbra, Portugal.
The Basics of Javadoc Presented By: Wes Toland. Outline  Overview  Background  Environment  Features Javadoc Comment Format Javadoc Program HTML API.
An experimental evaluation of continuous testing during development David Saff 2003 October 1 PAG group meeting.
Adaptive Hypermedia Tutorial System Based on AHA Jing Zhai Dublin City University.
Procrastinator: Pacing Mobile Apps’ Usage of the Network mobisys 2014.
Open Service Gateway Initiative (OSGi) Reporter : 林學灝 侯承育 1.
Spring/2002 Distributed Software Engineering C:\unocourses\4350\slides\DefiningThreads 1 RMI.
HDF and HDF-EOS Workshop VIII, October 26-28, /12 Peter Cao, National Center for Supercomputing Applications This work is supported in part by a.
Jian Gui WANG New Implementation of Agriculture Models APAN19---Jan New Implementations of Agriculture Models Using Mediate Architecture.
CSS – Control System Studio
BOĞAZİÇİ UNIVERSITY DEPARTMENT OF MANAGEMENT INFORMATION SYSTEMS MATLAB AS A DATA MINING ENVIRONMENT.
1. An Introduction A Programming Language A Technology Java Development Kit Java API One Language: Three Editions Standard Edition Enterprise Edition.
Demo of Scalable Pluggable Types Michael Ernst MIT Dagstuhl Seminar “Scalable Program Analysis” April 17, 2008.
Surya Bahadur Kathayat Outline  Ramses  Installing Ramses  Ramses Perspective (Views and Editors)  Importing/Exporting Example.
Software Development Introduction
TOOLS FOR DESIGN AND DEVELOPMENT ENVIRONMENTS. Case study - ECLIPSE Lecture notes 5.
Eclipse Outlines: What is Eclipse? How to Install Eclipse? Eclipse Platform Eclipse Plug in Eclipse UML JUnit in Eclipse. References Latifa AlAbdulkarim.
Bogor-Java Environment for Eclipse MSE Presentation III Yong Peng.
Glink for Java: applet, application and an API for integrating access to Bull, IBM, UNIX and Minitel systems with your Java based e-business applications.
Software tools for digital LLRF system integration at CERN 04/11/2015 LLRF15, Software tools2 Andy Butterworth Tom Levens, Andrey Pashnin, Anthony Rey.
ECLIPSE RICH CLIENT PLATFORM Part 1 Introduction.
Author: Loh Jianxiong Christopher Contributions: Chua Jie Sheng, Li Mengran, Peh Shao Hong, Oo Theong Siang, Tong Chun Kit, Tania Chattopadhyay.
The Holmes Platform and Applications
Automata Editor Tool with GEF and EMF
CST 1101 Problem Solving Using Computers
Bogor-Java Environment for Eclipse
Test Factoring: Focusing test suites on the task at hand
/* LIFE RUNS ON CODE*/ Konstantinos Pantos Microsoft MVP ASP.NET
Obtaining the Required Tools
Google Web Toolkit Tutorial
Introduction to JUnit CS 4501 / 6501 Software Testing
Outline SOAP and Web Services in relation to Distributed Objects
Brian Leonard ブライアン レオナルド
LCGAA nightlies infrastructure
Simulator of an Asynchronous Distributed System
Accessible Formal Methods A Study of the Java Modeling Language
Dynamic Updates for Videogames
C Runtime In Tcl v3 Andreas Kupries ActiveState Software Inc. © 2011
Outline SOAP and Web Services in relation to Distributed Objects
HP C/C++ Remote developer plug-in for Eclipse
My Experience in Building the CoBrA Eclipse Viewer
An experimental evaluation of continuous testing during development
Getting Started ARCS Lab..
Eclipse Database Plug-ins
Evaluating Compuware OptimalJ as an MDA tool
Mock Object Creation for Test Factoring
Objectives In this lesson you will learn about: Need for servlets
Java IDE Dwight Deugo Nesa Matic Portions of the notes for this lecture include excerpts from.
Cross-OS Development Platform Contents Application Common Operating Environment (AppCOE): An eclipse based IDE for development of C/C++ applications.
Code Composer Essentials 3.0
Presentation transcript:

Continuous Testing in Eclipse David Saff, Michael D. Ernst MIT CSAIL eTX 2004, Barcelona, Spain

Continuous testing: inspired by continuous compilation Continuous compilation, as in Eclipse, notifies the developer quickly when a syntactic error is introduced: Continuous testing notifies the developer quickly when a semantic error is introduced: Don’t say “should recognize”

Outline Continuous testing: defined and motivated Eclipse plug-in: Design principles User interface design: demo Software design Next steps

Outline Continuous testing: defined and motivated Eclipse plug-in: Design principles User interface design: demo Software design Next steps

Continuous testing Continuous testing uses excess cycles on a developer's workstation to continuously run regression tests in the background as the developer edits code. developer changes code IDE listens for changes IDE notifies about errors daemon runs tests

Goals of continuous testing No longer forces the developer to decide whether to test and what tests to run. Prevents long-standing regression errors.* Makes developer confident, not annoyed. * Saff, Ernst, ISSRE 2003: Reducing wasted development time via continuous testing

Continuous testing made students more productive Treatment N Completed assignment No tool 11 27% Continuous compilation 10 50% Continuous testing & continuous compilation 18 78% No effect on time worked Assignment was part of the class p < .03 * Saff, Ernst, ISSTA 2004: An experimental evaluation of continuous testing during development

Students appreciated continuous testing I would use continuous testing… Yes …for the rest of the course 94% …for my own programming 80% I would recommend the tool to others 90%

Outline Continuous testing: defined and motivated Eclipse plug-in: Design principles User interface design: demo Software design Next steps

Design principles, 1 of 2 Reuse Future reuse Whenever possible, plug in and reuse Future reuse When reuse is impossible, copy and paste to show where Eclipse could be more flexible Temporary solution of future reuse Design objectives

Design principles, 2 of 2 Consistent experience Minimal distraction Don’t change expected behavior Build on current developer metaphors Minimal distraction Don’t swamp benefits by sapping attention Testability Add testing-specific API’s when necessary

Outline Continuous testing: defined and motivated Eclipse plug-in: Design principles User interface design: demo Software design Next steps

Outline Continuous testing: defined and motivated Eclipse plug-in: Design principles User interface design: demo Software design Next steps

Eclipse auto-building: Static structure Project Builder * * * Java builder RMI builder Source file

Eclipse auto-building: Dynamic behavior Project Builder Auto-build Thread runs * * creates * Java builder RMI builder starts Source file Marker * * Problems view changes updates Delta Build Manager notifies

Eclipse launching: Static structure config Launch config type has classes * Launch project Application JUnit Runtime workbench

Eclipse launching: Dynamic behavior (JUnit) config Launch config type Remote test runner Socket Launch project JUnit Classpath Note that we’ll be copying this structure Launch project updates Test runner client Test runner GUI Launched JVM Eclipse JVM

Continuous Testing Static structure Launch config Launch config type when changes Project has classes Builder * Testing metadata Launch project Continuous testing * Source file Java builder CT builder

Continuous Testing Dynamic behavior Places we had difficulty Continuous Testing Dynamic behavior when changes Testing multiple asynchronous units is hard Testing multiple asynchronous units is hard Project Launch config Launch config type CT test runner Socket Classpath * JUnit runtime structure copied Source file Launch project Testing meta- data Testing meta- data Launch project CT Launched JVM CT runner client CT runner GUI Problem icon selection hacks internal classes * Marker Problems view updates updates creates Eclipse JVM

Suggestions for Eclipse JUnit integration: Display results from multiple simultaneous test runs Allow plug-ins to contribute prioritization Problems view: More flexibility in icons Tools for testing asynchrony It’s hard to create deterministic unit tests

Outline Continuous testing: defined and motivated Eclipse plug-in: Design principles User interface design: demo Software design Next steps

Next steps: split into individual plug-ins Current plug-in Prioritize tests Associate launches with projects Run tests when project changes Create markers based on test failures

Next steps: feature enhancements Extend to Plug-in Development Environment Prioritize based on which methods, classes, etc. changed Use hot-swapping JVM to reduce start-up time Increase resolution: associate suite with package? class? method?

Next steps: test factoring User-supplied test: Factored tests: Method Call Expected Result Method Call Expected Result Expected Result Mock Object Method Call * Saff, Ernst, PASTE 2004: Automatic mock object creation for test factoring

Further reading Model of developer behavior Saff, Ernst, ISSRE 2003: Reducing wasted development time via continuous testing Controlled student experiment Saff, Ernst, ISSTA 2004: An experimental evaluation of continuous testing during development Test factoring Saff, Ernst, PASTE 2004: Automatic mock object creation for test factoring

Conclusion Plug-in is publicly available at http://pag.csail.mit.edu/~saff/continuoustesting.html Many are using and enjoying continuous testing: give it a try! Eclipse was an excellent platform for meeting our design goals. Research and implementation continues