NEXT STEP/ATDD, 클린 코드 with Spring 5기6 ATDD, 클린 코드 with Spring 5기 후기 어느덧 ATDD과정 또한 수료하게 되었다. 나 같은 경우 미션 4개를 모두 수행하고, 리뷰어와 의견을 잘 나누면서 나름 성공적으로 과정을 수료한 것 같다. 1. 과정 소개 ATDD, Clean Code with Spring 과정은 스프링 웹 애플리케이션을 개발하는 과정에서 ATDD(인수 테스트 주도 개발) 프로세스를 경험하고 클린코드 작성과 인수 테스트 기반 리팩터링에 대해 고민해보는 과정이다. 위와 같은 순서로 수업이 진행된다. 매주 목요일 7시 30분부터 10시 30분까지 주당 3시간씩 수업이 있었다. 과제 하나당 1주일씩 잡으면 되는데, 목요일날 3시간 수업을 듣고 난 후 그다음 주 목요일 전까지 해당 주차의 미션을 완주하면 된다. (다만 2주차 과제는 2주가 주어진다, 2주라 정말 다행이라 느껴지.. NEXT STEP/ATDD, 클린 코드 with Spring 5기 2022. 8. 15. [ATDD] 인수테스트 리팩터링 이번 시간에는 인수 테스트의 리팩터링 과정에 대하여 학습하였다. 1. 인수테스트 리팩터링 인수테스트에서 Command성 쿼리들을 StatusCode만으로 검증할 수 있을까? 실제로 데이터가 저장되었는지 확인해야 할까? 예를 들어 다음과 같은 지하철 삭제 시나리오가 있다고 해보자. Scenario: 지하철 노선을 제거한다. Given 지하철 노선이 등록되어 있다 When 지하철 노선을 삭제 요청한다. Then 지하철 노선이 삭제된다. 이 시나리오를 확인하는 방식은 다음과 같을 것이다. given: 지하철 노선 등록 request 보내기 when: 지하철 노선 삭제 request 보내기 then: 지하철 노선 삭제를 확인하기 방법 1: 지하철 노선 삭제의 응답 코드로 확인 방법 2: 지하철 노선 조회 req.. NEXT STEP/ATDD, 클린 코드 with Spring 5기 2022. 8. 3. [ATDD] 단위 테스트 이번 글에서는 단위 테스트에 대하여 고민해보는 시간이다. 1. 단위 테스트 보통 단위 테스트라는 단어를 들으면 다음과 같은 그림이 떠오른다. 각각의 테스트가 Production Code의 부분 부분들을 검증하고 있다. 1) 작은 코드 단위를 검증하며 2) 빠르게 수행 가능하고 3) 격리된 방식으로 처리된다면 단위테스트라 할 수 있을 것이다. (여기서 격리된 방식의 의미가 중요한데, 이는 뒤에서 알아보자!) 이쯤 되서 다음 코드를 살펴보자! 위 테스트는 단위 테스트 일까? 아닐까? 2가지 생각이 가능하다. 1) Station과 Line의 기능 모두를 검증하는 테스트는 단위 테스트가 아니라 통합 테스트 아닌가? 2) 여러 객체가 사용되었지만 구간 추가라는 하나의 기능을 검증하는 테스트이니 단위 테스트 아닌가.. NEXT STEP/ATDD, 클린 코드 with Spring 5기 2022. 7. 16. [ATDD] 인수 테스트 격리하기 이번 시간 들었던 재미있었던 내용 중 하나로 인수 테스트의 격리 에 대한 내용이 있었다. 재미있었던 내용이기에 간략하게 정리해본다. 1. 인수 테스트의 격리 1-1) Transactional 의 사용? 사실 내가 떠오른 맨 처음 방식이기도 하다. 어떤 테스트 코드 A, B, C 가 있을 때, 각각의 테스트 코드가 다른 테스트의 영향을 받지 않으려면 DB 또한 각각이 clean한 상태에서 실행되어야 한다. 하지만 우리의 인수테스트에서는 Transactional을 사용할 수가 없다... 아니, 정확히는 사용할 수 없는것은 아니지만 사용해봤자 의미가 없다. 모든 인수테스트에서 공통적으로 상속하는 Acceptance Class는 다음과 같다. @SpringBootTest(webEnvironment = Sprin.. NEXT STEP/ATDD, 클린 코드 with Spring 5기 2022. 7. 16. [ATDD] 인수 테스트 만들기 우선 인스테스트를 만들기 전, 인수 테스트를 블랙 박스 테스트의 성격을 가지고 있다는점을 알아두자. 내부의 동작을 모르는 상태에서 결과만 테스트 하는 것을 블랙 박스 테스트 라고 말한다. 테스트에서는 Production code에 의존하지 않는다. 요청을 통해 기능을 검증하도록 노력하고, 직접 요청을 통해서 초기화 데이터도 만든다. ▶ RestAssured 사용이유 Client 로는 RestAssured 객체를 사용하게 된다. 이는 Client가 Server에 요청을 보내듯, test 환경에서 test 메서드 안에서 Client 역할을 해준다. 1. 인수 테스트 만들기 크게 3가지 로 진행된다. 1) 인수 조건 작성 2) 인수 테스트 작성 3) 기능 구현 우리는 지하철 역을 만든다고 생각해보자. 1-1).. NEXT STEP/ATDD, 클린 코드 with Spring 5기 2022. 7. 8. [ATDD] 인수 테스트 보통 xxx 주도 개발 시리즈에서 가장 유명한 개발 방법론이 TDD (Test Driven Development)이다. 나도 Console 기반의 어플리케이션을 만드는 과정에서는 시간만 된다면 TDD를 거의 의식적으로 수련하려 노력하며, API 기반의 SpringBoot 환경에서도, Service부분이나 Controller에서 TDD를 적용하려 노력한다. 하지만 기존 나의 Spring Test 방식에는 부족한 부분이 많다 생각하였고, 따라서 ATDD(인수 테스트 기반 개발방법론)기반의 SpringBoot 테스트를 학습하려 찾아다니게 되었다 ㅎㅎ 이번 한달동안은 ATDD의 바다에 스스로를 던져보는 시간이 될 것 같다. 1. TDD vs ATDD 둘간에 차이점은 무엇일까? 뭐가 다른 것 일까? TDD나 AT.. NEXT STEP/ATDD, 클린 코드 with Spring 5기 2022. 7. 8. 이전 1 다음