alexander voronov test driven development in real world
Post on 22-Jan-2018
219 Views
Preview:
TRANSCRIPT
@aleks_voronov
TDD in Real WorldALEXANDER VORONOV
@aleks_voronov
@aleks_voronov
WHAT IS NATURAL?
@aleks_voronov
SURVIVAL OF THE FITTEST
@aleks_voronov
MANUAL TESTING
@aleks_voronov
OH YOU THINK IT'S FASTER?
@aleks_voronov
OH YOU THINK IT'S FASTER?
@aleks_voronov
LESSONS LEARNED
@aleks_voronov
– Heraclitus
“Everything flows”
@aleks_voronov
SUCCESS!
@aleks_voronov
OR IS IT?
@aleks_voronov
FEEDBACK LOOP
@aleks_voronov
AUTOMATED TESTING
@aleks_voronov
UNIT TESTS
INTEGRATION TESTS
ACCEPTANCE TESTS
MANUAL
@aleks_voronov
UNIT TESTS
INTEGRATION TESTS
ACCEPTANCE TESTS
MANUAL
@aleks_voronov
UNIT TESTS
INTEGRATION TESTS
ACCEPTANCE TESTS
MANUAL
@aleks_voronov
UNIT TESTS
INTEGRATION TESTS
ACCEPTANCE TESTS
MANUAL
@aleks_voronov
SELF-TESTING CODE
@aleks_voronov
TEST DRIVEN DEVELOPMENT
@aleks_voronov
TDD AS A PRACTICE DEVELOPMENT PRACTICE
@aleks_voronov
TESTS FIRSTRED ‣ GREEN ‣ REFACTOR
@aleks_voronov
THINK FIRSTTHINK ‣ RED ‣ GREEN ‣ REFACTOR
@aleks_voronov
PROFIT✨
@aleks_voronov
SOUNDS LIKE WE ACHIEVE SAME WITH
UNIT TESTS...
@aleks_voronov
UNIT TESTING VS TDD
@aleks_voronov
ONLY NECESSARY CODEBEST CODE IS NO CODE
@aleks_voronov
RED STAGE SCHOOLTRUE TEST ALWAYS
REMEMBERS WHERE IT COMES FROM
@aleks_voronov
CLEANER INTERFACES
@aleks_voronov
CLEANER INTERFACES‣ TESTS ARE FIRST TO USE CODE
@aleks_voronov
CLEANER INTERFACES‣ TESTS ARE FIRST TO USE CODE
‣ PLAY IN PURE SANDBOX ENVIRONMENT
@aleks_voronov
CLEANER INTERFACES‣ TESTS ARE FIRST TO USE CODE
‣ PLAY IN PURE SANDBOX ENVIRONMENT‣ UNBIASED DESIGNING
@aleks_voronov
CLEANER INTERFACES‣ TESTS ARE FIRST TO USE CODE
‣ PLAY IN PURE SANDBOX ENVIRONMENT‣ UNBIASED DESIGNING
‣ POORLY DESIGNED CODE WITH TESTS IS STILL BETTER THANPOORLY DESIGNED CODE WITHOUT TESTS
@aleks_voronov
QUESTIONS ARISE
@aleks_voronov
WHAT IF I NEED CODE FIRST?
@aleks_voronov
SPIKE SOLUTION
@aleks_voronov
SPIKE SOLUTION‣ ISOLATE
@aleks_voronov
SPIKE SOLUTION‣ ISOLATE
‣ SHORTEN FEEDBACK LOOP: REPL, PLAYGROUND, FIDDLE
@aleks_voronov
SPIKE SOLUTION‣ ISOLATE
‣ SHORTEN FEEDBACK LOOP: REPL, PLAYGROUND, FIDDLE
‣ SETUP SANDBOX: LIBRARIES, STUBBED RESPONSES
@aleks_voronov
REFACTORING WITH TDD
@aleks_voronov
REFACTORING IS ABOUT CODE NOT LOGIC
@aleks_voronov
CHANGING INTERFACE
@aleks_voronov
I ❤ PROTOCOLS
@aleks_voronov
STRIVE FOR CONFIDENCE
@aleks_voronov
CHANGING IMPLEMENTATION
@aleks_voronov
DEPENDENCIES
@aleks_voronov
TEST DOUBLES
@aleks_voronov
TEST DOUBLES‣ DUMMIES
@aleks_voronov
TEST DOUBLES‣ DUMMIES‣ FAKES
@aleks_voronov
TEST DOUBLES‣ DUMMIES‣ FAKES‣ STUBS
@aleks_voronov
TEST DOUBLES‣ DUMMIES‣ FAKES‣ STUBS‣ SPIES
@aleks_voronov
TEST DOUBLES‣ DUMMIES‣ FAKES‣ STUBS‣ SPIES‣ MOCKS
@aleks_voronov
TESTING STYLESCLASSICAL & MOCKIST
@aleks_voronov
CLASSICAL TESTING
@aleks_voronov
CLASSICAL TESTING‣ ABOUT STATE
@aleks_voronov
CLASSICAL TESTING‣ ABOUT STATE
‣ CAN BREAK ENCAPSULATION
@aleks_voronov
CLASSICAL TESTING‣ ABOUT STATE
‣ CAN BREAK ENCAPSULATION
‣ USE STUBS
@aleks_voronov
MOCKIST TESTING
@aleks_voronov
MOCKIST TESTING‣ ABOUT BEHAVIOUR
@aleks_voronov
MOCKIST TESTING‣ ABOUT BEHAVIOUR
‣ TELL, DON'T ASK
@aleks_voronov
MOCKIST TESTING‣ ABOUT BEHAVIOUR
‣ TELL, DON'T ASK
‣ USE MOCKS
@aleks_voronov
DETECT BAD SMELL EARLY#
@aleks_voronov
TDD FOR BETTER DESIGN
@aleks_voronov
TESTS ARE FIRST WHO LEAVE FEEDBACK
$ %
@aleks_voronov
TESTS HELP YOU EVOLVE
@aleks_voronov
FUNCTIONAL CORE IMPERATIVE SHELL
@aleks_voronov
INTRODUCING TDD TO YOUR TEAM
@aleks_voronov
INTRODUCING TDD TO YOUR TEAM
‣ JUST START WRITING TESTS
@aleks_voronov
INTRODUCING TDD TO YOUR TEAM
‣ JUST START WRITING TESTS
‣ TEST SIMPLEST THINGS
@aleks_voronov
INTRODUCING TDD TO YOUR TEAM
‣ JUST START WRITING TESTS
‣ TEST SIMPLEST THINGS
‣ GET USED WITH TOOLS
@aleks_voronov
INTRODUCING TDD TO YOUR TEAM
‣ JUST START WRITING TESTS
‣ TEST SIMPLEST THINGS
‣ GET USED WITH TOOLS
‣ LET OTHERS SEE WHAT YOU DO
@aleks_voronov
INTRODUCING TDD TO YOUR TEAM
‣ JUST START WRITING TESTS
‣ TEST SIMPLEST THINGS
‣ GET USED WITH TOOLS
‣ LET OTHERS SEE WHAT YOU DO
‣ INTRODUCE BOY SCOUT RULE
@aleks_voronov
INTRODUCING TDD TO YOUR TEAM
‣ JUST START WRITING TESTS
‣ TEST SIMPLEST THINGS
‣ GET USED WITH TOOLS
‣ LET OTHERS SEE WHAT YOU DO
‣ INTRODUCE BOY SCOUT RULE
‣ PAIR PROGRAMMING
@aleks_voronov
HOW TO START WRITING TESTS?
@aleks_voronov
INTRODUCING TDD TO LEGACY PROJECT
@aleks_voronov
INTRODUCING TDD TO LEGACY PROJECT
‣ REMEMBER BOY SCOUT RULE?
@aleks_voronov
INTRODUCING TDD TO LEGACY PROJECT
‣ REMEMBER BOY SCOUT RULE?
‣ START WITH CRITICAL FEATURES
@aleks_voronov
INTRODUCING TDD TO LEGACY PROJECT
‣ REMEMBER BOY SCOUT RULE?
‣ START WITH CRITICAL FEATURES
‣ FIND LOWEST POINT YOU CAN TEST
@aleks_voronov
INTRODUCING TDD TO LEGACY PROJECT
‣ REMEMBER BOY SCOUT RULE?
‣ START WITH CRITICAL FEATURES
‣ FIND LOWEST POINT YOU CAN TEST
‣ ADD TESTS, THEN REFACTOR
@aleks_voronov
INTRODUCING TDD TO LEGACY PROJECT
‣ REMEMBER BOY SCOUT RULE?
‣ START WITH CRITICAL FEATURES
‣ FIND LOWEST POINT YOU CAN TEST
‣ ADD TESTS, THEN REFACTOR
‣ STEP BY STEP
@aleks_voronov
INTRODUCING TDD TO LEGACY PROJECT
‣ REMEMBER BOY SCOUT RULE?
‣ START WITH CRITICAL FEATURES
‣ FIND LOWEST POINT YOU CAN TEST
‣ ADD TESTS, THEN REFACTOR
‣ STEP BY STEP
‣ YES, IT TAKES TIME
@aleks_voronov
INTEGRATIONS
@aleks_voronov
CONTINUOUS INTEGRATION
@aleks_voronov
WALKING SKELETON FIRST
@aleks_voronov
CI SERVICES
@aleks_voronov
SEPARATE JOB PER CONFIG
@aleks_voronov
PULL REQUESTS & CODE REVIEW
@aleks_voronov
MAKE IT FUN AND CLEAR
@aleks_voronov
DESKTOP OR MESSENGER NOTIFICATIONS
@aleks_voronov
MAKE IT FUN AND CLEAR
@aleks_voronov
CONTINUOUS DEPLOYMENT
@aleks_voronov
MAKE IT FUN AND CLEAR
@aleks_voronov
CODE COVERAGE
@aleks_voronov
THANK YOU!
QUESTIONS?
top related