본문 바로가기
프로그래밍/기타등등

나도 이제 TDD!! 할거야!

by yonmoyonmo 2021. 4. 12.

나는 여태 TDD를 안했다. TDD 방법론이란 것이 있다더라 하는 정도... 실제 테스트 주도 방식으로 개발해 본 적은 없다.

하지만 이제는 해볼라 한다! 왜냐하면!!! 요즘 TDD가 대세인 것 같아서!!!!

해보기 전에 일단 왜 하고 어떻게 해야하는 지에 대해 좀 알아봤다.

TDD가 무엇?

test-code first!

테스트가 개발을 이끌어가는 개발 방법론이다. 테스트를 먼저 짜고, 테스트를 만족하는 코드를 짜고, 그 코드를 이쁘게 만들기를 계속 반복함. Red - Green - Refactor Cycle로 요약할 수 있다고 합니다.

Red - 어떤 결과를 기대하며 실패할 수 밖에 없는 테스트 코드를 짬
Green - Red를 동작하도록 만듦 -> 기대하는 결과를 만족하는 단위의 코드 작성(구현)
Refactor - Green의 코드를 이쁘게 다듬어 줌(특정 디자인 패턴에 맞추거나 할 수도 있다)

테스트 코드로 미리 쭈욱 로직을 설계하고 정상 작동하게 만든 뒤 코드를 다듬는 식인 것 같군. 다듬은 코드는 프로젝트에 포함하고. 

더 깊은 이해를 위해서 설명을 잘 해놓으신 분들 글을 참조했다.

gmlwjd9405.github.io/2018/06/03/agile-tdd.html

 

[Agile] TDD(테스트 주도 개발)란 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

 

cloudrain21.com/test-driven-development

 

TDD 이야기(TDD에 대한 오해와 진실) - Rain.i

All about IT tech, especially database, cloud, linux, clustering.

cloudrain21.com

어쨌든 테스트는 원래 당연히 해야하는 것이다. 미리 테스트 하면서 개발하면 나중에 테스트에 고통을 좀 덜 받지 않을까?

그리고 테스트 코드를 쓰는 방식은 아니지만, 코딩하면서 postman 같은 도구를 이용해서 잘 되는지 확인하면서 개발하는 것도 테스트라고 할 수 있다. 하지만 TDD에서의 테스트는 테스트 코드도 코드지만 내 생각에는 마음가짐이 다른 것 같다.

원래 해오던 개발은(글쓴이 기준) "이러면 되나?->안되면 이러면 되나?->아니면 이러면 되나?" 코딩 후 "되네?..." 느낌이고
TDD는 "이런 상황에는 이런 결과를 내야함 안되면 집에못감" 코딩 후 "안될 리가 없지!" 정도의 느낌. 

확실히 이러면 내가 쓴 코드에 확신이 좀 들지도?...
덤으로 테스트마다 리팩토링이 들어가니 클린-한 코드도 따라오고 안할 이유가 엄따!

그래서 어떻게 하지?

하고는 싶은데 어떻게 해야하는가...? 여기서 많은 푸로그래머들이 막막함을 느끼지 않을까?(내 얘기임)
일단 spring boot에서 테스트 코드를 짜는 요령에 대해서 좀 알아보았다.

spring.io/guides/gs/testing-web/

 

Testing the Web Layer

this guide is designed to get you productive as quickly as possible and using the latest Spring project releases and techniques as recommended by the Spring team

spring.io

이 글을 보고는 대충 테스트 코드를 쓸 때 필요한 것들이 뭔지는 좀 알겠는데... 그래서... 그러니까? 어쩌라는거지?

Red - Green - Refactor 돌리기를 한 번 해보면 되려나? 그러려면 기대하는 결과를 하나 생각해 봐야하나? 연습용으로 프로젝트를 하나 만들어 봐야겠다. 그래서 코드를 써 보면서 익숙해지면 될 것 같다. 그럼 다음 포스팅은 test-driven 개발 연습 후기~~

댓글