NeXTSTEP22 [TIL] 일일 회고 2022/07/20 요즘 한 일 1. ATDD 학습 정리하기 https://blogshine.tistory.com/473 [ATDD] 인수 테스트 격리하기 이번 시간 들었던 재미있었던 내용 중 하나로 인수 테스트의 격리 에 대한 내용이 있었다. 재미있었던 내용이기에 간략하게 정리해본다. 1. 인수 테스트의 격리 1-1) Transactional 의 사용? 사실 내가 blogshine.tistory.com https://blogshine.tistory.com/474 [ATDD] 단위 테스트 이번 글에서는 단위 테스트에 대하여 고민해보는 시간이다. 1. 단위 테스트 보통 단위 테스트라는 단어를 들으면 다음과 같은 그림이 떠오른다. 각각의 테스트가 Production Code의 부분 부분들을 검 blogshine.tistory... NEXT STEP/회고록 2022. 7. 20. [Review] ATDD 2주차 1차 PR 권승청 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) Section의 생성을 어디서? 예를 들어 다음과 같이 section을 추가하는 메서드가 있다고 해봅시다! LineService 내부 @Transactional public void addSection(Long lineId, SectionRequest sectionRequest) { Station upStation = stationService.findById(sectionRequest.getUpStationId()); Station downStation = stationService.findById(sectionRequest.getDownStationId()); Line line = lineRepository.findById(lineI.. NEXT STEP/Review 정리 2022. 7. 19. [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. [Review] ATDD 1주차 3차 PR 송용주 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 @BeforeEach void init() { upStationId = 지하철역_생성("강남역").jsonPath().getLong("id"); downStationId = 지하철역_생성("건대입구역").jsonPath().getLong("id"); } @Test @DisplayName("정상적으로 역을 생성하여 기존 노선 끝에 구간을 추가한다") public void addSection() { // given Long lineId = 지하철_노선_생성("2호선", "bg-blue-600", upStationId, downStationId, 10).jsonPath().getLong("id"); Long stationId = 지하철역_생성("성수역.. NEXT STEP/Review 정리 2022. 7. 15. [TIL] 일일 회고 2022/07/10 요즘 한 일 1. NextStep ATDD 과정 진행중~ https://blogshine.tistory.com/463 [ATDD] 인수 테스트 보통 xxx 주도 개발 시리즈에서 가장 유명한 개발 방법론이 TDD (Test Driven Development)이다. 나도 Console 기반의 어플리케이션을 만드는 과정에서는 시간만 된다면 TDD를 거의 의식적으로 수련하려 노 blogshine.tistory.com 관심있었던 교육 기관중 하나인 NextStep 에서 진행하는 ATDD 과정에 합류하게 되었다. 평상시 TDD 자체에도 관심이 많아서, 코드스쿼드 에서 프로젝트를 진행할때 조금이라도 테스트코드를 작성하려 노력했었다. 그렇게 어느정도 몇개의 프로젝트에서 혼자 TDD를 진행하다 보니, 테스팅을 하는 방식.. NEXT STEP/회고록 2022. 7. 10. [Review] ATDD 1주차 2차 PR 송용주 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) Dto -> Domain 변환의 장소는? 조금 인수테스트 와는 상관없는 Production Code에 대한 부분이기는 한데... 저의 Line 이라는 Entity 안에는 다음과 같이 edit 이라는 메서드가 구현되어 있습니다. public void edit(Line line) { if (line.getName() != null && !line.getName().isBlank()) { name = line.getName(); } if (line.getColor() != null && !line.getColor().isBlank()) { color = line.getColor(); } if (line.getUpStationId() != nu.. NEXT STEP/Review 정리 2022. 7. 10. [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. [Review] ATDD 1주차 1차 PR NextStep에서의 첫 리뷰다! 송용주 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 리뷰 정리 1-1) Private 메서드는 public 밑으로 원래 내 코드들을 보면 Private 메서드들은 public 아래 뒀었다. 근런데 이번에 왠지 모르게 위에 두고 싶었다? ㅎㅎ 바로 리뷰에서 말씀을 주셔서 다시 원상복귀 시켜야 겠다 ㅎㅎ!! 1-2) 상태코드 검증하기 다만 의문이 있는데... 1. 상태코드 확인은 부차적인것이 아닐까? 사실 인수조건(시나리오)을 봤을때 When 그 지하철역을 삭제하면 Then 그 지하철역 목록 조회 시 생성한 역을 찾을 수 없다 then 절에 해당되는 생성한 역을 찾을수 있는지가 핵심이라 생각되는데, 이때 When에서 수행한 행동의 상태코드를 꼭 검증해야 하나? 라는 생각이.. NEXT STEP/Review 정리 2022. 7. 8. 이전 1 2 다음