2. This is a story that bears strong resemblance to a real
project. I can’t tell you the details but I can tell you
enough of it to make it useful as a story. I’ll protect the
innocent. Oh
wait,
there
were
no
innocents.
CAN I TELL YOU A STORY?
3. PERFECT
CLIENT
BUILD THE
SOLUTION
DESIGN THE
SOLUTION
RECIEVE THE
REQUIREMENTS
GO THROUGH THE
SECOND ROUND
OF SAME PHASE
NO
YES
TEST & SHOW
THE CLIENT
release
start of iteraPon
THEWAYIT’SSUPPOSEDTOWORK
4. LARGE
CLIENT
BUILD THE
SOLUTION
DESIGN THE
SOLUTION
RECIEVE THE
REQUIREMENTS
YES. WE KNOW
WHO YOU ARE.
OK. WE’RE ON IT.
NO
WAIT! LET’S
ADD NEW
SCOPE
TEST & SHOW
THE CLIENT
WHATHAPPENSWHEN...
5. THE DANGER ZONE
The porPon of a project where all your profit disappears
and you’re wondering how you got here in the first place.
HOPE
ACTUAL
SOW
DEVELOPMENT & QA
DISCOVERY
LAUNCH
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
2014
2015
THE PROJECT TIMELINE TELLS THE STORY
SOW
DEVELOPMENT
DISCOVERY
SOW & CONTRACTS
DEVELOPMENT
DISCOVERY
LAUNCH
PARTNER API IS A WORK IN PROGRESS
DANGER ZONE
6. CLIENTS
ARE IDEA
FACTORIES
You can’t blame a client for having a lot of
new ideas when they can finally interact
with the system they’ve been paying for.
7. DEVELOPERS
GET EASILY
ANCHORED
We o]en get locked in on the original statement
of work -‐ and the tasks we created based on
them. Even if a client has to adjust course.
11. 0% The number of staff we have that have perfect
memory and can do impact analysis in their sleep.
12. IMPACT ANALYSIS
The work that must be done when a client
requests new work (new scope) and it must be
determined what the changes will do (what
impact they’ll have) on exisPng code.
HINT:
IT’S
REALLY
HARD
TO
DO.
13. HOW DO YOU MAKE CHOICES WHEN
YOU WRITE CODE?
Idea
Insight
CODE
CODE
CODE
Talk
Talk
Talk
Choice
Choice
Choice
If you noPce the
performance isn’t
great, maybe you
try a new approach.
Seeing someone
else’s code helps you
think about your own
in a new way.
New informaPon
suggests you
thought about it all
wrong. Which leads
to changes in your
code.
LET ME MAKE A GUESS. YOU DON’T WRITE THIS ALL DOWN. I NEVER DID.
15. THE DANGER ZONE
The place where you break your own code and can’t
charge anyone else because it’s your mistake.
HOPE
ACTUAL
SOW
DEVELOPMENT & QA
DISCOVERY
LAUNCH
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
2014
2015
WE CREATED CHANGE ORDERS FOR NEW WORK...
SOW
DEVELOPMENT
DISCOVERY
SOW & CONTRACTS
DEVELOPMENT
DISCOVERY
LAUNCH
PARTNER API IS A WORK IN PROGRESS
DANGER ZONE
16. Everything, which is done orderly,
with measure and according to
rules, generates something good.
Plato
17. This is another story. It’s what turned me
onto automated
impact
analysis
thru
acceptance tesPng.
CAN I TELL YOU A STORY?
18. The trading engine for
market makers was a
message-‐oriented
soluEon
that was having
performance issues.
No one thought about
gridlock because no
one
thought
about
the
big
picture.
PACIFIC STOCK EXCHANGE
19. HIRE
OLD
PEOPLE
T I N Y L I T T L E P L U G
B E C A U S E T H E Y C A N W R I T E B O O K S F I L L E D W I T H L E S S O N S L E A R N E D
21. ACCEPTANCE TESTS
REPLICATE A USER’S
EXPERIENCE & ARE DRIVEN
BY “EXPECTATION” LOGIC.
THEY REMEMBER ALL THE PREVIOUS
DECISIONS & PROMISES YOU MADE.
22. Title
As a [role]
I want [feature]
So that [benefit]
Acceptance Criteria
Scenario: Title
Given [context]
When [event]
Then [outcome]
hdp://dannorth.net/whats-‐in-‐a-‐story/
23. <?php
$I = new AcceptanceTester($scenario);
$I->am(‘A Subscriber’);
$I->wantTo(‘edit my profile’);
$I->amOnPage(‘/members/edit-profile/’);
$I->canSee(‘Personal Information’);
?>
$ php codecept.phar generate:scenarios
24. I want to edit my profile
I am on page ‘members/edit-profile’
I see ‘Personal Information’
...
This is the expectaPon logic that is easy to remember later. And it’s really
helpful when something breaks. Because we know exactly what we were
trying to do and how to verify that something broke.
26. 1. wget http://codeception.com/codecept.phar
2. php codecept.phar bootstrap
3. php codecept.phar generate:cept acceptance Welcome
4. Edit file tests/acceptance/WelcomeCept.php
5. Write your first acceptance test
6. Put application URL into tests/acceptance.suite.yml
7. php codecept.phar run
GETTING STARTED IS EASY
hdp://codecepPon.com/quickstart
29. 80mph
SPEED
The goal isn’t to write these tests
quickly. Or even to learn quickly which
acceptance tests to write. The goal is
to find places of impact quickly.
30. ConEnuous
effort
– not strength or intelligence –
is the key to unlocking our
potenPal.
Sir
Winston
Churchill
31. Maybe you saw this in the papers, online,
or read about it recently. It sPll bears telling.
ONE LAST STORY...
32. KNIGHT CAPITAL - August 2012
$440
million
$10MM
every minute
45
MINUTES
8
SERVERS
LET ME MAKE A GUESS. YOU DON’T WANT YOUR NAME IN AN SEC FILING.
33. RESOURCES
TO GET YOU STARTED
hdp://codecepPon.com/quickstart
hdp://codecepPon.com/docs/01-‐IntroducPon
hdp://codecepPon.com/docs/02-‐GekngStarted
hdp://codecepPon.com/docs/04-‐AcceptanceTests
hdp://dannorth.net/whats-‐in-‐a-‐story/
hdps://vimeo.com/rzen/codecepPon