diff --git a/reviewguide/atdd-spring/acceptance-test-auth.md b/reviewguide/atdd-spring/acceptance-test-auth.md index 084c345..733e5f1 100644 --- a/reviewguide/atdd-spring/acceptance-test-auth.md +++ b/reviewguide/atdd-spring/acceptance-test-auth.md @@ -1,21 +1,24 @@ -## 1단계: 인증 기반 인수 테스트 도구 연습 +## 1단계: 토큰을 이용한 로그인 -- form 을 이용한 로그인과 token을 이용한 로그인을 위한 인수 테스트를 잘 작성하였는가? - - UsernamePasswordAuthenticationFilter, BearerTokenAuthenticationFilter -- @Secured 애너테이션을 이용하여 관리자 권한을 검증할 수 있도록 하였는가? -- 단위 테스트를 이용하여 Interceptor 구현 연습 가이드 - - 테스트를 위한 샘플 코드는 대부분 제공 예정 -- 테스트 구동을 통해 기능이 정상 동작하는지 여부를 바탕으로 가이드 -- 실습과 함께 뼈대 코드를 이해하기 위한 목적 +- 로그인 등 인증 기능에 대한 인수 테스트에서 인증 단계를 잘 적용했는가? +- 인증이 필요한 기능의 인수 테스트에서 적절한 흐름으로 인수 테스트를 작성했는가? +- 테스트에서 인증에 필요한 로직들의 가독성은 좋은지? 재사용성은 좋은지? +- 인증 인수 테스트에 필요한 초기값(회원 정보, 역할 정보 등)은 어떻게 설정했는지? + - 미션 문서 > 힌트에 DataLodaer를 이용하는 방법을 안내중 +- Spring MVC 기능(Interceptor, ArgumentResolver 등)을 잘 활용했는지? - 눈에 띄는 내용만 피드백 후 머지하여 빠르게 다음 단계 진행하도록 가이드 --- -## 2단계: 인증 로직 리팩터링 +## 2단계: 외부 서비스에 의존하는 인수 테스트 -- 기존의 세션 로직과 1단계에서 구현한 토큰 로직에 대한 리팩터링 미션 -- 세션, 토큰 외 추가 방법이 생기더라도 유연하게 구현할 수 있게끔 추상화 가이드 -- **auth 패키지와 member 패키지에 대한 의존 제거** +- 외부 서비스에 대한 의존이 있는 로그인 기능을 잘 구현했는지? +- 해당 기능을 검증할 수 있는 테스트는 외부 서비스에 대한 의존을 어떻게 처리했는지? + - 실제 Github에 요청을 보낸 경우 수행 시간이 오래 걸리고 테스트 구성이 어려우므로 다른 방법으로 대체해 볼 수 있도록 가이드 + - Stubbing을 통해 Github에 대한 요청/응답을 처리하는 객체를 대체한 경우 mock을 이용하기 때문에 스프링 컨테이너 재사용이 어렵고 프로덕션 코드에 직접 의존적이기 때문에 Fake방식으로 제안 + - 테스트 전용 Profile을 이용해 깃헙으로 보내는 요청을 자체적으로 처리할 수 있도록 가이드 + - 테스트용 Controller를 구축해도 좋고 TestContainer나 다른 도구를 사용해도 좋음(리뷰어가 각자 생각에 편한 방식으로 가이드 주기) +- 테스트용 코드를 어디서 어떻게 관리하는게 좋을 지 질문 던지기 --- @@ -24,4 +27,4 @@ - ATDD+TDD 전체 사이클 경험 - Member와 Favorite 관계에 따라서 서비스 로직이 달라질 수 있음 - 직접 참조 vs 간접 참조 - - 둘 중 하나로 했다면 반대편 방법에 대해서 제시하고 고민할 수 있도록 가이드 \ No newline at end of file + - 둘 중 하나로 했다면 반대편 방법에 대해서 제시하고 고민할 수 있도록 가이드