Unit testing the prequel

Preview:

DESCRIPTION

 

Citation preview

@gil_zilberfeld

Gil Zilberfeld, Product Manager

Unit Testing – The Prequel

Jan 29th, 2013

@gil_zilberfeld

Prepare

• Know your tools

• Evaluate the risk

• Choose your partner

@gil_zilberfeld

Step 1: What to test

• What to test:• What you’re

working on• Bug or feature?• Logic

• What not to test:• Multithreading• Stored procedures• UI

@gil_zilberfeld

Step 2: Get ready

• Pick organization strategy• Create test projects• Remove fluff• VS I’m looking at you

@gil_zilberfeld

Step 3: Pick a scenario

• Scenario:• Context• Action• Success criteria

• Pick the simplest one

• Say it!• Name it!• Assert it!

@gil_zilberfeld

@gil_zilberfeld

How code looks

@gil_zilberfeld

@gil_zilberfeld

Simple pathtest

@gil_zilberfeld

@gil_zilberfeld

“Happy path”test

@gil_zilberfeld

Step 3: Pick a scenario

• Scenario:• Context• Logic• Success criteria

• Pick the simplest one

• Say it!• Name it!• Assert it!

@gil_zilberfeld

Step 4: Identify dependencies

• Read the code• Constructor

parameters• Fields• Statics• Global state

• Mocking strategy• None (Integration)• Hand-rolled• Interface based• Anything goes

@gil_zilberfeld

@gil_zilberfeld

Let’s play:Where are the dependencies?

@gil_zilberfeld

Step 5: Simplify design

• Automatic refactoring• Close down regions you’re not going to cover• Rename fields• Extract methods

• Manual refactoring works too• …but more risky

@gil_zilberfeld

Step 6: Here we go!

• ArrangeRun

Fail• Arrange

RunFail…..

• Success!

@gil_zilberfeld

Step 7: Next!

• Pick the next scenario

• Say it• Name it• Assert it

• Mutate the test setup

• ArrangeRun

Fail…

• Win!

@gil_zilberfeld

Congratulations!

• This is just the beginning• Lifetime improvement• Picking scenarios• Naming• Mocking• Refactoring• … and much more!

@gil_zilberfeld

www.typemock.com

typemock.com/blog

@typemock

www.gilzilberfeld.com

gilz@typemock.com

@gil_zilberfeld

Questions?