1주차 TDD TIL - Park-ha-neul/hhplus-e-commerce GitHub Wiki
테스트 주도 개발이라는 방법론을 1주차에서 학습했다.
코드를 작성하기 전, 테스트 케이스를 먼저 작성하고 그 테스트를 통과하는 코드를 작성하는 방식이다.
이 방법론을 적용하면 품질 높은 코드를 작성하고 버그를 줄이며 유지보수성을 높이는 데 효과적이다.
TDD의 주요 과정
TDD는 일반적으로 3단계로 이루어진다.
- RED ( 실패하는 테스트 작성 )
- 먼저 테스트 케이스를 작성한다.
- 이때, 실제로 구현되지 않은 기능에 대한 테스트를 작성하기 때문에 테스트는 실패한다.
- GREEN ( 테스트 통과를 위한 코드 작성 )
- 테스트가 실패하는 것을 확인한 후 해당 테스트를 통과시키기 위해 최소한의 코드만 작성한다.
- 코드가 테스트를 통과하도록 구현하는 데 집중하며 필요한 최소한의 코드만 추가한다.
- REFATCOR ( 리팩토링 )
- 코드가 테스트를 통과하면 리팩토링을 통해 코드를 더 깨끗하고 효율적으로 개선한다.
결론 및 아쉬웠던 점
- 테스트코드를 처음 설계하고 작성하다 보니 서비스를 만들기 전 테스트 케이스를 먼저 뽑는 것에 대한 이해도가 적었음
- 단위 테스트는 controller, service, db 등 역할 별로 테스트 코드를 나눠서 작성했으면 더 좋았겠다라는 생각을 했음
- 통합 테스트는 기존에 service 통합 테스트만 작성했는데 api 자체를 call 해서 db 값을 비교하는 방식으로 진행하는게 더 통합 테스트 개념에 맞겠다라는 생각을 했음
src
└── main
└── java
└── com
└── yourapp
├── controller
│ └── UserController.java
├── service
│ └── UserService.java
├── repository
│ └── UserRepository.java
└── model
└── User.java
└── test
└── java
└── com
└── yourapp
├── controller
│ └── UserControllerTest.java <-- Controller 단위 테스트
├── service
│ └── UserServiceTest.java <-- Service 단위 테스트
├── repository
│ └── UserRepositoryTest.java <-- Repository 단위 테스트
└── integration
└── UserControllerIntegrationTest.java <-- 통합 테스트
다음 주 목표
- 통합 테스트 작성 시 서비스에 대한 통합 테스트만 작성했는데 controller 단에 통합 테스트로 작성해보고 싶음
- 단위 테스트도 service만 작성하는게 아닌 controller까지 작성해보고 싶음