728x90

미션 후기

미션을 통해 배운 점
- 인수 테스트 기반 리팩터링 방법 학습
- 인수 테스트 기반 TDD 학습
- 주 생성자 지정하여 주 생성자 한 곳에서 인스턴스 변수 초기화 관리
- 인터페이스를 활용하여 외부 라이브러리 의존성 제거

 

3주 차 미션에서 인수 테스트(ATDD)에 대한 맛보기를 경험했다면

이번 미션은 조금 더 심화 과정의 느낌이었다

가장 중요한 포인트는 ATDD를 통해 코드를 보호하고 그 안에서 레거시 코드를 리팩터링 하는 경험을 하는 것이었다

확실히 인수 테스트의 장점은 느낄 수 있었다

사실 인수 테스트의 장점이라기보단 테스트 코드의 장점이기도 했지만

리팩터링 하다가 기능이 작동하지 않는 부분이 생기면 빠르게 캐치할 수 있었다

인수 테스트를 미리 작성하게 되면 가장 큰 장점은 '다음은 어떤 걸 개발해야 하지?'에 대한 이정표 역할을 해준다는 점이 가장 좋았다

많은 피드백을 받았던 과정이라 힘들긴 했지만 그만큼 얻은 것도 많았던 미션이었다


인수 테스트 특징과 활용법

추천 방법
- Top-Down으로 방향을 잡고, Bottom-Up으로 구현하기
- 인수 테스트 작성을 통해 요구사항과 기능 전반에 대한 이해를 선행
- 내부 구현에 대한 설계 흐름을 구상
- 설계가 끝나면 도메인부터 차근차근 TDD로 기능 구현
- 만약 도메인이 복잡하거나 설계가 어려울 경우 이해하고 있는 부분부터 기능 구현
인수 테스트를 이용한 리팩터링의 장점
- 인수 테스트 작성 후 리팩터링을 하면 사이드 이펙트에 대한 피드백을 바로 받을 수 있음
- 기능을 구현하다 꼬이거나 잘못되어도 인수 테스트가 성공한 시점으로 리셋할 수 있음
- 안심하고 작은 단위로 메서드를 분리

 

TDD가 어려운 이유 중 하나는 명확하지 않다는 점이다

TDD의 규칙 자체는 간단하지만 잘하고 있는지 알기 어렵고

대부분 추상적이다

 

ATDD를 활용하면 이런 부분에 대해서 약간의 가이드 역할을 해줄 수 있다

인수 테스트로 TDD로 개발할 방향을 제시해주며, 중간에 길을 잃더라도 인수 테스트를 기점으로 다시 롤백이 가능하다

리팩터링에 대한 부담이 줄어드는 것이다 :)

 

또한 TDD는 도메인 부분부터 개발하는 경우가 대부분인데, 이때 도메인 설계에 대한 지식이 부족하다면 테스트 코드를 작성하기란 정말 어렵다

도메인이 너무 복잡하거나 어렵다면 인수 테스트 작성을 통해 요구사항에 가이드를 잡고

이해하는 부분부터 차근차근 TDD를 통해 구현하는 게 많은 도움이 된다


Code / Feedback

🚀 1단계 - 인수 테스트 기반 리팩터링

https://github.com/next-step/atdd-subway-service/pull/527

 

1단계 - 인수 테스트 기반 리팩터링 by tyakamyz · Pull Request #527 · next-step/atdd-subway-service

안녕하세요 리뷰어님 1단계 - 인수 테스트 기반 리팩터링 PR 드립니다 :) Sections 객체를 생성하면서 테스트 코드를 작성하려고 보니 이미 인수 테스트로 검증이 완료된 코드들 이여서 따로 테스트

github.com


🚀 2단계 - 경로 조회 기능

https://github.com/next-step/atdd-subway-service/pull/551

 

2단계 - 경로 조회 기능 by tyakamyz · Pull Request #551 · next-step/atdd-subway-service

안녕하세요 리뷰어님 2단계 - 경로 조회 기능 PR 드립니다 :) 인수 테스트 케이스를 기반으로 최대한 TDD를 적용하여 구현하려고 노력해보았습니다! 그럼 이번 리뷰도 잘 부탁드리겠습니다!

github.com


🚀 3단계 - 인증을 통한 기능 구현

https://github.com/next-step/atdd-subway-service/pull/570

 

3단계 - 인증을 통한 기능 구현 by tyakamyz · Pull Request #570 · next-step/atdd-subway-service

안녕하세요 리뷰어님 3단계 - 인증을 통한 기능 구현 PR 드립니다 :) 2단계에서 질문주셨던 내용인데 보기 어려우실 것 같아서 가져왔습니다! 이번 로직 구현시에도 저 방식을 사용해서 구현했는

github.com


🚀 4단계 - 요금 조회

https://github.com/next-step/atdd-subway-service/pull/609

 

4단계 - 요금 조회 by tyakamyz · Pull Request #609 · next-step/atdd-subway-service

안녕하세요 리뷰어님 4단계 - 요금 조회 PR 드립니다 :) 노선별 추가 요금 부분은 생각처럼 잘되지 않아서 계속 번복하면서 코드를 작성하다 보니 커밋을 한 번에 해버렸네요ㅜ 보실 때 불편하실

github.com

 

728x90

'개발 교육 > 우아한 테크캠프 Pro' 카테고리의 다른 글

7. 레거시 코드 리팩터링  (0) 2022.07.12
6. 서비스 진단하기  (0) 2022.07.12
4. 그럴듯한 서비스 만들기  (0) 2022.07.11
3. 인수 테스트 주도 개발  (0) 2022.07.07
2. JPA  (0) 2022.07.07
복사했습니다!