ATDD20 [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. [우아한 Tech] 우아한 ATDD 2021년 3월에 진행된 우아한 테크 세미나에서 류성현님의 '우아한 ATDD' 스트리밍 영상을 보고 정리한 내용입니다. 1. ATDD 란? 인수테스트는 사용자의 시나리오를 기반으로 진행되는 test이다. ATDD(인수 테스트 주도 개발)는 요구사항에 대한 인수 테스트를 이용하여 요구사항을 명확히 하고 모든 팀원이 요구사항에 대한 공통의 이해를 바탕으로 개발을 진행하는 방법. 개발을 하기전 인수 테스트 먼저 작성하여 전체적인 가이드 라인을 잡는다. 이후 그 인수 테스트를 충족시키기 위해 개발을 해 나간다. 인수 테스트를 기반으로 개발을 할 경우 다음과 같은 장점이 있습니다. 기존 인수 테스트 장점 빠른 피드백을 받을 수 있음 회귀 오류를 잡아줄 꾸준한 테스트를 만들 수 있음 기존 기능을 망가뜨리지 않고 새.. Life/컨퍼런스 2022. 3. 10. 이전 1 2 다음