loop-study 2022. 7. 25. 20:19

NEXTSTEP에서 진행하는 교육과정 ATDD와 함께 클린 API로 가는 길 4기다.

글을 작성하는 시점에서는 과정명이 ATDD, 클린 코드 with Spring으로 변경되었다.

 

ATDD, 클린 코드 with Spring

 

edu.nextstep.camp


ATDD 미션 다시 보기

1주차 - 인수 테스트 기반 기능 구현

- 인수 테스트 작성 방법

- 인수 테스트 가독성 고려

 

2주차 - ATDD + TDD Cycle 경험

- 인수 테스트를 시작으로 세부 구현을 단위 테스트로 구현

- Outside In TDD와 InSide Out TDD를 경험

- 테스트 비용을 고려하여 단위 테스트로 분리

 

3주차 - 인수 테스트 기반 리팩토링

- 인수 테스트를 통해 점진적으로 기능 개발 경험

- 인수 테스트 통합을 통해 인수 테스트의 역할을 구체화

- 인수 테스트에서 중요한 인증 부분에 대한 학습

 

4주차 - 문서화를 포함한 ATDD 전체 개발 사이클

- 테스트 목적에 따른 테스트 설정

- 테스트 기반 문서 자동화 경험 


강의 핵심 주제 다시보기

ATDD Cycle

- 1. 요구사항 -> 인수 테스트 -> API 개발

- 2. 요구사항 -> 인수 테스트 -> TDD -> API 개발

- 3. 요구사항 -> 인수 테스트 -> 문서화 -> TDD -> API 개발 -> 테스트 리팩토링

 

테스트 리팩터링

- 인수 테스트 스텝을 나누어 리팩터링

- 인수 테스트 검증되는 부분을 단위 테스트로 분리

- 인수 테스트의 흐름에 따라 하나로 통합하기


테스트 도구

- Spring, Spring Boot

- JUnit5, Mockito

 

인수 테스트 도구

- RestAssured

- @SpringBootTest + RANDOM_PORT

 

단위 테스트 도구

- MockitoExtension, SpringExtension

- @Mock, @MockBean

 

인수 테스트 인증 도구

- RestAssured + auth()

 

문서화 테스트 도구

- Spring Rest Docs

- Asciidoctor

- RestAssuredMockMvc


REST API

- REST 기반 API 설계를 인수 테스트로 검증

- RestAssured를 통해 인수 테스트 작성하기

- HTTP 표준을 기반으로 REST의 Uniform Interface 제약 지키기

- HTTP Cache를 통해 Cache 제약 조건 지키기

- JWT를 활용한 OAuth 2.0 규약을 통해 Stateless 제약 조건 지키기


강의 목표 다시보기

- 인수 테스트 기반으로 TDD를 할 수 있다.

- 테스트를 효과적으로 리팩터링하여 유지보수를 잘할 수 있다.

- 새로운 프로젝트뿐만 아니라 레거시 코드에서도 TDD를 할 수 있다.

- 남들에게 TDD와 ATDD가 실무에서 가능하다고 설명하고 할 수 있다.


후기

드디어 5주간의 교육이 마무리되었다. (이전 주차별 후기글을 작성해서 마땅히 쓸 내용이 많지는 않다.)

이 교육은 ATDD뿐만 아니라 다양한 것도 학습해서 좋았는데 다양한 테스트 도구와 사용으로 테스트 숙련도가 올랐다고 느껴진다.

Mockito, RestAssured, @SpringBootTest 등 다양한 도구를 배우고 사용하면서 시야가 넓어졌다.

또한, 프로덕션 코드처럼 커지는 테스트 코드의 복잡성을 어떻게 관리할지 고민도 해봤다.

 

가장 큰 배움은 실무에 어떻게 적용할지 접근 방법을 알 수 있는 거다.

TDD, 클린 코드를 통해서 단위 테스트를 배웠지만 과연 내가 예전에 다녔던 회사나 프로젝트에 그대로 적용할 수 있을까? 아무리 고민해봐도 그 환경과 복잡한 레거시에 적용을 못했을 거란 생각이 압도적으로 높았다.

제가 진행하는 강의인 '클린코드를 위한 TDD, 리팩토링' 의 수강자들 대부분이 '배운 내용을 어디서부터 적용해야 할지 막막하고, 실무에 바로 적용하기가 어렵다'는 아쉬움을 표하는 것을 많이 보았습니다.  - 박재성(자바지기)

추천사만 봐도 얼마나 어려운 일인지 알 수 있는데, 이 교육을 통해 강사님이 예전 회사와 현재 회사에 ATDD를 어떻게 적용했는지 그 과정을 엿볼 수 있어서 좋았다.

놀라운 건 교육을 통해 배웠던 내용과 거의 흡사하다는 점이다.

강사님의 실제 경험을 수강생이 그대로 느낄 수 있도록 교육으로 최대한 경험해볼 수 있게 짜인 커리큘럼을 다시 보면 대단하다는 생각이 든다. (교육비 70만원도 싸다고 느껴진다)

 

후기부터 작성하다보니 정리되지 않은 배운 내용이 많다.

배운 거 잊기 전에 잘 정리해서 나중에 써먹어야겠다.