Slide 1

Slide 1 text

Not Breaking Stuff

Slide 2

Slide 2 text

The Situation ■ The system you're building is huge. ■ Lots of parts, some dependent on each-other. ■ Change one thing, another thing breaks, BUT YOU DON'T KNOW IT. ■ End up in a constant treadmill of bug-fixing, testing, bug-fixing... until you reach the finish line, battered and bruised.

Slide 3

Slide 3 text

Well, That Doesn't Sound Fun. ■ It really isn't.

Slide 4

Slide 4 text

The Feedback Loop ■ Every time you change something, you need to check everything. ■ Checking everything takes a long time, thus a long time before you get an ”all-clear” on your changes. ■ Therefore your feedback loop is huge.

Slide 5

Slide 5 text

The Feedback Loop ■ So automate the checking, and reduce the feedback loop to seconds instead of days. ■ The more you automate it; clicking links, typing values (etc) is the slow way. ■ Aim for way to run the tests with a single click. ■ More work upfront setting it up, but it pays off the larger the system gets.

Slide 6

Slide 6 text

Testing Approaches ■ Build the tests as (or just before) writing the system code. ■ Grafting it on afterwards as a check before larger changes (eg. refactoring).

Slide 7

Slide 7 text

Testing As You Go

Slide 8

Slide 8 text

Augmenting An Existing System

Slide 9

Slide 9 text

Demo Time ■ http://demo.robhoward.id.au/deepend/testing/asyougo/ (I'll chuck it up on the blog when we're done here.)