✔️ 단위 테스트 (=Unit Test라고도 많이 함)
개별적인 기능이 의도한 대로 동작하는지 확인하는 테스트
FIRST 원칙
F FAST 빨라야 한다.
I Independent 독립적으로 동작해야 한다.
R Repeatable 어느 상황에서든 예상한 대로 테스트 결과가 나타나야 한다.
S Self Validating 출력 혹은 로그가 아닌 테스트 자체적인 결과가 나타나야 한다.
T Timely 적시에 테스트를 철저하게 작성해야 한다.
테스트 코드의 가독성을 높이기 위한 given - when - then 패턴
given → 준비
when → 실행
then → 결과
자바의 단위테스트 도구로는 JUnit5, AssertJ가 있다.
아래는 given-when-then 패턴으로 JUnit5 테스트 코드를 작성한 예제이다.
@Test
public void saveUserTest() {
// given 저장할 회원의 정보 준비
String name = "김사과";
User saveUser = new User(name);
// when 회원을 저장
long userIdx = userService.save(member);
// then 회원의 정보가 저장되었는지 확인
User findUser = userService.findById(userIdx);
assertThat(saveUser.getName()).isEqualTo(findUser.getName());
}
✔️ 통합 테스트
단위(=Unit) 테스트에서 테스트한 기능들이 모여 상호작용이 정상적으로 동작하는지 확인하는 테스트
모듈의 통합을 확인하는 것이 중점이다.
✔️ 시스템 테스트
개발한 소프트웨어의 기능적, 비기능적인 부분을 확인하는 테스트
사용성, 신뢰성, 견고성, 성능, 보안성, 유지 보수성까지 테스트 범위에 포함된다.
✔️ 인수 테스트
사용자 환경에서 요구사항 요건을 기준으로 부합 여부를 확인하는 테스트
테스트 최종적인 단계로 예를 들어 고객이 요구사항 명세서를 확인하며 테스트를 진행하거나 일부 베타테스터가 출시 전 테스트를 진행하는 과정이라 볼 수 있다.
✔️ 성능 테스트
API 요청이 많은 상황에서 서버가 어떻게 동작하는지 확인하는 테스트
성능테스트의 지표는 처리량과 응답시간이다.
처리량이 다른 시스템과 비교했을 때 낮은 경우 병목 구간이 발생할 수 있으며 성능개선 또는 시스템을 확장하여 해결할 수 있다.
성능테스트의 종류는 스모크 테스트, 스파이크 테스트, 부하테스트, 스트레스 테스트, 내구 테스트, 중단점 테스트가 있다.
성능테스트의 도구로는 nGrinder, K6, Jmeter.. 등이 있다.
- 가용성(Availaility) : 시스템이 서비스를 정상적으로 제공할 수 있는 상태
- 처리량(Throughput) : 초당 처리하는 작업의 수
- 응답시간(Latency) : 시스템이 요청을 받고 응답할 때까지의 시간(대기시간 포함)
🛸🌠 참고자료 🚀🪐
https://www.youtube.com/watch?v=3cTn53dtzJI [10분 테코톡] 베베, 허브의 성능테스트
https://www.youtube.com/watch?v=mIO4Rbe_M74 [10분 테코톡] 제이의 단위 테스트
https://myeongju00.tistory.com/120 [Test] 통합 테스트 VS 단위 테스트
https://osb0728.tistory.com/27 시스템 테스트, 인수 테스트란?