개발자 블로그
[coFi 부트캠프 개발자 커뮤니티 웹사이트] 2. TDD 개발의 중요성 본문
TDD란? Test Driven Devlopment, 테스트 주도 개발로 '테스트가 개발을 이끈다' 라는 말.
1. 그렇다면 왜? 테스트 주도 개발을 해야할까?
애자일이란에서 설명한 것과 같이 불확실성이 높을 때 ‘피드백’과 ‘협력’이 중요하다.
피드백과 협력이 중요한 이유
- 불확실성이 높을 때 ‘피드백’과 ‘협력’을 이용하면 더 좋은 결과가 나올 확률이 높아진다.
- TDD도 마찬가지로 ‘피드백’과 ‘협력’을 증진시키는 것이기 때문에 불확실성이 높을 때 도움이 되는 것이다.
2. 그럼 언제 사용해야 할까?
만약 어떤 부분에 대한 코딩을 여러번 해봤고 결과가 어떻게 나올지 뻔하다면 TDD를 하지 않아도 된다.
또한 TDD를 했을 때 얻는 것이 적다면 TDD를 하지 않아도 된다.
그렇다면 TDD는 어떤 상황에서 해야할까?
1) 처음해보는 프로그램 주제
2) 나에 대한 불확실성이 높은 경우
3) 고객의 요구조건이 바뀔 수 있는 프로젝트
4) 외부적인 불확실성이 높은 경우
5) 개발하는 중에 코드를 많이 바꿔야 된다고 생각하는 경우
6) 내가 개발하고 나서 이 코드를 누가 유지보수할지 모르는 경우
7) 즉, 불확실성이 높을 때 TDD를 하면 된다.
3. TDD의 효과
모든 애자일의 실천법은 피드백과 협력을 동시에 증진시킨다.
1. 피드백
TDD를 하면 피드백이 증가한다. 테스트를 통과하는 것으로 잘되고 있는가를 자주 확인할 수 있다.
2. 협력(이 부분이 핵심!)
켄트 벡(Kent Beck)
- ‘test’는 일반적으로 동사로 사용한다. ‘테스트한다.’, ‘테스트해라.’ 그러나 TDD를 하면 ‘test’는 명사가 된다.
- ‘test’가 명사가 되면? 동사는 그 순간에만 하는 것이고, 명사(대상, 목적어)는 이후에도 소유할 수가 있다. 즉, record로 남을 수 있다. ‘test’가 저장된다는 것은 남들에게 남들에게 테스트 코드를 보여줄 수 있고, 남들은 그 코드를 직접 실행해볼 수 있다는 것이다.
- 그렇다면 TDD는 왜 협력을 증진시키는가? ‘test’가 명사(대상, 목적어)가 되는 순간 이것을 공유하기가 쉬워진다.
- 공유하면 협력이 증진된다.
- 남이 짠 코드를 빨리 이해할 수 있다.
- 남이 짠 코드를 쉽게 이해할 수 있다.
즉, 왜 이렇게 짰을까 궁금할 때 ‘test’를 공유하고 그 테스트 코드를 보면 이해할 수 있다.
테스트 코드에는 개발자의 개발 과정(어떤 고민/어떤 의사결정)이 나와있기 때문이다.
앞의 TDD의 정의(결정(decision)과 피드백(feedback) 사이의 갭을 인식하는 것)와 같이 테스트 코드(feedback)를 보면 그 사람의 의사결정(decision)이 나타나고 상대방은 그 부분은 왜 그렇게 짰는지를 쉽고 빨리 알게 되기 때문에 협력이 증진된다.
참고 : https://gmlwjd9405.github.io/2018/06/03/agile-tdd.html
*느낀점
나에게는 항상 모든 것이 처음이고, 주니어 개발자로서 나에 대한 불확실성이 항상 존재한다. 어쩌면 확실하게 믿을 때 실수가 많이 나오기도 한다. 그리고 프로젝트를 하면서 적용하는 서비스 또는 기능이 달라질 때 마다 갈아엎은 적이 한 두번이 아니다. 때문에 TDD는 장기적으로 봤을 때, 프로젝트를 더욱 유연하고 단단하게 만들어주는 밑거름이 된다고 생각한다.
'프로젝트 > coFi 개발자 커뮤니티' 카테고리의 다른 글
[coFi 부트캠프 개발자 커뮤니티 웹사이트] 4. 좋아요 및 조회수 동시성 문제 (0) | 2022.05.13 |
---|---|
[coFi 부트캠프 개발자 커뮤니티 웹사이트] 3. AWS elastic beanstalk 무중단 배포 (0) | 2022.05.13 |
[coFi 부트캠프 개발자 커뮤니티 웹사이트] 1. Django의 Form (0) | 2022.05.13 |
[coFi 부트캠프 개발자 커뮤니티 웹사이트] 0. 회고 (0) | 2022.04.20 |