TDD (Test Driven Development)
테스트 주도 개발, 테스트 작성 후 구현 코드를 작성하는 방식이다. TDD는 학생때부터 계속해서 들어오고 이론은 알고 있지만, 실천해보진 못한 개발 방법론 중 하나였다. 1주차 과제를 통해 TDD로 개발을 진행했고, 왜 TDD를 사용하는지 조금이나마 알게 되었다. 배운 개념들과 기록들은 차차 블로그로 남길 예정이다.
그리고 테스트 더블, TDD의 원칙 등을 알 수 있던 소중한 시간이었다.
과제 요구사항
핵심 요구사항을 간단하게 적자면 아래와 같다.
포인트 충전 서비스를 개발한다.
- 기본 기능을 구현한다. (포인트 충전, 포인트 사용, 포인트 조회, 포인트 내역 조회)
- 단위 테스트를 먼저 작성해야 한다. (TDD)
- 동시에 여러 건의 포인트 충전, 이용 요청이 들어올 경우 순차적으로 처리되도록 동시성 제어를 고민해야 한다.
문제 상황
어디서부터 어떻게 시작해야 할 지 막막했다. 늘 먼저 시작했던건 요구사항에 맞춰 비즈니스 로직을 작성하는 것이었는데,, 테스트를 먼저 작성하려니 감이 잡히지 않았다. 시작하는 것이 가장 어려웠다.
시도
Best Practice를 참고하려 했다.
TDD 개발론을 활용한 강의도 참고하고, 첫 몇 번의 시도는 AI와 함께하기도 했다.
이후 Red-Green-Refactor 리듬을 따라 코드르 작성했다. 즉, 실패하는 코드를 먼저 작성하고 우선 그 테스트가 통과하도록 짠 후 리팩토링을 최대한 깔끔하게 하려 노력했다.
해결
몇 번의 테스트 코드를 치고 나니 감이 잡히기 시작했다. 어디부터 시작해야 하고, 어느 부분을 중점적으로 개발해야 할 지 알게되었다.
특히 정상적으로 실행해야 하는 코드 / 오류가 나야 하는 코드로 나누었고, 오류가 나야 하는 코드에서는 경계선에 집중하기 시작했다.
이렇게 개발을 진행하다 보니 오히려 실제 코드를 작성할 때 확신이 생기고 머뭇거림이 줄어들었다. 어느 계층에서는 어떤 예외 처리를 해줘야할 지 더욱 명확해졌다.
알게된 것
- 테스트 더블 (mock, stub, ...)
- TDD로 개발하기 (Red-Green-Refactor 원칙, 단위/통합 테스트 등)
- 웹서버 단에서 동시성 처리
아쉬운 점
- 테스트 더블에서의 mock 개념을 활용하지 못하고 stub 개념만 적용하기 바빴다.
- 물론 어떤 상황에서 mock 개념을 적용하고 어떤 상황에서 spy를 적용해야 할 지 아직 잘 알지 못한다..
- 리팩토링을 더 많이 고민하지 못했다. 시간 확보가 우선이다.
다음 주차 목표
- 시간을 더욱 많이 내서 많은 고민들을 하며 그 안에서 많이 배우고 싶다.
- 다만 다음 주는 더더욱 바쁜 주여서 계획대로 될 지 모르겠다 ㅠㅠ. 잠을 줄이는 것도 한계가 있다..
- 이번 주차에서 배운 TDD를 지속적으로 적용하며 익히는 것이 중요하겠다.
- 설계가 주를 이루는 주차인데, 설계가 모든 것의 시작점인 만큼 매우 중요할 것이다. 다만 너무 욕심내지 말고, 내 역량의 범주 안에서 할 수 있는 것인가, 잘 판단하자.
항해플러스 Lite 백엔드 2기 모집이 시작되었습니다!
관심있는 분들께서는 아래 페이지 읽어보시고 등록하실 때 아래 코드 입력하시면 10만원 추가 할인을 받으실 수 있습니다!
과정 상 궁금하신 내용은 댓글 남겨주시고 추후 후기를 남길 예정이니 참고하셔도 좋습니다 :)
추천인 코드: o3HXzU
항해 플러스 Lite 백엔드 코스
바쁜 개발자를 위한 1인 부트캠프, 내 일정에 맞춰 꾸준히 학습해요.
hanghae99.spartacodingclub.kr
'기타' 카테고리의 다른 글
[항해 플러스 Lite 1기] 3주차 - 클린 아키텍처 (0) | 2025.06.08 |
---|---|
[항해 플러스 Lite 1기] 2주차 - 서버 설계 (1) | 2025.06.01 |
[취준] 2024 상반기 한화시스템 ICT 서비스 개발/운영 직무 지원 후기 (0) | 2024.07.17 |
[취준] 싸피 SSAFY 12기 전공반 지원 후기 (9) | 2024.07.16 |
[우아한테크코스] 프리코스 3주차 회고 (0) | 2023.11.22 |