Test

· Spring
앞서 무엇을 테스트할 것인가? 에 대한 정리를 해보았다. 무엇을 테스트 할 것인가? - (1) 테스트를 작성할수록 테스트를 얼마나 자세하게, 어떤 것을 테스트 해야하는 지 등의 고민이 점점 커졌다. 그렇게 레퍼런스를 찾던 중 2019년에 진행된 스프링캠프에서 진행된 좋은 세션을 발견 dongb.tistory.com 이번에는 어떻게 테스트할 것인가에 대해 정리를 이어보겠다. 어떻게 테스트할 것인가? 1. 테스트 가능한 것, 불가능한 것 "테스트 불가능한 영역을 Boundary Layer로 올려서 테스트 가능하도록 변경" 그렇다면 우리는 위의 상황에서 어떻게 코드를 구성해야 테스트 커버리지를 키울 수 있을까? 테스트할 수 없는 메소드를 Boundary 영역까지 끌어올리면 테스트할 수 있는 영역을 많이 확보할..
· Spring
테스트를 작성할수록 테스트를 얼마나 자세하게, 어떤 것을 테스트 해야하는 지 등의 고민이 점점 커졌다. 그렇게 레퍼런스를 찾던 중 2019년에 진행된 스프링캠프에서 진행된 좋은 세션을 발견했다. 개인적으로 정말 좋은 강연이라는 생각이 들었다. 강연을 듣으며 테스트에 대한 기준을 정리해보았다. 테스트로 얻을 수 있는 것 테스트 작성으로 우리는 마음의 안정과 자신감을 가질 수 있다. 그렇다면 이 안정감과 자신감을 누구에게 주어야 하는가? 바로 "현재와 미래의 나"와 "현재와 미래의 동료" 이다. 테스트를 작성할 때 나 뿐만 아니라 같이 일하는 동료를 위해 테스트를 짠다는 생각을 갖고 작성하면 더 좋은 테스트를 작성할 수 있다. 무엇을 테스트할 것인가? 만약 우리에게 로또를 구현하라고 과제가 주어진다면 우리는..
· Spring
좋은 단위 테스트 판별법 (FIRST) 이전 포스팅까지 우리는 단위 테스트가 많은 장점을 갖는다는 것을 배웠다. 그렇다면 무조건 적기만 하면 좋은 것일까? 단위 테스트도 하나의 코드이기 때문에 좋은 테스트와 그렇지 못한 테스트로 나눌 수 있다. 개발자들이 보편적으로 "좋은 단위 테스트" 라고 부르는 테스트는 FIRST 규칙을 따른다고 한다. 좋은 코드를 작성하기 위한 지침서 Clean Code 에서 이 FIRST 규칙에 대해 설명하고 있어 해당 내용을 정리해보겠다. Fast Independent Repeatable Self-Validating Timely Fast 좋은 단위 테스트는 실행이 빨라야한다. 단위 테스트는 내부 코드만 테스트할 때와 외부 자원을 다룰 경우의 실행 시간 차이가 크다. 모든 외부 ..
· Spring
Spring 테스트에 대해 공부하다보면 "단위 테스트가 중요하다!"라는 말을 한번쯤은 듣게 된다. 도대체 단위 테스트가 무엇이길래 그렇게 강조를 하는걸까? 단위 테스트(Unit-Test)는요 단위 테스트 : 하나의 기능 또는 메소드 기준, 독립적으로 진행되는 가장 작은 단위의 테스트 하나의 메서드를 위한 테스트 Mock, Stub 같은 방법을 이용 메서드의 경계를 제어할 수 있으므로 테스트하고자 하는 관심 대상에만 집중해 테스트할 수 있음 단위 테스트, 그래서 왜 필요한걸까? 실무에서는 거의 대부분 단위 테스트를 작성한다. 통합 테스트는 여러 컴포넌트를 연결해 테스트하기 때문에 컴포넌트가 많아질수록 테스트 시간이 늘어난다. 이외에 단위 테스트는 통합 테스트와 비교하여 많은 장점을 갖고 있다. 하나씩 알아..
· Spring
Test의 종류 및 개념 테스트는 테스트를 진행하는 범위에 따라 여러가지 종류가 있다. 인수 테스트: 고객이 명세한 요구사항을 충족했는지 검증하는 테스트, 사용자 혹은 고객이 해당 서비스를 인수할것인지 결정하기 위해 수행 부하 테스트: 퍼포먼스 테스트, 시스템 특정 지점의 반응 시간 지연, 실패하는지 테스트 기능 테스트: 공개된 API의 가장 바깥쪽에서 코드 검증 (Controller 호출, Security, http) 통합 테스트: 여러 작업 단위가 연계된 워크 플로우 테스트 (객체 간, 서비스 간, 시스템 간) 단위 테스트: 하나의 기능 또는 메소드를 기준, 독립적으로 수행하는 가장 작은 단위의 테스트 Reference [Unit-Test] 하고 계신가요? 개발자 단위 테스트
· Spring
AssertJ는 무엇인가? AssertJ assertion을 제공하는 자바 라이브러리 테스트 코드, 에러 메세지의 가독성을 높여줌 JUnit5에서도 AssertJ와 비슷하게 값 검증을 할 수 있는 Assertions의 assert메소드들을 제공한다. 그럼 이 둘 간 차이점이 무엇인지 아래 코드를 먼저 보자. assertEquals(expected, actual); assertThat(actual).isEqualTo(expected); 코드를 보면 알 수 있듯 AssertJ에서 제공하는 assertion의 가독성이 더 높다. AssertJ의 장점을 좀 더 구체적으로 알아보면 다음과 같다. 1. 테스트를 할 때 필요한 거의 모든 메소드를 제공 2. 메소드 체이닝을 지원해서 더 짧고 간결하게 코드 작성 가능 ..
· Spring
JUnit JUnit: 자바 개발자가 가장 많이 사용하는 Testing 기반 프레임워크 JUnit5: JAVA8 이상부터 지원 테스트 작성자를 위한 API, 테스트 실행을 위한 API가 분리되어 있음 이전 버전인 JUnit4와 비교해서 JUnit5는 3가지 모듈로 구성되어 있음 JUnit Platform JVM에서 테스트 프레임워크를 실행하는데 기초를 제공 TestEngine API를 제공해 테스트 프레임워크 개발 가능 JUnit Jupiter TestEngine API 구현체 (JUnit5에서 제공) JUnit5에서 테스트를 작성하고 확장하기 위한 새로운 프로그래밍 모델과 확장 모델의 조합 테스트 코드 작성 모듈: junit-jupiter-api 테스트 실행 모듈: junit-jupiter engine..
dongb
'Test' 태그의 글 목록