alexander voronov test driven development in real world

92
@aleks_voronov TDD in Real World ALEXANDER VORONOV @aleks_voronov

Upload: -

Post on 22-Jan-2018

217 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Alexander Voronov Test driven development in real world

@aleks_voronov

TDD in Real WorldALEXANDER VORONOV

@aleks_voronov

Page 2: Alexander Voronov Test driven development in real world

@aleks_voronov

WHAT IS NATURAL?

Page 3: Alexander Voronov Test driven development in real world

@aleks_voronov

SURVIVAL OF THE FITTEST

Page 4: Alexander Voronov Test driven development in real world

@aleks_voronov

MANUAL TESTING

Page 5: Alexander Voronov Test driven development in real world

@aleks_voronov

OH YOU THINK IT'S FASTER?

Page 6: Alexander Voronov Test driven development in real world

@aleks_voronov

OH YOU THINK IT'S FASTER?

Page 7: Alexander Voronov Test driven development in real world

@aleks_voronov

LESSONS LEARNED

Page 8: Alexander Voronov Test driven development in real world

@aleks_voronov

– Heraclitus

“Everything flows”

Page 9: Alexander Voronov Test driven development in real world

@aleks_voronov

SUCCESS!

Page 10: Alexander Voronov Test driven development in real world

@aleks_voronov

OR IS IT?

Page 11: Alexander Voronov Test driven development in real world

@aleks_voronov

FEEDBACK LOOP

Page 12: Alexander Voronov Test driven development in real world

@aleks_voronov

AUTOMATED TESTING

Page 13: Alexander Voronov Test driven development in real world

@aleks_voronov

UNIT TESTS

INTEGRATION TESTS

ACCEPTANCE TESTS

MANUAL

Page 14: Alexander Voronov Test driven development in real world

@aleks_voronov

UNIT TESTS

INTEGRATION TESTS

ACCEPTANCE TESTS

MANUAL

Page 15: Alexander Voronov Test driven development in real world

@aleks_voronov

UNIT TESTS

INTEGRATION TESTS

ACCEPTANCE TESTS

MANUAL

Page 16: Alexander Voronov Test driven development in real world

@aleks_voronov

UNIT TESTS

INTEGRATION TESTS

ACCEPTANCE TESTS

MANUAL

Page 17: Alexander Voronov Test driven development in real world

@aleks_voronov

SELF-TESTING CODE

Page 18: Alexander Voronov Test driven development in real world

@aleks_voronov

TEST DRIVEN DEVELOPMENT

Page 19: Alexander Voronov Test driven development in real world

@aleks_voronov

TDD AS A PRACTICE DEVELOPMENT PRACTICE

Page 20: Alexander Voronov Test driven development in real world

@aleks_voronov

TESTS FIRSTRED ‣ GREEN ‣ REFACTOR

Page 21: Alexander Voronov Test driven development in real world

@aleks_voronov

THINK FIRSTTHINK ‣ RED ‣ GREEN ‣ REFACTOR

Page 22: Alexander Voronov Test driven development in real world

@aleks_voronov

PROFIT✨

Page 23: Alexander Voronov Test driven development in real world

@aleks_voronov

SOUNDS LIKE WE ACHIEVE SAME WITH

UNIT TESTS...

Page 24: Alexander Voronov Test driven development in real world

@aleks_voronov

UNIT TESTING VS TDD

Page 25: Alexander Voronov Test driven development in real world

@aleks_voronov

ONLY NECESSARY CODEBEST CODE IS NO CODE

Page 26: Alexander Voronov Test driven development in real world

@aleks_voronov

RED STAGE SCHOOLTRUE TEST ALWAYS

REMEMBERS WHERE IT COMES FROM

Page 27: Alexander Voronov Test driven development in real world

@aleks_voronov

CLEANER INTERFACES

Page 28: Alexander Voronov Test driven development in real world

@aleks_voronov

CLEANER INTERFACES‣ TESTS ARE FIRST TO USE CODE

Page 29: Alexander Voronov Test driven development in real world

@aleks_voronov

CLEANER INTERFACES‣ TESTS ARE FIRST TO USE CODE

‣ PLAY IN PURE SANDBOX ENVIRONMENT

Page 30: Alexander Voronov Test driven development in real world

@aleks_voronov

CLEANER INTERFACES‣ TESTS ARE FIRST TO USE CODE

‣ PLAY IN PURE SANDBOX ENVIRONMENT‣ UNBIASED DESIGNING

Page 31: Alexander Voronov Test driven development in real world

@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

Page 32: Alexander Voronov Test driven development in real world

@aleks_voronov

QUESTIONS ARISE

Page 33: Alexander Voronov Test driven development in real world

@aleks_voronov

WHAT IF I NEED CODE FIRST?

Page 34: Alexander Voronov Test driven development in real world

@aleks_voronov

SPIKE SOLUTION

Page 35: Alexander Voronov Test driven development in real world

@aleks_voronov

SPIKE SOLUTION‣ ISOLATE

Page 36: Alexander Voronov Test driven development in real world

@aleks_voronov

SPIKE SOLUTION‣ ISOLATE

‣ SHORTEN FEEDBACK LOOP: REPL, PLAYGROUND, FIDDLE

Page 37: Alexander Voronov Test driven development in real world

@aleks_voronov

SPIKE SOLUTION‣ ISOLATE

‣ SHORTEN FEEDBACK LOOP: REPL, PLAYGROUND, FIDDLE

‣ SETUP SANDBOX: LIBRARIES, STUBBED RESPONSES

Page 38: Alexander Voronov Test driven development in real world

@aleks_voronov

REFACTORING WITH TDD

Page 39: Alexander Voronov Test driven development in real world

@aleks_voronov

REFACTORING IS ABOUT CODE NOT LOGIC

Page 40: Alexander Voronov Test driven development in real world

@aleks_voronov

CHANGING INTERFACE

Page 41: Alexander Voronov Test driven development in real world

@aleks_voronov

I ❤ PROTOCOLS

Page 42: Alexander Voronov Test driven development in real world

@aleks_voronov

STRIVE FOR CONFIDENCE

Page 43: Alexander Voronov Test driven development in real world

@aleks_voronov

CHANGING IMPLEMENTATION

Page 44: Alexander Voronov Test driven development in real world

@aleks_voronov

DEPENDENCIES

Page 45: Alexander Voronov Test driven development in real world

@aleks_voronov

TEST DOUBLES

Page 46: Alexander Voronov Test driven development in real world

@aleks_voronov

TEST DOUBLES‣ DUMMIES

Page 47: Alexander Voronov Test driven development in real world

@aleks_voronov

TEST DOUBLES‣ DUMMIES‣ FAKES

Page 48: Alexander Voronov Test driven development in real world

@aleks_voronov

TEST DOUBLES‣ DUMMIES‣ FAKES‣ STUBS

Page 49: Alexander Voronov Test driven development in real world

@aleks_voronov

TEST DOUBLES‣ DUMMIES‣ FAKES‣ STUBS‣ SPIES

Page 50: Alexander Voronov Test driven development in real world

@aleks_voronov

TEST DOUBLES‣ DUMMIES‣ FAKES‣ STUBS‣ SPIES‣ MOCKS

Page 51: Alexander Voronov Test driven development in real world

@aleks_voronov

TESTING STYLESCLASSICAL & MOCKIST

Page 52: Alexander Voronov Test driven development in real world

@aleks_voronov

CLASSICAL TESTING

Page 53: Alexander Voronov Test driven development in real world

@aleks_voronov

CLASSICAL TESTING‣ ABOUT STATE

Page 54: Alexander Voronov Test driven development in real world

@aleks_voronov

CLASSICAL TESTING‣ ABOUT STATE

‣ CAN BREAK ENCAPSULATION

Page 55: Alexander Voronov Test driven development in real world

@aleks_voronov

CLASSICAL TESTING‣ ABOUT STATE

‣ CAN BREAK ENCAPSULATION

‣ USE STUBS

Page 56: Alexander Voronov Test driven development in real world

@aleks_voronov

MOCKIST TESTING

Page 57: Alexander Voronov Test driven development in real world

@aleks_voronov

MOCKIST TESTING‣ ABOUT BEHAVIOUR

Page 58: Alexander Voronov Test driven development in real world

@aleks_voronov

MOCKIST TESTING‣ ABOUT BEHAVIOUR

‣ TELL, DON'T ASK

Page 59: Alexander Voronov Test driven development in real world

@aleks_voronov

MOCKIST TESTING‣ ABOUT BEHAVIOUR

‣ TELL, DON'T ASK

‣ USE MOCKS

Page 60: Alexander Voronov Test driven development in real world

@aleks_voronov

DETECT BAD SMELL EARLY#

Page 61: Alexander Voronov Test driven development in real world

@aleks_voronov

TDD FOR BETTER DESIGN

Page 62: Alexander Voronov Test driven development in real world

@aleks_voronov

TESTS ARE FIRST WHO LEAVE FEEDBACK

$ %

Page 63: Alexander Voronov Test driven development in real world

@aleks_voronov

TESTS HELP YOU EVOLVE

Page 64: Alexander Voronov Test driven development in real world

@aleks_voronov

FUNCTIONAL CORE IMPERATIVE SHELL

Page 65: Alexander Voronov Test driven development in real world

@aleks_voronov

INTRODUCING TDD TO YOUR TEAM

Page 66: Alexander Voronov Test driven development in real world

@aleks_voronov

INTRODUCING TDD TO YOUR TEAM

‣ JUST START WRITING TESTS

Page 67: Alexander Voronov Test driven development in real world

@aleks_voronov

INTRODUCING TDD TO YOUR TEAM

‣ JUST START WRITING TESTS

‣ TEST SIMPLEST THINGS

Page 68: Alexander Voronov Test driven development in real world

@aleks_voronov

INTRODUCING TDD TO YOUR TEAM

‣ JUST START WRITING TESTS

‣ TEST SIMPLEST THINGS

‣ GET USED WITH TOOLS

Page 69: Alexander Voronov Test driven development in real world

@aleks_voronov

INTRODUCING TDD TO YOUR TEAM

‣ JUST START WRITING TESTS

‣ TEST SIMPLEST THINGS

‣ GET USED WITH TOOLS

‣ LET OTHERS SEE WHAT YOU DO

Page 70: Alexander Voronov Test driven development in real world

@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

Page 71: Alexander Voronov Test driven development in real world

@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

Page 72: Alexander Voronov Test driven development in real world

@aleks_voronov

HOW TO START WRITING TESTS?

Page 73: Alexander Voronov Test driven development in real world

@aleks_voronov

INTRODUCING TDD TO LEGACY PROJECT

Page 74: Alexander Voronov Test driven development in real world

@aleks_voronov

INTRODUCING TDD TO LEGACY PROJECT

‣ REMEMBER BOY SCOUT RULE?

Page 75: Alexander Voronov Test driven development in real world

@aleks_voronov

INTRODUCING TDD TO LEGACY PROJECT

‣ REMEMBER BOY SCOUT RULE?

‣ START WITH CRITICAL FEATURES

Page 76: Alexander Voronov Test driven development in real world

@aleks_voronov

INTRODUCING TDD TO LEGACY PROJECT

‣ REMEMBER BOY SCOUT RULE?

‣ START WITH CRITICAL FEATURES

‣ FIND LOWEST POINT YOU CAN TEST

Page 77: Alexander Voronov Test driven development in real world

@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

Page 78: Alexander Voronov Test driven development in real world

@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

Page 79: Alexander Voronov Test driven development in real world

@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

Page 80: Alexander Voronov Test driven development in real world

@aleks_voronov

INTEGRATIONS

Page 81: Alexander Voronov Test driven development in real world

@aleks_voronov

CONTINUOUS INTEGRATION

Page 82: Alexander Voronov Test driven development in real world

@aleks_voronov

WALKING SKELETON FIRST

Page 83: Alexander Voronov Test driven development in real world

@aleks_voronov

CI SERVICES

Page 84: Alexander Voronov Test driven development in real world

@aleks_voronov

SEPARATE JOB PER CONFIG

Page 85: Alexander Voronov Test driven development in real world

@aleks_voronov

PULL REQUESTS & CODE REVIEW

Page 86: Alexander Voronov Test driven development in real world

@aleks_voronov

MAKE IT FUN AND CLEAR

Page 87: Alexander Voronov Test driven development in real world

@aleks_voronov

DESKTOP OR MESSENGER NOTIFICATIONS

Page 88: Alexander Voronov Test driven development in real world

@aleks_voronov

MAKE IT FUN AND CLEAR

Page 89: Alexander Voronov Test driven development in real world

@aleks_voronov

CONTINUOUS DEPLOYMENT

Page 90: Alexander Voronov Test driven development in real world

@aleks_voronov

MAKE IT FUN AND CLEAR

Page 91: Alexander Voronov Test driven development in real world

@aleks_voronov

CODE COVERAGE

Page 92: Alexander Voronov Test driven development in real world

@aleks_voronov

THANK YOU!

QUESTIONS?