The Future of Code Coverage for Eclipse

Similar documents
Java Code Coverage Mechanics. by Evgeny Mandrikov at EclipseCon Europe 2017

Java Code Coverage Mechanics Evgeny Mandrikov Marc Hoffmann #JokerConf 2017, Saint-Petersburg

Java Code Coverage Mechanics

Implement detection of duplicate test coverage for Java applications

The Dark Sides of Integration. Anton Arhipov JRebel,

Are You Covered? Keith D Gregory Philly JUG 14 October 2009

An Integrated Approach to Managing Windchill Customizations. Todd Baltes Lead PLM Technical Architect SRAM

InsectJ: A Generic Instrumentation Framework for Collecting Dynamic Information within Eclipse

Deriving Code Coverage Information from Profiling Data Recorded for a Trace-based Just-in-time Compiler

Introduction to Eclipse

Platforms (Operating Systems)

Utilizing Fast Testing to Transform Java Development into an Agile, Quick Release, Low Risk Process

API Tooling in the Eclipse SDK

Introduction: Manual Testing :

EMF Compare Galileo Simultaneous Release

InsECTJ: A Generic Instrumentation Framework for Collecting Dynamic Information within Eclipse

Introduction to Eclipse

Introduction to Java

Eclipse Day at GooglePlex 2009 Joep Rottinghuis Productivity Tools Architect, ebay Inc. August 27, 2009

Spring and OSGi. Martin Lippert akquinet agile GmbH Bernd Kolb Gerd Wütherich

The Art of Metaprogramming in Java. Falguni Vyas Dec 08, 2012

Bytecode Manipulation with a Java Agent and Byte Buddy. Koichi Sakata PONOS Corporation

Index. Bitwise operations, 131. Cloud, 88, 101

Building XML-based content for Eclipse Help: a real experience. Christian Kurzke Gustavo de Paula Daniel Moura

Index. Symbols. /**, symbol, 73 >> symbol, 21

Create your own Carbon Component. Sameera Jayasoma Technical Lead and Product Manager of WSO2 Carbon

EMF Compare Ganymede Simultaneous Release

Developing Android applications in Windows

OSGi. Building and Managing Pluggable Applications

The Power of Unit Testing and it s impact on your business. Ashish Kumar Vice President, Engineering

designed to enable you to create a foundation for your own plugin project.

Breaking Apart the Monolith with Modularity and Microservices CON3127

Technical Debt in Eclipse Development. Eclipse Con France 2018

CSE 4/521 Introduction to Operating Systems

An Evaluation of Test Coverage Tools in Software Testing

Junit Overview. By Ana I. Duncan

Second assignment came out Monday evening. Find defects in Hnefetafl rules written by your classmates. Topic: Code Inspection and Testing

Java For Loop Tutorial Pdf Netbeans 7.2

EMF Europa Simultaneous Release

Scripting Languages in OSGi. Thursday, November 8, 12

Java Architectures A New Hope. Eberhard Wolff

TO AND BEYOND... MAKING JUBULA SURPASS ITS LIMITS. - BREDEX GmbH

Equinox Project 3.6 Release Review

Quick tour of the Test and Performance Tools Platform (TPTP) Valentina Popescu IBM Tivoli TPTP AG Lead

Living in the Matrix with Bytecode Manipulation

TestingofScout Application. Ludwigsburg,

Index. BigBadGuiTools (BBGT), 186 Business logic and data layer, 32 Business requirements

Continuous Integration & Code Quality MINDS-ON NUNO 11 APRIL 2017

Patterns and Best Practices for dynamic OSGi Applications

Testing with Soap UI. Tomaš Maconko

Mission Possible - Near zero overhead profiling. Klara Ward Principal Software Developer Java Mission Control team, Oracle February 6, 2018

JBoss Users & Developers Conference. Boston:2010

Supported Operating Environment. Java Support

In order to support developers, there needs to be a number of tools available which may be involved in the ultimate solution.

The Eclipse Rich Client Platform

For detailed technical instructions refer to the documentation provided inside the SDK and updated samples.

10 ways to reduce your tax bill. Amit Nithianandan Senior Search Engineer Zvents Inc.

Srikanth Sankaran IBM India. Stephan Herrmann GK Software. Noopur Gupta. IBM India. EclipseCon NA 2014 JDT Embraces Lambda Expressions

Some Virgo Repositories. steve powell -

Section 4: Graphs and Testing. Slides by Erin Peach and Nick Carney

Rationalizing Android Development. Philipp Kumar

Tattletale. What is Tattletale? Enterprise archives JBoss Application Server 7 Putting it all together Roadmap

CHAPTER 1INTRODUCTION... 3 CHAPTER 2INSTALLING ECLIPSE...

Eclipse Tool Chain for Smart Development of High-Tech / Low Cost Embedded Systems

Eclipse Communications Framework

Adobe Experience Manager

Java Training For Six Weeks

Eclipse project update by the Eclipse project PMC March 11 th 2008

Eclipse Scout. Release Notes. Scout Team. Version 7.0

HPE Security Fortify Plugins for Eclipse

[ANALYSIS ASSIGNMENT 10]

Getting Started with Eclipse/Java

This tutorial explains how you can use Gradle as a build automation tool for Java as well as Groovy projects.

Regular Forum of Lreis. Speechmaker: Gao Ang

Mind Q Systems Private Limited

1.2. Name(s) and address of Document Author(s)/Supplier: Sahoo: 1.3. Date of This Document: 12 July 2008

JVM Survival Guide. Hadi Hariri

Well-defined coverage metrics for the glass box test

Google Plugin for Eclipse

Semantic Web T LS Update

Runtime Application Self-Protection (RASP) Performance Metrics

The Architecture of a UML Virtual Machine

One suite that suits them all

1 Introduction. 2 Motivation PROJECT INITIUM AND THE MINIMAL CONFIGURATION PROBLEM. Douglas A. Lyon. Fairfield University, Fairfield, USA

For detailed technical instructions refer to the documentation provided inside the SDK and updated samples.

Dynamic Class Loading

Selenium Testing Course Content

Unit Testing and JUnit

Content. Development Tools 2(57)

Hello Maven. TestNG, Eclipse, IntelliJ IDEA. Óbuda University, Java Enterprise Edition John von Neumann Faculty of Informatics Lab 2.

Hello Gradle. TestNG, Eclipse, IntelliJ IDEA. Óbuda University, Java Enterprise Edition John von Neumann Faculty of Informatics Lab 2.

Acceleo Galileo Simultaneous Release

Sahi. Cost effective Web Automation

Peers Techno log ies Pv t. L td. Core Java & Core Java &Adv Adv Java Java

Getting the Most from Eclipse

3 Continuous Integration 3. Automated system finding bugs is better than people

The Eclipse Rich Ajax Platform

Project Loom Ron Pressler, Alan Bateman June 2018

ANALYZING THE MOST COMMON PERFORMANCE AND MEMORY PROBLEMS IN JAVA. 18 October 2017

Principles of Software Construction: Objects, Design, and Concurrency (Part 2: Designing (Sub )Systems)

Transcription:

Marc R. Hoffmann EclipseCon 2010 2010-03-25 2010 by Marc R. Hoffmann made available under the EPL v1.0 2010-03-25

Outline Code Coverage EclEmma EMMA JaCoCo Sorry, no robots

Code Coverage Legacy Code is simply code without tests. Michael Feathers: Working Effectively with Legacy Code

EclEmma Code Coverage for Eclipse

Monthly EclEmma Downloads 10,000 1.4 8,000 6,000 4,000 2,000 1.0 1.1 1.2 1.3 2007 2008 2009 2010 EclEmma EMMA

Current Status of EMMA Great Tool! Last Release 2.0.5312, 2005-06-13 Project Activity Latest Commit 2006-02-23

Action Required! Making EMMA alive? Using a different Library? Starting a new Project?

Requirements for a Code Coverage Library Be a Library! Open for Different Usage Scenarios Designed for Integration Regression Tests Framework Independent Scalable for Large Projects Fast Enough for Agile Teams

The JaCoCo Project Java Code Coverage Started Mid of 2009 Beta Releases Sinces End of 2009 EPL Hosted within EclEmma (SourceForge) Team www.eclemma.org/jacoco Marc R. Hoffmann (GER) Brock Janiczak (AUS) Christoph Beck (GER) Radek Liba (GER)

JaCoCo Demo

Coverage Analysis Actual *.exec Coverage Analysis Target *.class

JaCoCo Ant Tasks: Coverage

JaCoCo Ant Tasks: Report

JaCoCo Ant Tasks: Report

Report Sorting Project A Project B 80% 35% Sort Items by absolut amount of missed code.

JaCoCo in Eclipse

JaCoCo on JDT Test Suite Credits: Olivier Thomann

Implementation Details

Architecture Overview Set of OSGi Bundles agent ant core ASM report Ant

Java Agent java.lang.instrument In-Memory No class file preprocessing byte[] transform(classloader loader, String classname, Class<?> classbeingredefined, ProtectionDomain protectiondomain, byte[] classfilebuffer) throws IllegalClassFormatException

Keep the Good Ideas of EMMA Byte Code Instrumentation JRE and Platform Independent Basic Block Coverage Good Tradeoff between Datails and Overhead Using boolean[] Arrays for Probe Storage Concurrency Possible Sharing the Instance

Basic Block Coverage ALOAD probearray ICONST probeid ICONST_1 BASTORE

Class Identity Issues Multiple Versions of the Same Class in one VM Modified Classes over Time Use CRC64 Hash Fits into Java long

Avoid Coverage Runtime Dependency Avoid Class Loading Issues Use JRE APIs only! Object access =... // Retrieve instance Object[] args = new Object[3]; args[0] = Long.valueOf(0x89f47a04b2881d38); // class id args[1] = "com/example/myclass"; // class name args[2] = Integer.valueOf(24); // probe count access.equals(args); boolean[] probes = (boolean[]) args[0];

How to Share an Object Instance? The Challenge: Share a given object instance by using JDK APIs only. Current Solutions: Object as System Property Install Custom Handler with Java Logging Instrumented JRE Class

Runtime Isolation Eating one s own dog food: Run JaCoCo on JaCoCo? Java Agent becomes part of the application classpath Rename classes in jacocoagent.jar during build

Runtime Isolation

JaCoCo Implementation Maxims Test First Keep it simple and fast Release Often and Consistent Every Work Item released as Trunk Build

JaCoCo Status Statement Coverage HTML, XML, CSV Reports Ant Tasks Documentation APIs not frozen yet!

Future Plans Branch Coverage Filters Eclipse Plugin Maven Integration

Get Involved Download the Latest Build at http://www.eclemma.org/jacoco Integrate it With Your Build Whatever Tool Get in Touch for Feature Requests Bug Reports Contributions

Short-Term Plans San Francisco Area until Saturday Get in Touch hoffmann@mountainminds.com Questions? Thank You!