Aslak Hellesøy
aslak@cucumber.io
Programmer since 1998
Open Source since 1999
Agile since 2000
BDD since 2003
Created Cucumber in 2008
Cucumber Book in 2010
Co-founded Cucumber Ltd in 2013
Professional services (Training)
Professional tooling (Cucumber Pro)
Cucumber maintenance
Slide 3
Slide 3 text
the zone
https://www.flickr.com/photos/w4nd3rl0st/12491208355
Slide 4
Slide 4 text
Immediate feedback
Feeling that you have the
potential to succeed
Feeling so engrossed in
the experience, that other
needs become negligible
Slide 5
Slide 5 text
Intense concentration
Merging of action and awareness
Loss of reflective self-
consciousness
Sense of personal control or agency
Distortion of temporal experience
Autotelic experience
Slide 6
Slide 6 text
3 time limits to
keep in mind
when optimising
application
performance
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
https://martinfowler.com/bliki/TestPyramid.html
“Testing through the UI
like this is slow,
increasing build times”
“Tests that run end-to-
end through the UI are:
- brittle
- expensive to write
- time consuming to run”
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
10s
Slide 19
Slide 19 text
1s
Slide 20
Slide 20 text
100ms
Slide 21
Slide 21 text
10ms
Slide 22
Slide 22 text
1ms
Slide 23
Slide 23 text
1ms
1ms
Slide 24
Slide 24 text
Integration confidence Functionality confidence
Slow Fast
Few Many
10s
1s
100ms
10ms
1ms
1ms
Slide 25
Slide 25 text
Scenario: Breaker joins Maker's 5 letter game
Given Molly has started a game with the secret "steak"
When Benny joins Molly's game
Then Benny must guess a word with 5 letters
Slide 26
Slide 26 text
No content
Slide 27
Slide 27 text
Domain-specific
Commands
Domain-specific
Test Views
Assertions
on Test Views
getGuessList() => [
{ word: “steak”},
{ word: “stake”}
]
guess({ word: “steak”})