일기를 적는데 반성은 하지만 달라지는게 별로 없다.
주제별 이야깃거리
- Nest.js로 Back-end API구축하기(3)
- TDD를 써보다(1)
개발 푸념
Nest.js로 Back-end API구축하기(3)
- 솔직히 Nest.js로 API만드는 것은 정말 쉽다고 느껴졌다. 이전에 초보개발자로 회사에 들어갔을 때, Spring Framework를 이용해 개발을 했던 경험을 되살려보면.. 복잡한 설정문제도 없을뿐더러, 그놈의 xml을 보지도 않아도 되고, 속도도 비교가 안될정도로 빠르다.
- Module, Controller, Service구조만 잘 정해놓는다면, 정말 쉽게 개발할 수 있다. 그래서 나도 빨리 개발했다. 그랬더니.. 약간의 여유가 생겼는데, 이전부터 해보고싶었던 것을 한번 해보기로 했는데, 바로 테스트 코드를 작성하여 개발해보는 것이다. Nest.js에는 기본적으로 테스트코드까지 보일러플레이트형식으로 제공해주고 있었고, jest사용법만 좀 공부하면 테스트코드를 작성하기가 매우 쉬웠다. 그래서 이번에 일부 모듈을 테스트코드를 작성하여 개발을 진행하였는데.. 다음 섹션에서 그 후기를 다루겠다.
- 우선 제공할 기능은 완성되었고, 이번주에 배포만 진행하면 되므로 마무리가 될 예정이다. 하지만 이번 기회를 통해, TDD를 적용하는 법을 꼭 진심으로 배워서 이후 잘 써먹어야겠다는 생각으로, 이번주를 마무리해본다.
TDD를 써보다(1)
- TDD는 Test Driven Development의 약자로, 우리나라말로하면 테스트 주도 개발이라 한다.
- 비교적 최근에 읽은 개발책들을 봤을 때, 이 TDD의 중요성과 TDD를 해야하는 이유에 대해 이야기를 했었는데, 막상 해보려고 하니 혼자하기가 쉽지 않았고.. 테스트코드를 작성할만한 환경이 딱히 없었으며, 회사에서 쓰지도 않기 때문에 할 일이 없었다(는 핑계). 그렇지만 이번에 나에게 TDD를 할 수 있는 기회가 주어졌고, 나는 이 기회를 놓지지 않았다.
- TDD에는 단위테스트, 통합 테스트 두가지 방법이 존재하는데,
- 예를 들면 다음과 같다.
단위 테스트 : 데이터 저장, 데이터 수정 기능이 잘 동작하는지 테스트하는 것
통합 테스트 : 데이터 저장에 따른 DB insert, logging, 응답 데이터 확인
- 나는 우선 단위테스트부터 진행하였는데, 테스트를 진행하기 위해서는 먼저 사전 시나리오가 있어야 했다. 테스트를 어떻게 할지 정의를 해야한다는 것이다. 하지만 나는 이미 기능을 완성해놓은 상태였기 때문에, 완성된 기능의 시나리오를 토대로, 테스트코드를 작성했다.
- 가장 먼저 했던것은 DB와 관련된 CRUD 기능을 테스트하는 것이었다. 요청에 따른 CRUD기능은 단순하게 정의되므로 단위테스트로 작성하였으며, C,U기능은 중복체크로직까지 테스트를 진행하였으며, D기능은 아이템 존재 여부, R기능은 단순 데이터 호출여부에 집중하여 간단히 테스트를 완성해보았다.
- 이후에는 위 기능들을 통합하여 테스트를 진행했어야하는데, 이번주에 할 예정이다.
- TDD를 진행해보면서 느낀점
- 생각보다 시나리오 생각하는것이 간단한 일이 아니라는것이다. 우선 내가 생각한 테스트 시나리오가 맞는지 검증도 해봐야하고, 만약 엉터리로 시나리오를 짰다면, 결국 테스트를 통과하더라도 버그가 일어날 가능성이 큰 코드를 짜게되는것이므로.. 쉽게 생각할 일이 아니었다.
- 통합테스트를 하기 위해서는 단위테스트를 묶어 시나리오까지 작성해야되는데.. 시간이 정말 오래걸릴것같다는 느낌을 받았다. 우선 처음이라 그런것도 있지만.. 이 시나리오라는게 생각하는데 있어 단순하게 1+1=2가 아니라는것을 느꼈다.
- 다만 시나리오를 생각하는 과정이 뭔가.. 공부하는 느낌이라 재미가 좀 있었다. 지금이야 시간이 좀 오래걸릴게 맞는거지만, 꾸준히 하다보면 시간을 들여 한 테스트 시나리오 작성이 시간이 전혀 아깝지 않은 소중한 자산이 될 것 같다.
- TDD를 하면 자연스럽게 설계까지 이어지기때문에, 지금은 반대로 했지만 나중에는 TDD를 통해 먼저 테스트코드부터 작성하는게 먼저가 될 것 같다는 느낌이고, 그럴 시간도 확보해야하겠다는 생각이 든다.
- 확실히 조급함보다 여유있는 개발을 해야 TDD가 더 빛을 낼 것 같다는 생각도 든다. 다음주는 통합테스트까지. 잘 진행해서 더 가치있는 개발자가 되길 바란다.
개발푸념 - 이번주는 쉽니다.