개발자 블로그

[coFi 부트캠프 개발자 커뮤니티 웹사이트] 2. TDD 개발의 중요성 본문

프로젝트/coFi 개발자 커뮤니티

[coFi 부트캠프 개발자 커뮤니티 웹사이트] 2. TDD 개발의 중요성

hayongwoon 2022. 5. 13. 13:26

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는 장기적으로 봤을 때, 프로젝트를 더욱 유연하고 단단하게 만들어주는 밑거름이 된다고 생각한다.