일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 켄트백
- datalake
- functional thinking
- clean code
- 데이터야놀자
- 데이터레이크
- 데이터유통
- 2016년회고
- 클린코드
- coursera
- 개발자로살아남기
- 동시성
- Raw-Request-URI
- 알고스팟
- 개발7년차매니저1일차
- 2017회고
- 데이터플랫폼
- kafka
- 실전사례
- wait region split
- 코딩인터뷰
- hackercup2017
- 해커컵
- 함수형 사고
- 회고
- 개발자
- 박종천
- 단위테스트
- spray
- 테스트주도개발
Archives
- Today
- Total
Software Engineering Note
테스트 코드를 먼저 작성해야 하는 이유 본문
TDD에서는 테스트를 먼저 작성하고 코드를 작성하라고 하죠.
오늘 그렇게 해야 하는 이유가 두 가지 느껴져서 적어봅니다.
첫 번째 이유는 테스트를 "완벽히" 실패 시키기 위해서입니다.
왜 실패를 시켜야 할까요? 그건 "운이 좋아서 패스하는 경우" 를 피하기 위해서입니다.
로직을 먼저 작성하고 테스트를 만든다고 가정 해봅시다.
새로운 if가 생겼고 필요한 코드를 모두 작성했습니다. 테스트를 돌려보니 파란불이 뜨네요. "역시 내 실력이란 훗"
그런데 알고보니 다른 if로 빠져서 테스트가 운좋게 통과 된것입니다. 이러한 우연은 가끔씩 찾아오기때문에 무시할 수가 없습니다.
그래서 지금 상태에서 실패되는 상황을 완벽하게 재현해줄 필요가 있는 것입니다.
두 번째 이유는 불필요한 코드를 작성하지않기 위해서입니다.
로직을 먼저 작성할때는 자연스럽게 이런저런 상황을 고려합니다.
그런데 이 과정에서 알게모르게 어떤 가정을 하게되고, 그에 따라 확실하지않은 입력을 가정 또는 불필요한 기능을 넣게 됩니다.
명세서를 쓰듯이 테스트를 작성하면 입력이 명확해지고 필요한 기능이 무엇인지 바로 드러나기 때문에
불필요한 기능이 들어갈 확률이 작아진다고 봅니다.
저는 무조건 테스트부터 만들어보지는않습니다.
그런 경우도 있고 안그런 경우도 있는데 실제로 필요성을 느끼다보면 점점 테스트를 먼저 만들게 될것같습니다. ^^
'일하며 개발하며' 카테고리의 다른 글
시간 복잡도는 왜 따져봐야 할까? (0) | 2020.03.18 |
---|---|
shell script 부분 병렬화 사례 (0) | 2020.03.01 |
클래스는 언제 나눠야 할까? (0) | 2018.02.27 |
FDD(Feeling-Driven Development) (0) | 2018.02.27 |
좋은 코드를 만드는 2가지 간단한 습관 (0) | 2015.11.24 |