Coverage with Jacoco and Sonarqube

In most projects I have worked in, Jacoco was used as tool to determine code coverage. The configuration is fairly easy as it plugs into the JVM that runs the tests using an agent that tracks the invocations. In maven, this JVM is forked by the surefire plugin and the parameters are auto generated. The setup is well documented so in this blog post I want to shed some lights on the internals of Jacoco and Sonarqube and how both calculate their coverage metrics. I did some code digging, and I’d like to share my insights. The following information is a compilation of what I found out.

This article is inspired by this question on StackOverflow, which is basically about how Sonarqube and Jacoco calculate coverage.

Continue reading

Integration Testing of Microservices, Part 1

Integration Testing is the second-most important phase in Continuous Integration and Delivery. It’s the first time, multiple components interact with each other. The current trend towards microservice software-architectures require a new thinking regarding integration testing of distributed systems. In this article I want to reflect on the challenges for testing those architectures. In monolithic applications, components or parts are tightly bundled. Incompatibilities can often be detected already during compilation. Components interact with each other through messages that are transmitted locally, i.

Continue reading

Multi-Module Integration Test Coverage with Jacoco and Sonar

In this article I describe how to setup jacoco for Maven multi-module projects so that integration test coverage can be calculated for the entire code base and analyzed using Sonarqube.

Continue reading

Mutation Testing

End of January I attended the OOP2015 conference in Munich. Among the load of interesting sessions was one that left a mark. It was the workshop conducted by Filip van Laenen and Markus Schirp about Mutation Testing (slides here), which I’d like to summarize in this post.

Continue reading

Mutation Testing 101

Mutation Testing is the technique to assess the effectiveness of your Unit test suite. Roughly 3/4 of all potential bugs can be covered and found by unit tests, making it the most important element of your test strategy.

In our 1-day Mutation Testing Bootcamp training you will learn the theoretical basics behind Mutation Testing, learn about practical use cases as well as pitfalls. You’ll learn how to correctly interpret classic quality metrics, mutation analysis metrics and how they relate to each other.

Continue reading

Performance Testing with Gatling

Performance testing is more important than ever in today’s demanding IT world. Regardless of whether you want to get the maximum performance from your resources in order to reduce your operating costs or test your software architecture in terms of scalability for fitness in the future - Performance Testing helps you to do this in a targeted and efficient manner.

In our 1-day performance testing basic training, you will learn the fundamentals of performance testing, and how to apply them using the open source tool Gatling.. Using practical examples, you will learn how to plan, implement, implement and evaluate performance tests.

Continue reading

Sonarqube: Mutation Analysis Plugin

The Mutation Analysis Plugin provides metrics and issue management for mutation test results produced by Pitest Mutation Testing. Mutation testing helps you discover gaps in and assess the quality and effectiveness of your automated Unit Test Suites.

Continue reading

Testing Services

Waterfall, Agile Methods or Ad-Hoc, no development approach can be sensibly exercised without any form of testing. Although the shift to agile methods lead to the impression that only “developers” are needed — which most people erroneously interpret as “programmers-only” — the discipline and skills for testings are still essential to software development. Don’t make the same mistakes as others and take control of your quality assurance. With our help you’ll find the right balance between automated and exploratory testing, find the ingredients to a well shaped test pyramid and align non-functional testing with your business goals.

Continue reading