measuring the effect of tdd new - amazon...

32
© Zühlke 2012 Keith Braithwaite Measuring the Effect of TDD On Design 17. May 2012 Slide 1 of 32

Upload: others

Post on 17-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 2012

Keith Braithwaite

Measuring the Effect of TDDOn Design

17. May 2012Slide 1 of 32

Page 2: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Keith Braithwaite

Principle Consultant with Zuhlke

• Software development

• Agile coaching, training

Formerly:

• Head of Development, WDS Global A-PAC

• Senior Software Developer, Penrillian

Have been developing software “Test Driven” for 12 years+

Slide 2 of 32

Page 3: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 2012

The Effect of TDD?

Some sort of TDD is more and more popular

•What effect does it have?

Academic studies are equivocal:

• Greater or smaller reduction in defect rates (up to 50%)

• Smaller or no impact on schedule/effort (up to 16%)

1 November 2011Keith Braithwaite Slide 3 of 32

Page 4: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 2012

Internal Measures

Studies have tended to look at external factors

•What about internal ones?

1 November 2011Keith Braithwaite Slide 4 of 32

Page 5: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Cyclomatic Complexity

Devised for FORTRAN

• A guide to refactoring (sort of)

• An indicator of effort to test

• Not bad for the early 70’s

Slide 5 of 32

Page 6: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Cyclomatic Complexity: Creature of Structured Programming

a = getStuff();

b = getOther();

if(a > b){

doThis();

} else {

do{

tweak(a);

} while (a < b)

}

wibble();

wobble();

Slide 6 of 32

Page 7: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Cyclomatic Complexity

“The rest of the program”

Slide 7 of 32

Page 8: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Cyclomatic Complexity

1

23

Slide 8 of 32

Page 9: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Cyclomatic Complexity

CC = # {linearly independent route through the code}

∴CC = greatest lower bound on #{test case}

Slide 9 of 32

Page 10: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Why Would You Care?

From http://www.enerjy.com/blog/?m=200802

Note that this is total complexity per file

Slide 10 of 32

Page 11: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 2012Keith BraithwaiteTim Cianchi

Some Methods from Hudson

@SuppressWarnings("unchecked")

public void setValue(T value) {

if (null == getKey()) {

throw new IllegalArgumentException(INVALID_PROPERTY_KEY_EXCEPTION);

}

value = prepareValue(value);

if (!getJob().hasCascadingProject()) {

setOriginalValue(value, false);

} else {

updateOriginalValue(value, getCascadingValue());

}

}

public static <T> T checkNotNull(T reference, Class<T> clazz) {

if (reference == null) {

final String msg = clazz == null ? "Required value" : clazz.getName() + " must not be null.";

throw new NullPointerException(msg);

}

return reference;

}

public void rebuild() {

log.debug("Rebuilding dependency graph");

getHudson().rebuildDependencyGraph();

}

Slide 11 of 32

Page 12: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 2012Keith BraithwaiteTim Cianchi

Average Complexity of Methods in Hudson?

What is your estimate?

Central Tendency Value

�� 1.769

�� 1

mode c 1

Slide 12 of 32

Page 13: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 2012

Distribution of Complexity in Hudson

1 November 2011Keith Braithwaite Slide 13 of 32

Page 14: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

So What?

This kind of distribution is highly suggestive

• A wide range of natural phenomena show a similar one

Slide 14 of 32

Page 15: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 2012Keith BraithwaiteTim Cianchi

Zipf’s Law

frequency of a word ∝1/rank

*word frequency from http://www.eecs.umich.edu/~qstout/586/bncfreq.html

word frequency in English and y = (0.1x)-1

Slide 15 of 32

Page 16: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Log—log

log-log transform of previous data and y = 0.95 - 0.97x

Slide 16 of 32

Page 17: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Language Variation

Fit a linear regression in log—log space

Consider the (magnitude of the) slope of that line

The slope is (somewhat) characteristic of a language

LanguageLanguageLanguageLanguage |Slope||Slope||Slope||Slope|

English 0.974

Russian 0.893

http://www.gelbukh.com/CV/Publications/2001/CICLing-2001-Zipf.htm

Slide 17 of 32

Page 18: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Scale—free Properties

These 1/x distributions have no well—defined mean

• So there is no one wealth/word frequency/whatever that particularly well summarises the data

• No “characteristic length”

• Similar richness of structure at all scales

Slide 18 of 32

Page 19: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Nature is Often Scale—free

One of these is a macro shot of sand on a beach, one an aerial shot of desert dunes. Which is which and how can you tell?

Slide 19 of 32

Page 20: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Nature is Often Scale—free

Camels!

Slide 20 of 32

Page 21: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Programs, Too (kinda)

Scale Free Geometry in in OO-Programs

Potanin, Noble, Frean and Biddle, CACM v. 4 No. 5Slide 21 of 32

Page 22: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

(Properties of) Programs Vary a Lot

Baxter et al have studied a lot of variables over a lot of code, and found a lot of distributions

• some power—law

• many more log—normal or other

http://www.mcs.vuw.ac.nz/~marcus/manuscripts/BaxterShape.pdf

Slide 22 of 32

Page 23: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 2012

Complexity in JUnit

1 November 2011Keith Braithwaite Slide 23 of 32

Page 24: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

So, What Variation is there in Code?

Codebase � KSLOC Tests?

JASML 1.02 5.728

Itext 1.27 90.533

Sunflow 1.32 21.960

Ant 1.42 93.506 T

JFreeChart 1.47 91.175 T

NanoXML 1.51 4.660

Log4J 1.58 15.545 T

Spring 1.64 160.456 T

Hudson 1.77 93.189 T

EasyMock 1.87 4.101 T,D

Syncbuilder 1.97 11.720

jUnit 1.98 6.176 T,D

jBehave Core 2.27 11.049 T,D

jMock 2 2.5 3.869 T,D

Slide 24 of 32

Page 25: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

So, What Variation is there in Code?

Codebase � KSLOC Tests?

JASML 1.02 5.728

Itext 1.27 90.533

Sunflow 1.32 21.960

Ant 1.42 93.506 T

JFreeChart 1.47 91.175 T

NanoXML 1.51 4.660

Log4J 1.58 15.545 T

Spring 1.64 160.456 T

Hudson 1.77 93.189 T

EasyMock 1.87 4.101 T,D

Syncbuilder 1.97 11.720

jUnit 1.98 6.176 T,D

jBehave Core 2.27 11.049 T,D

jMock 2 2.5 3.869 T,D

Slide 25 of 32

Page 26: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Interesting!

It looks very much as if:

• Highest α: TDD

• Higher α: automated tests

• Lower α: no tests

Slide 26 of 32

Page 27: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

And Not Only That…

Folks who’ve played with α find that:

• Code that they are happier with has a steeper slope

• Over time, refactoring that they are happy with makes the distribution steeper

Slide 27 of 32

Page 28: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Interpretation

A steeper distribution suggests a preference for less complex methods

• Although there will still be high(er) complexity methods

Slide 28 of 32

Page 29: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Question

Where does the richness of behaviour come from?

•It must be in the interactions

This implies greater coupling in TDD code

•Which some studies have found

Slide 29 of 32

Page 30: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

How do these distributions occur?

Not sure, but maybe something like this:

• Big tests are harder to write than big methods

• “preferential attachment”

• Followed by extract method/class

Slide 30 of 32

Page 31: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

An On—going Story

http://peripateticaxiom.blogspot.com/search/label/test-first%20complexity

• For the history

http://cumulative-hypotheses.org/tag/complexity/

• For news

Twitter: @keithb_b

Slide 31 of 32

Page 32: Measuring the Effect of TDD new - Amazon S3s3-eu-west-1.amazonaws.com/presentations2012/5_presentation.pdf · Microsoft PowerPoint - Measuring the Effect of TDD_new.pptx Author: kbr

© Zühlke 20127 March 2008Keith Braithwaite

Questions?

Slide 32 of 32