Software Engineering Note

테스트 코드를 먼저 작성해야 하는 이유 본문

일하며 개발하며

테스트 코드를 먼저 작성해야 하는 이유

devmoons 2017. 6. 23. 23:09

TDD에서는 테스트를 먼저 작성하고 코드를 작성하라고 하죠. 


오늘 그렇게 해야 하는 이유가 두 가지 느껴져서 적어봅니다.


번째 이유는 테스트를 "완벽히" 실패 시키기 위해서입니다.


왜 실패를 시켜야 할까요? 그건 "운이 좋아서 패스하는 경우" 를 피하기 위해서입니다.


로직을 먼저 작성하고 테스트를 만든다고 가정 해봅시다.


새로운 if가 생겼고 필요한 코드를 모두 작성했습니다. 테스트를 돌려보니 파란불이 뜨네요. "역시 내 실력이란 훗"


그런데 알고보니 다른 if로 빠져서 테스트가 운좋게 통과 된것입니다. 이러한 우연은 가끔씩 찾아오기때문에 무시할 수가 없습니다.


그래서 지금 상태에서 실패되는 상황을 완벽하게 재현해줄 필요가 있는 것입니다.



번째 이유는 불필요한 코드를 작성하지않기 위해서입니다.


로직을 먼저 작성할때는 자연스럽게 이런저런 상황을 고려합니다. 


그런데 이 과정에서 알게모르게 어떤 가정을 하게되고, 그에 따라 확실하지않은 입력을 가정 또는 불필요한 기능을 넣게 됩니다.


명세서를 쓰듯이 테스트를 작성하면 입력이 명확해지고 필요한 기능이 무엇인지 바로 드러나기 때문에 


불필요한 기능이 들어갈 확률이 작아진다고 봅니다.



저는 무조건 테스트부터 만들어보지는않습니다. 


그런 경우도 있고 안그런 경우도 있는데 실제로 필요성을 느끼다보면 점점 테스트를 먼저 만들게 될것같습니다. ^^