SpringBoot #2.1.1 Test - 소프트웨어 테스팅
- Unit Test
- 각 모듈 단위별로 테스트 수행하는거
- Domain 단위테스트, Repository 단위테스트, etc
- Integration Test
- 외부 (데이터베이스 등)와 연결하는 인터페이스 부분 테스트
- JDBC 테스트 같은 거
- Component Test
- 내부 컴포넌트만 가지고 테스트를 수행
- 외부 컴포넌트로의 영향을 줄여서 테스트 해야 함.
- Contract Test
- End-to-End Test
- 전체 시스템을 테스트
- 외부 요구사항과 목적 달성이 이뤄지는지 확인
단위 테스트
- 프로그램의 기본 단위인 모듈을 테스트 하는 것
- 개별 모듈이 제대로 구현돼, 정해진 기능을 정확히 수행하는지 테스트
- 주로 모듈 내부 구조를 구체적으로 들여다볼 수 있는 화이트박스 테스트(구조적 테스트) 사용
- 상위나 하위 모듈이 미개발된 상태인 경우에는 가상모듈 필요
- 테스트 드라이버
- 상위 모듈 역할
- 필요한 데이터를 인자로 전달하고, 결과를 반환받음
- 스텁 (stub)
- 하위 모듈 역할
- 테스트할 모듈이 호출할 때 인자를 통해 받은 값을 수행하고 반환하는 역할
- SUT (System Under Test)
- 테스트 대상 (테스트 단위)
- 클래스 → 내부에 메소드 존재 → 기능에 대한 테스트 가능
- SUT가 다른 객체를 의존(협력)하는 경우, 테스트 객체를 만들어서 해결해줌 → 가상 모듈 적용
- 테스트 더블
- 의존 구성요소(다른 객체, 모듈)를 사용할 수 없을때 테스트 대상코드와 상호작용하는 객체
- Mock, Test Driver, Stub
- given - when - then
통합테스트 (Integration Test)
- SUT (System Under Test) 와 외부 클래스 모두를 테스트 하는 것
- DataBase, 다른 클래스 등등
End-to-End 테스트
- 통합테스트 + (API / UI / PAYMENT / etc)