Software Engineering and Architecture Test-Driven Development What - - PowerPoint PPT Presentation

software engineering and architecture
SMART_READER_LITE
LIVE PREVIEW

Software Engineering and Architecture Test-Driven Development What - - PowerPoint PPT Presentation

Software Engineering and Architecture Test-Driven Development What is it? Test-Driven Development It is a systematic programming technique Focus on Continued Speed Reliability It is not a testing technique, despite the


slide-1
SLIDE 1

Software Engineering and Architecture

Test-Driven Development

slide-2
SLIDE 2

What is it?

  • Test-Driven Development
  • It is a systematic programming technique

– Focus on

  • Continued Speed
  • Reliability
  • It is not a testing technique, despite the name

– Tests are means, not an end in itself – But they are sooo nice to have afterwards…

CS@AU Henrik Bærbak Christensen 2

slide-3
SLIDE 3

Systematic Programming

  • TDD replaces tacit knowledge with a formulated process

– The mantra

  • Clean code that works

– The values

  • The four values that abstractly define what we want

– The rhythm

  • The five steps in each highly focused and fast-paced iteration.

– Testing principles

  • The testing principles that defines a term for a specific action to

make in each step

  • Form: Name - Problem – Solution

Henrik Bærbak Christensen 3 CS@AU

slide-4
SLIDE 4

The Mantra

– To ensure that our software is reliable all the time

  • “Clean code that works”

– To ensure fast development progress – To ensure that we dare restructure our software and its architecture

  • “Clean code that works”
  • Clean = understandable and changeable

Henrik Bærbak Christensen 4

Clean code that works

CS@AU

slide-5
SLIDE 5

The Values

  • Keep focus

– Make one thing only, at a time! – Often

  • Fixing this, requires fixing that, hey this could be smarter, fixing it,
  • hh – I could move that to a library, hum hum, …
  • Take small steps

– Taking small steps allow you to backtrack easily when the ground becomes slippery – Often

  • I can do it by introducing these two classes, hum hum, no no, I need

a third, wait…

Henrik Bærbak Christensen 5 CS@AU

slide-6
SLIDE 6

The Values

  • Speed

– You are what you do! Deliver every 14 days!!! – Often

  • After two years, half the system is delivered, but works quite in

another way than the user anticipate/wants…

– Speed, not by being sloppy but by making less functionality of superior quality!

  • Simplicity

– Maximize the amount of work not done! – Often

  • I can make a wonderful recursive solution parameterized for

situations X, Y and Z (that will never ever occur in practice)

Henrik Bærbak Christensen 6 CS@AU

slide-7
SLIDE 7

The Iteration Skeleton

  • Each TDD iteration follows the Rhythm
  • (6. All tests pass again after refactoring!)

Henrik Bærbak Christensen 7 CS@AU

slide-8
SLIDE 8

The Rhythm: Red-Green-Refactor

  • The Rhythm

Works part Clean part

Introduce test

  • f delta-feature

Implement delta-feature that does not break any existing code Improve code quality

Time

CS@AU Henrik Bærbak Christensen 8

slide-9
SLIDE 9

The Three Starter Principles

CS@AU Henrik Bærbak Christensen 9

slide-10
SLIDE 10

Enough…

Learning by Doing…

slide-11
SLIDE 11

You are all employed today

  • Welcome to PayStation Ltd.
  • We will develop the main software to run pay stations.
  • [Demo]

Henrik Bærbak Christensen 11

slide-12
SLIDE 12

Case: Pay Station

  • Welcome to PayStation Ltd.
  • Customer: AlphaTown
  • Requirements

– accept coins for payment

  • 5, 10, 25 cents

– show time bought on display – print parking time receipts – US: 2 minutes cost 5 cent – handle buy and cancel

Henrik Bærbak Christensen 12

slide-13
SLIDE 13

Stories

Henrik Bærbak Christensen 13

slide-14
SLIDE 14

Design: Static View

Henrik Bærbak Christensen 14

  • For our purpose the design is given…

– Central interface PayStation

slide-15
SLIDE 15

My Testlist

  • From the book

CS@AU Henrik Bærbak Christensen 15

slide-16
SLIDE 16

And on…

CS@AU Henrik Bærbak Christensen 16

slide-17
SLIDE 17

Central Principles Overview

slide-18
SLIDE 18

Refactoring

  • Fix your broken windows

– Clean up now or your code will deteriorate quickly!

CS@AU Henrik Bærbak Christensen 18

slide-19
SLIDE 19

CS@AU Henrik Bærbak Christensen 19

slide-20
SLIDE 20

CS@AU Henrik Bærbak Christensen 20

slide-21
SLIDE 21

CS@AU Henrik Bærbak Christensen 21

slide-22
SLIDE 22

Outlook

Tests as Specifications

slide-23
SLIDE 23

Insight

  • An early insight was that the tests are actually a

specification of the requested behaviour

– Aka a requirements specification!

  • What if costumers could write them themselves !?!?
  • Gave rise to much experimentation

– Behaviour-Driven development

CS@AU Henrik Bærbak Christensen 23

Gherkin notation

slide-24
SLIDE 24

Spock

  • A lot of frameworks were developed

– Many are... Well... IMO somewhat cumbersome to use

  • Spock I find is pretty easy to get going, though

– Only problem, you code in groovy, not Java...

CS@AU Henrik Bærbak Christensen 24