반응형 TEST8 TDD(Test-Driven-Development)의 설명 TDD(Test-Driven-Development) 소프트웨어 개발 방법론 중 하나인 TDD에 대해 알아보겠습니다. TDD ? TDD는 Test-Driven-Development의 약자로 테스트 주도 개발 이라고 한다. 작은 단위의 테스트 케이스를 작성하고 이를 통과 하는 코드를 추가하는 단계를 반복하여 구현한다. 짧은 개발 주기의 반복에 의존하는 개발 프로세스이다. 애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First' 개념에 기반을 둔 단순한 설계를 중요시한다. eXtream Programming(XP) 미래에 대한 예측을 최대한 하지 않고, 지속적으로 프로토 타입을 완성하는 애자일 방법론 중 하나이다. 추가 요구사항이 생기더라도, 실시간으로 반영할 수 있다. 단.. TEST/SW 테스팅 이론 2024. 4. 2. 테스트 코드 작성하는 이유와 방법 테스트 코드 작성하기 애플리케이션을 개발하면서 테스트 코드를 통해 개발한 코드를 어떻게 테스트할 수 있는 지 알아보겠습니다. 테스트하기 어려운 영역 1️⃣관측할 때마다 다른 값에 의존하는 코드 현재 날짜/시간, 랜덤값, 전역 변수/함수, 사용자 입력 등 2️⃣ 외부 세계에 영향을 주는 코드 표준 출력, 메시지 발송, 데이터베이스에 기록하기 등 순수함수(pure function) 같은 입력에는 항상 같은 결과 외부 세상과 단절된 형태 테스트하기 쉬운 코드 테스트 코드를 작성하는 이유 개발 과정에서 문제를 미리 발견할 수 있다. 일부러 오류가 발생할 수 있는 테스트 코드를 작성해서 예외처리가 잘 작동하는지 확인 정확히 의도한 비즈니스 로직에 맞춰 테스트 코드를 작성해서 결과값이 잘 나오는지 검토 리팩토링의 .. TEST/SW 테스팅 이론 2024. 3. 29. [Mockito] @WebMvcTest 401/403 에러 처리하기 @WebMvcTest 401/403 에러 처리하기 API 개발 후 테스트를 하는 도중에 발생한 에러를 처리하는 방법에 대해 알아보겠습니다. 테스트 코드 @WebMvcTest(AuthController.class) class AuthControllerTest { @MockBean private AuthService authService; @MockBean private MailService mailService; @MockBean private TokenProvider tokenProvider; @Autowired private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; @Test @DisplayName("회원가입 성공") void su.. TEST/JUnit 2023. 12. 20. JaCoCo를 활용한 테스트 JaCoCo를 활용한 테스트 커버리지를 확인하기 위한 도구 중 가장 보편적으로 사용되는 도구인 JaCoCo에 대해서 알아보겠습니다. JaCoCo란? JaCoCo는 Java Code Coverage 의 약자이다. JUnit 테스트를 통해 애플리케이션의 코드가 얼마나 테스트 되었는지 Line과 Branch를 기준으로 한 커버리지로 리포트한다. JaCoCo는 런타임으로 테스트 케이스를 실행하고 커버리지를 체크하는 방식으로 동작된다. 리포트는 HTML, XML, CSV와 같은 다양한 형식으로 확인이 가능하다. JaCoCo 플러그인 설정 의존성 주입(pom.xml) org.jacoco org.jacoco.cli 0.8.7 플러그인 추가(pom.xml) 1️⃣ 태그 **/ProductServiceImpl.class.. TEST/JaCoCo 2023. 11. 8. 단위 테스트 방법 [part 3 : 리포지토리(Repository)] 적합한 테스트 가이드 레이어(layer)별로 사용하기 적합한 방식의 테스트 가이드에 대해 알아보겠습니다. 그 중에 '리포지토리 객체'를 테스트하는 방법을 알아보겠습니다. 리포지토리 객체의 테스트 리포지토리는 개발자가 구현하는 레이어 중에서 가장 데이터베이스와 가깝다 JpaRepository를 상속받아 기본적인 쿼리 메서드를 사용할 수 있다. 📌 리포지토리 객체의 테스트 코드 작성 시 고려할 사항 findById(), save() 같은 기본 메서드에 대한 테스트는 큰 의미가 없다. 리포지토리의 기본 메서드는 테스트 검증을 마치고 제공된 것이기 때문이다. 데이터베이스의 연동 여부는 테스트 시에 고려해볼 사항이다. 데이터베이스를 연동한 테스트는 테스트 데이터를 제거하는 코드까지 작성하는 것이 좋다. 테스트 데.. TEST/JUnit 2023. 11. 8. 단위 테스트 방법 [part 2 : 서비스(Service)] 적합한 테스트 가이드 레이어(layer)별로 사용하기 적합한 방식의 테스트 가이드에 대해 알아보겠습니다. 그 중에 '서비스 객체'를 테스트하는 방법을 알아보겠습니다. 1️⃣ ProductService 메서드 테스트 class ProductServiceTest { private final ProductRepository productRepository = Mockito.mock(ProductRepository.class); private ProductServiceImpl productService; @BeforeEach public void setUpTest() { productService = new ProductServiceImpl(productRepository); } @Test void getPro.. TEST/JUnit 2023. 11. 8. 단위 테스트 방법 [part 1 : 컨트롤러(Controller)] 적합한 테스트 가이드 레이어(layer)별로 사용하기 적합한 방식의 테스트 가이드에 대해 알아보겠습니다. 그 중에 '컨트롤러 객체'를 테스트하는 방법을 알아보겠습니다. 컨트롤러 객체의 테스트 컨트롤러는 클라이언트로부터 요청을 받아 요청에 걸맞는 서비스 컴포넌트로 요청을 전달한다. 그 결과값을 가공해서 클라이언트에게 응답하는 역할을 수행한다. 즉, 애플리케이션을 구성하는 여러 레이어 중에 가장 웹에 가까이에 있는 모듈이라고 볼 수 있다. ProductController 메서드 package com.springboot.test.controller; import com.springboot.test.data.dto.ChangeProductNameDto; import com.springboot.test.data... TEST/JUnit 2023. 11. 8. JUnit 테스트 코드의 설명과 예제 JUnit 테스트 코드 작성 자바 언어에서 사용되는 대표적인 테스트 프레임워크로서 단위 테스트를 위한 도구를 제공하는 'JUnit'에 대해 알아보겠습니다. JUnit JUnit은 자바 언어에서 사용되는 대표적인 테스트 프레임워크이다. 가장 큰 특징은 어노테이션 기반의 테스트 방식을 지원한다는 것이다. 즉, JUnit을 사용하면 몇 개의 어노테이션만으로 간편하게 테스트 코드를 작성할 수 있다. JUnit을 활용하면 단정문(assert)을 통해 테스트 케이스의 기댓값이 정상적으로 도출되었는지 검토할 수 있다 JUnit의 세부 모듈 1️⃣ JUnit Platform JVM에서 테스트를 시작하기 위한 뼈대 역할을 한다. 테스트를 발견하고 테스트 계획을 생성하는 테스트 엔진(TestEngine)의 인터페이스를 가.. TEST/JUnit 2023. 11. 7. 이전 1 다음