공부/TDD

[OKKYCON: 2018] 이규원 - 당신들의 TDD가 실패하는 이유

Moonsc 2020. 9. 26. 21:02
728x90
엔지니어링은 사이언스가 아니다.
프로그래머는 사이언스보단 엔지니어링에 훨씬 가깝다.
과학적 이론, 과학적 방법론을 가지고 정해진 시간, 정해진 인력, 정해진 자금 안에서 해결해야 한다.

 

TDD 실패하는 사람들의 테스트

  • 구현 테스트를 한다.
  • 테스트들이 내부 코드들을 알고 있다.
  • Mock을 많이 사용한다. Mock은 대부분 스텁이나 스파이를 위해 쓰는데 간접적이다.

 

우리가 제어할 수 없는 것

  • 현실 세계
  • 인프라
  • 외부 서비스
  • 레거시

 

우리가 보호해야 하는 것

  • AWS
  • Spring 
  • Domain

 

 

TDD 성공을 위한 방법

 

목적

소프트웨어 사용자에게 어떤 가치를 전달할 것인가? 명확한 정의가 중요하다.

 

분석

목적을 달성하기 위해 소프트웨어에 어떤 변경이 필요한가?

 

설계 

  • 낮은 결합
  • 높은 응집
  • 도메인 모델 보호

 

프로세스 : 점진 > 반복 > Fail - Fast

 

반복 주기 : 계획 > 실행 > 평가

 

개발 문화 : 공유 > 목표 > 지식

 

방법1. 정보 숨김(Information Hiding)

  • 어려운 설계 결정과 변경될 가능성이 높은 설계 결정들을 다른 모듈(외부)로부터 숨기는 것 

 

방법2. 도메인 모델과 플랫폼

  • 도메인과 플랫폼을 독립적으로 운용한다.

 

방법3. 초기 분석

  • 유저 스토리를 분석하고 그려본다

 

 

Q1. 코찔찔이들의 TDD 성공 방법은 ? 

A1. 페어링을 통한 전파. 

 

Q2. 요구사항을 명확히 하는 방법은 ?

A2. 초기 분석 및 페어링

 

Q3. 통합 테스트를 성공하는 방법은 ?

A3. Funtional 테스트, 메뉴얼 테스트, 외부 연동 테스트는 페이크 서비스를 통해서 한다.