57
First Steps in Testing Analytics: Does Test Code Quality Matter? Andy Zaidman Delft University of Technology Nederlandse Testdag 17 november 2014, Amersfoort

First steps in testing analytics: Does test code quality matter?

Embed Size (px)

DESCRIPTION

Does investing in high quality developer test code really matter? And does it help a team to become more productive?

Citation preview

Page 1: First steps in testing analytics: Does test code quality matter?

First Steps in Testing Analytics: Does Test Code Quality Matter?

Andy ZaidmanDelft University of Technology

Nederlandse Testdag17 november 2014, Amersfoort

Page 2: First steps in testing analytics: Does test code quality matter?

Joint work with Moritz Beller & Georgios Gousios(TU Delft)

Dimitrios Athanasiou, Ariadi Nugroho & Joost Visser(Software Improvement Group)

Page 3: First steps in testing analytics: Does test code quality matter?

Who am I?

Software engineering teacher by day

Testing evangelist

Software engineering researcher by night

Page 4: First steps in testing analytics: Does test code quality matter?

What would you like to know?What analytics?

• ???

Page 5: First steps in testing analytics: Does test code quality matter?
Page 6: First steps in testing analytics: Does test code quality matter?

WHATEVER HAPPENS…

Page 7: First steps in testing analytics: Does test code quality matter?

@azaidman

Page 8: First steps in testing analytics: Does test code quality matter?

TODAY

2 test analytics stories

Page 9: First steps in testing analytics: Does test code quality matter?

STORY 1

Test Code Quality Matters

Page 10: First steps in testing analytics: Does test code quality matter?

Andy teaching

First year programming course @ TU Delft

In week 3 everyone is unit testing

“I don’t have time for testing”

“I don’t like testing, my code is good anyway”

“How much should I test?”

“How good should my test code be?”

Page 11: First steps in testing analytics: Does test code quality matter?

@Test

public void testConstructor() {

assertTrue(true)

}

Solution 1

Page 12: First steps in testing analytics: Does test code quality matter?
Page 13: First steps in testing analytics: Does test code quality matter?

Solution 2

@Test

public void testConstructor() {

House h = new House(“Street”, “9”);

assertEquals(“Street 9”, h.toString());

}

Page 14: First steps in testing analytics: Does test code quality matter?

Solution 3

@Test

public void testConstructor() {

House h = new House(“Street”, “9”);

assertEquals(“Street”, h.getStreet());

assertEquals(9, h.getNumber());

}

Page 15: First steps in testing analytics: Does test code quality matter?

Solution 4

@Testpublic void testConstructorStreet() {

House h = new House(“Street”, “9”);assertEquals(“Street”, h.getStreet());

}

@Testpublic void testConstructorNumber() {

House h = new House(“Street”, “9”);assertEquals(9, h.getNumber());

}

Page 16: First steps in testing analytics: Does test code quality matter?

My first reaction?

Page 17: First steps in testing analytics: Does test code quality matter?

SHOOT FIRST

Page 18: First steps in testing analytics: Does test code quality matter?

BRINGS US

NOWHERE

Page 19: First steps in testing analytics: Does test code quality matter?

Analytics?

Page 20: First steps in testing analytics: Does test code quality matter?

Testing Analytics!

Page 21: First steps in testing analytics: Does test code quality matter?
Page 22: First steps in testing analytics: Does test code quality matter?
Page 23: First steps in testing analytics: Does test code quality matter?
Page 24: First steps in testing analytics: Does test code quality matter?
Page 25: First steps in testing analytics: Does test code quality matter?

Thou shalt not have less than 70% coverage

Page 26: First steps in testing analytics: Does test code quality matter?
Page 27: First steps in testing analytics: Does test code quality matter?

What makes a good

unit test?

What makes a good

integration test?

Page 28: First steps in testing analytics: Does test code quality matter?

What makes a good

developer test?

Page 29: First steps in testing analytics: Does test code quality matter?

What makes a good

developer test?

Complete

Effective

Maintainable

Page 30: First steps in testing analytics: Does test code quality matter?

Complete

• How much of the code is covered by the tests?

• How many of the decision points in the code are tested?

Code coverage

#assertions/cyclomatic complexity

Page 31: First steps in testing analytics: Does test code quality matter?

Effective

• How able is the test code to detect defects?

• How able is the test code to locate the cause?

Assertion density #assertions / LOCtest

Directness unit versus integration testing

Page 32: First steps in testing analytics: Does test code quality matter?

Maintainable

• How maintainable is the system’s test code?

Software Improvement Group quality model

Page 33: First steps in testing analytics: Does test code quality matter?

Test Code Quality Model*

Complete

+ Effective

+ Maintainable

* Calibrated using 86 systems

Page 34: First steps in testing analytics: Does test code quality matter?

SO

WHAT?

Page 35: First steps in testing analytics: Does test code quality matter?
Page 36: First steps in testing analytics: Does test code quality matter?

Bettertests

Easier development

?

Page 37: First steps in testing analytics: Does test code quality matter?

High quality tests do not lead to quicker/easier bug fixing

Why?

The low-hanging fruit is already solved if you have good tests… the difficult bugs remain

Observation 1*

* While studying 75 years of combined development of 18 software systems

Page 38: First steps in testing analytics: Does test code quality matter?

High quality tests do lead to higher productivity

• More issues fixed per month per developer

• More issues fixed per month per KLOC

Why?

Implementing new features does seem to benefit from having a safety net for existing

functionality.

Observation 2

Page 39: First steps in testing analytics: Does test code quality matter?

High quality tests do make your team more productive!

Page 40: First steps in testing analytics: Does test code quality matter?

Action(able)

Page 41: First steps in testing analytics: Does test code quality matter?

The single most important thing for test

code quality

#assertionsMcCabe cyclomatic complexity

≥ 1

Page 42: First steps in testing analytics: Does test code quality matter?

Page 43: First steps in testing analytics: Does test code quality matter?

STORY 2

Testing takes 50% of your time

Page 44: First steps in testing analytics: Does test code quality matter?

Says this guy

• Study from 1975

• Questionable research approach

Page 45: First steps in testing analytics: Does test code quality matter?

Differences?

• Waterfall

• Developer testing

• Programming language

• Tools (e.g. IDE)

Page 46: First steps in testing analytics: Does test code quality matter?

New research

Page 47: First steps in testing analytics: Does test code quality matter?
Page 48: First steps in testing analytics: Does test code quality matter?

+ +

Page 49: First steps in testing analytics: Does test code quality matter?

Recording

1. Time spent on developing production code

2. Time spent on developing test code

3. How frequently are Junit tests executed?

4. How frequently do these test runs fail?

Page 50: First steps in testing analytics: Does test code quality matter?

124 developers participating

Page 51: First steps in testing analytics: Does test code quality matter?
Page 52: First steps in testing analytics: Does test code quality matter?

You might win

Page 53: First steps in testing analytics: Does test code quality matter?

http://testroots.org/testroots_watchdog.html

Page 54: First steps in testing analytics: Does test code quality matter?

Page 55: First steps in testing analytics: Does test code quality matter?

My ultimate dream?

Continuous

background

testing

Page 56: First steps in testing analytics: Does test code quality matter?
Page 57: First steps in testing analytics: Does test code quality matter?

Take home

• Test code quality matters for the productivity of your team

• #assertions/cyclomatic complexity ≥ 1

• Help us out with our research!

[email protected]

http://azaidman.wordpress.com

httpp://www.st.ewi.tudelft.nl/~zaidman

@azaidman