윤개발
TDD - 테스트 주도 개발 by 켄트 백 본문
TDD 책을 읽으며 작성한 내용입니다. Test Driven Development: By Example - 저자: 캔트백
테스트 주도 개발의 궁극적인 목표는 "작동하는 깔끔한 코드" 이다.
- 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다.
- 중복을 제거한다.
TDD의 주문
- 빨강 - 실패하는 작은 테스트를 작성한다. (컴파일 조차 되지 않을 수 있다)
- 초록 - 빨리 테스트가 통과하게끔 만든다. (이를 위해 어떤 죄악을 저질러도 된다)
- 리팩토링 - 통과하게만 하는 와중에 생겨난 중복을 제거한다.
일반적인 TDD의 주기
- 테스트를 작성한다. 어떤식으로 나타나길 원하는지 이야기를 써내려나간다. 올바른 답을 얻기 위해 필요한 이야기의 모든 요소를 포함시켜라.
- 실행 가능하게 만든다. 무엇보다 중요한 것은 빨리 초록 막대를 보는 것이다. 깔끔하고 단순한 해법이 명백히 보인다면 그것을 입력하라. 만약 몇분정도 걸릴 거 같으면 일단 적어놓은 뒤에 초록막대를 보는 것으로 돌아오자.
- 올바르게 만든다. 이제 시스템이 작동하므로 직전에 저질렀던 죄악을 수습하자. 중복을 제거하고 초록막대로 되돌리자.
빠른 초록색을 보기위한 전략
- 가짜로 구현하기: 상수를 반환하게 만들고 진짜 코드를 얻을 때 까지 단계적으로 상수를 변수로 변경한다.
- 명백한 구현 사용하기: 실제 구현을 입력한다.(뭘 입력해야 할지 알때)
핵심
tdd의 핵심은 테스트를 먼저 개발해서 피드백을 빠르게 받는 것이다. 자동화된 코드에 의해 테스트를 받자. 기능을 많이 변경했을 때 두려움을 걱정을 지루함으로 바꿔주는 기능이다. 작은 step을 밝아서 성공시키는 과정 자신감이 있으면 큰 step을 밟는다.
Money 예제 코드
https://github.com/Ysungjae/TDD
Ysungjae/TDD
Contribute to Ysungjae/TDD development by creating an account on GitHub.
github.com
'테스트' 카테고리의 다른 글
Test Doubles(테스트 더블) — Dummy, Fakes, Mocks, Spy and Stubs (0) | 2021.07.02 |
---|---|
AssertJ (0) | 2021.07.01 |
JUnit 5 테스트란 무엇이며 어떻게 사용할까? (0) | 2021.06.02 |
Comments