Slide 1

Slide 1 text

Unit Testing 101 Wednesday, October 12, 11

Slide 2

Slide 2 text

Jim Holmes @aJimHolmes [email protected] http:/ /blogs.telerik.com/ JimHolmes Wednesday, October 12, 11

Slide 3

Slide 3 text

Types of Automated Testing Wednesday, October 12, 11

Slide 4

Slide 4 text

Functional: Complete slice of functionality, generally at UI V E R Y S L O W Wednesday, October 12, 11

Slide 5

Slide 5 text

Integration: Testing across components or layers (web services, eg) Generally slow (ish) Wednesday, October 12, 11

Slide 6

Slide 6 text

Unit Testing: Small isolated portions of code. No dependencies -- VERY fast Wednesday, October 12, 11

Slide 7

Slide 7 text

Testing Methodologies Wednesday, October 12, 11

Slide 8

Slide 8 text

Test Occasionally Write tests (maybe) for easy stuff, or to cover a bug. Occasionally, like. Wednesday, October 12, 11

Slide 9

Slide 9 text

Test After Dev Write your system, then write some tests. Emphasis on “some” because it tends to get blown off... Wednesday, October 12, 11

Slide 10

Slide 10 text

Test Driven Development Write tests first, then write code to make tests pass Wednesday, October 12, 11

Slide 11

Slide 11 text

Behavior Driven Development Like TDD, but sounds cooler Wednesday, October 12, 11

Slide 12

Slide 12 text

OK, BDD seriously “TDD helps you write software correctly, BDD helps you write the correct software.” --Aslak Hellesoy Focuses on how system should behave -- interactions & outcomes, not just inputs/outputs Wednesday, October 12, 11

Slide 13

Slide 13 text

Why Test? Wednesday, October 12, 11

Slide 14

Slide 14 text

Prove you’ve fixed the bug Wednesday, October 12, 11

Slide 15

Slide 15 text

Tripwire against regressions Wednesday, October 12, 11

Slide 16

Slide 16 text

Prove your acceptance criteria are met Wednesday, October 12, 11

Slide 17

Slide 17 text

Lower risk Wednesday, October 12, 11

Slide 18

Slide 18 text

Automate testing so you can focus your brain on VALUE Wednesday, October 12, 11

Slide 19

Slide 19 text

It takes time.... Wednesday, October 12, 11

Slide 20

Slide 20 text

Cons of Testing Wednesday, October 12, 11

Slide 21

Slide 21 text

Design impacts Wednesday, October 12, 11

Slide 22

Slide 22 text

Brittle, bad tests are a time sink (and morale, too) Wednesday, October 12, 11

Slide 23

Slide 23 text

New skills needed ooooh, that’s scary Wednesday, October 12, 11

Slide 24

Slide 24 text

Pros of Testing Wednesday, October 12, 11

Slide 25

Slide 25 text

Safety net Wednesday, October 12, 11

Slide 26

Slide 26 text

Tests == Documentation (sort of) Wednesday, October 12, 11

Slide 27

Slide 27 text

Quality (Duh) Wednesday, October 12, 11

Slide 28

Slide 28 text

Flexibility & Speed I can change with confidence (or at least less fear) Wednesday, October 12, 11

Slide 29

Slide 29 text

What’s a Good Unit Test? Wednesday, October 12, 11

Slide 30

Slide 30 text

Granular Check one thing, and one thing only! (Mostly) Wednesday, October 12, 11

Slide 31

Slide 31 text

No Dependencies Dependencies external to the test get mocked Wednesday, October 12, 11

Slide 32

Slide 32 text

Readable Tests are system knowledge. Make sure they’re understandable! Wednesday, October 12, 11

Slide 33

Slide 33 text

FAST! Slow unit tests indicate mixed concerns, too much responsibility, dependencies Wednesday, October 12, 11

Slide 34

Slide 34 text

CORRECT! Bad tests kill kittens Wednesday, October 12, 11

Slide 35

Slide 35 text

ENOUGH TALK! LET’S CODE! Wednesday, October 12, 11

Slide 36

Slide 36 text

The Tools Test Frameworks MbUnit (Gallieo) www.Gallieo.org Nunit www.NUnit.org Mocking Frameworks Rhino Mocks http://is.gd/bCCk9 Moq http://is.gd/bCCim NMock http://nmock.org Telerik’s JustMock http://is.gd/bCCbq Wednesday, October 12, 11

Slide 37

Slide 37 text

Books Roy Osherove's Art of Unit Testing Bob Martin's Agile Patterns & Principles in C# Hunt & Thomas's Pragmatic Unit Testing (C#/.NET) Wednesday, October 12, 11

Slide 38

Slide 38 text

Jim Holmes @aJimHolmes [email protected] http:/ /blogs.telerik.com/ JimHolmes Wednesday, October 12, 11