💭 오늘의 학습 전략
# 테스팅
◼️ 기능 테스트
◼️ 통합 테스트
◻️ 슬라이스 테스트
◼️ 단위 테스트
# 단위 테스트
◻️ F.I.R.S.T 원칙
◻️ Given-When-Then 표현 스타일
◼️Assertion
◼️JUnit
◾다양한 Assertion 메서드
◽테스트 케이스 실행 전, 후 처리
@BeforeEach, @BeforeAll, @AfterEach, @AfterAll
◾실습
◻️ Hamcrest
◽ Matcher
◽ JUnit Assertion 메서드와의 차이
# 슬라이스 테스트
◻️ API 계층 테스트
◽ @SpringBootTest
◽ @AutoConfigureMockMvc
◽ MockMvc (perform())
◽ ResultActions 객체를 통한 검증
◻️ 데이터 액세스 계층 테스트
🌼 학습한 것들
◾ 테스팅
▪️ 기능 테스트: 사용자 입장에서 올바른 동작 확인
- 프론트 측에서 가볍게, QA
- DB, API 툴, 외부 연동 등 많은 연관 대상
▪️ 통합 테스트: API -> 서비스 -> 데이터 액세스 -> DB 올바른 동작 확인
- 클라이언트 툴 없이 주로 개발자(팀)이 주체
- 여러 계층, DB 등 많은 연관 대상
▪️ 슬라이스 테스트: Mock을 통한 계층별 테스트
- HTTP 요청, 외부 서비스 연동 필요하기도
--
▪️ 단위 테스트: 비즈니스 로직의 클래스를 독립적으로 테스트 (메서드 단위로)
- DB 연동 시 테스트 전후 상태 동일하게 유지되어야 함
- 최대한 독립적으로, 최대한 작게
- HTTP요청 매번 -> 비생산적
- 동작을 빠르게 확인
- 버그 미리 찾기
◾ 단위 테스트를 위한 F.I.R.S.T 원칙
▪️ Fast 빠르게
▪️ Independent 독립적으로
- 타 기능 실행 여부/순서와 상관 없이 정상 실행
▪️ Repeatable 반복 가능하도록
- 어떤 환경에서도 반복 실행 가능
▪️ Self-validating 자체 검증 되도록
- 자체 검증 결과 (성공 or 실패)
▪️ Timely 시기 적절하게
- 기능 구현 직전 작성 -> 기능과 함께 단계적으로 업그레이드
◾ given-when-then (BDD)
▪️ given: 테스트 준비 과정. 전제 조건 및 입력값 등
▪️ when: 테스트 대상 동작 (호출)
▪️ then: 동작 결과 검증(Assertion: 테스트 케이스 예상 결과 값이 true여야 한다)
◾ JUnit을 사용한 단위 테스트
▪️ Java 애플리케이션 테스트를 위한 오픈 소스 테스트 프레임워크
▪️ 기본 구조
public class JUnitDefaultStructure {
@Test
public void test() {
...
}
}
▪️ Assertion 메서드
- assertionEquals(expected, actual)
- assertNotNull(target, "fali message")
- assertThrows(Exception.class, () -> {})
등등 ...
◾ 테스트 케이스 실행 전 후 처리
▪️ @ BeforeEach / AfterEach : 테스트 케이스 실행마다 직전/직후에 실행
▪️ @ BeforeAll / AfterAll: 테스트 케이스 클래스 한 번에 실행했을 때 딱 한 번만 실행 (static)
◾ Assumption
▪️ 조건부 테스트
▪️ assumeTrue(조건)
=> 조건이 true면 아래 나머지 로직 실행
💨 하루를 마치며
1. 나는 테스트 코드를 작성해본 일이 거의 없다. 아주 없다고 해도 무방하다. 그래서 걱정되었는데 책 보면서 야금야금 봐왔던 개념이 나와서 이해하는 게 아직까지는 어렵지 않았다.
2. 슬라이스 테스트를 먼저 했어야 하는데 Hamcrest를 먼저 봤다. 밥먹고 좀 봐둬야겠따.
2-1. MockMvcRequestBuilders랑 hamcrest 등등 import가 시원치 않다,,,
3. 슬라이스 테스트는 아직 다 학습하진 않았지만 왜인지 과제하기가 겁난다. 헉 내일이 걱정된다.
4. 요즘 무슨 일인지 내 자신에 대한 회의감에 빠져 앓다 나왔다. 블로그 작성에도 의욕이 없었다. 사실 아직 밀린 과제와 학습이 조금 남았다 (거의 수습하긴 했다만........) 다 그만하고 싶고 한 번 놓치고 나니 계속 밀려가는 걸 보면서도 아무것도 하지 않는 자신이 한심했따...🥲 새해인데... 남은 수습을 다 마치고 얼른 컨디션을 되찾기를ㅠ_ㅠ 나만 할 수 있는 일...
'공부기록 > TIL' 카테고리의 다른 글
2023/01/05 TIL | Mockito, TDD (0) | 2023.01.05 |
---|---|
2023/01/14 TIL | 테스팅 (2) 슬라이스 테스트 (0) | 2023.01.04 |
2022/12/28 TIL | JPA (2) 연관 관계 매핑 (2) | 2022.12.29 |
2022/12/27 TIL | JPA (1) JPA, Entity 매핑 (0) | 2022.12.29 |
2022/12/23 TIL | Spring Data JDBC (2) (0) | 2022.12.23 |
댓글