당신의 TDD가 항상 실패하는 이유
우리는
우리 프로젝트는
• Non-Startup
• Business Service
• Global Market
• Competitors
• Message-Driven
• Multitenancy
• Scalable
• Responsive
우리 팀은
비장하다
Message-Driven
Domain-Driven Design
Event Sourcing
Command Query Responsibility Segregation
Test-Driven Development
Continuous Deployment
Code Review
Pair Programming
Retrospective
Sprint
Distributed System
Asynchronous
Cloud
우리 평가는
“생각보다 만족한다.”
“방향 잘 잡았다.”
TDD가 실패하는 이유
“You are not prepared!”
Illidan Stormrage
당신이 TDD에 실패하는 이유
당신은 이렇게 하지 않는다.
Why you always fail with tdd
우리가 보호해야 하는 것
• AWS
우리가 보호해야 하는 것
• AWS
우리가 보호해야 하는 것
• AWS
• Spring
우리가 보호해야 하는 것
• AWS
• Spring
우리가 보호해야 하는 것
• AWS
• Spring
• 도메인
우리가 보호해야 하는 것
• 도메인
우리가 제어할 수 없는 것
• 외부 세상
• 실 세계
• 인프라
• 외부 서비스
• 레거시
설계
• 낮은 결합
• 높은 응집
• 도메인 모델 보호
설계를 테스트 하라
구현 테스트
Test
Interface
Implementation
Test
Test
Test
구현 테스트
Test
Interface
Implementation
Test
Test
Test
구현 테스트
Test
Interface
Implementation
Test
Test
Test
정보 숨김(Information Hiding)
• David Parnas, 1971
• On the Criteria To Be Used in Decomposing Systems into Modules
• Information distribution aspects of design methodology
• 어려운 설계 결정과 변경될 가능성이 높은 설계
결정들을 다른 모듈로부터 숨기는 것
설계 테스트
Test
Interface
Implementation
Test
Test
Test
설계 테스트
Test
Interface
Implementation
Test
Test
Test
레거시와 함께 살기
Legacy
Adapter
System Under Test
당신의 팀이 TDD에 실패하는 이유
당신의 팀은 이렇게 하지 않는다.
프로세스
• 점진
• 반복
• Fail-Fast
반복 주기
• 계획
• 실행
• 평가
문화
• 공유
• 목표
• 지식
아키텍처
• 낮은 결합
• 높은 응집
• 도메인 모델 보호
도메인 모델과 플랫폼
Platform
Domain Model
도메인 모델과 플랫폼
Platform
Domain Model
아키텍처 사례
Business Logic
Services
Modules
Application Platform
MVVM 아키텍처 패턴
Model
View
View Model
신나고 재미난 라이브 코딩
목적
• 소프트웨어 사용자에게 어떤 가치를 전달할
것인가?
분석
• 목적을 달성하기 위해 소프트웨어에 어떤 변경이
필요한가?
작업 설계
• 소프트웨어 변경은 어떤 세부 작업들이 있는가?
• 각 작업들은 어떤 순서로 진행되어야 하는가?
• 각 작업들은 누가 담당하는가?
TDD
Red
GreenRefactor
ATDD + TDD
Red
GreenRefactor
Red
Green
Unit TestAcceptance Test
코드 설계
• 작업에는 어떤 코드 변경(commit)이 필요한가?
테스트 작성
• 코드 변경을 검증하는 자동화된 테스트 케이스
코딩
• 테스트 케이스를 만족하는 최소한의 코드 쓰기
리팩터
• 의도 노출
• 중복 제거
• 추상화 수준 조절
피드백
• 단위 테스팅
• 코드 리뷰
• 기능 테스팅
• 수동 테스팅
• 사용자 반응 수집
질문

More Related Content

PDF
효과적인 미디어 서비스를 위한 Web/Mobile Backend 구성 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day
PDF
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
PPTX
TDD: Test Driven Development 첫번째 이야기
PPTX
사내 TDD 도입을 위한 설명 문서
PPTX
TDD or TFD
PPTX
Test driven development
PPTX
테스트 자동화와 TDD(테스트 주도 개발방법론)
PPT
Responding to change
효과적인 미디어 서비스를 위한 Web/Mobile Backend 구성 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
TDD: Test Driven Development 첫번째 이야기
사내 TDD 도입을 위한 설명 문서
TDD or TFD
Test driven development
테스트 자동화와 TDD(테스트 주도 개발방법론)
Responding to change

Similar to Why you always fail with tdd (9)

PDF
Tdd retro agile_korea_게시용
PDF
파이썬 TDD 101
PDF
TDD - 테스트 주도로 개발하기
PPTX
PPTX
PDF
클라우드 네이티브로의 전환을 위한 여정
PPTX
PDF
나는 왜 TDD에 집착하는가?
PPTX
애자일 하라
Tdd retro agile_korea_게시용
파이썬 TDD 101
TDD - 테스트 주도로 개발하기
클라우드 네이티브로의 전환을 위한 여정
나는 왜 TDD에 집착하는가?
애자일 하라
Ad

More from Gyuwon Yi (11)

PPTX
Event sourcing spring camp 2017.public
PPTX
CQRS - Show me the code
PPTX
CQRS
PPTX
프로그래밍, 설계 그리고 패턴
PPTX
VSTS와 Azure를 이용한 팀 프로세스 관리
PPTX
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
PPTX
Unit testing
PPTX
Xamarin Forms, MVVM and Testing
PPTX
Reactive Model-View-ViewModel Architecture
PPTX
Introduction to IoC Container
PPTX
Introduction to TPL
Event sourcing spring camp 2017.public
CQRS - Show me the code
CQRS
프로그래밍, 설계 그리고 패턴
VSTS와 Azure를 이용한 팀 프로세스 관리
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Unit testing
Xamarin Forms, MVVM and Testing
Reactive Model-View-ViewModel Architecture
Introduction to IoC Container
Introduction to TPL
Ad

Why you always fail with tdd