-
Fuzz Test란
의도하지 않은 "무작위" 입력값을 통하여 소프트웨어를 테스트
Fuzz Test를 할 때는 의도하지 않은 입력 값을 자동으로 만들어 테스트한다.
Fuzz Test를 통해 입력값에 따른 무한루프나, 잘못된 입력값 형식에 따른 에러 처리 등을 확인할 수 있다.
Go Lang에서 지원하는 Fuzz Test의 특징은 다음과 같다.
- Fuzz Test의 Test Method Naming은 FuzzXXX ex) FuzzGetProbe
- Fuzz Test는 *_test.go 파일에 정의되어야 한다. ex) handler_fuzz_test.go
- Unit Test는 테스트 당 한 번씩 실행되는 반면, Fuzz Test는 실패하거나 취소할 때까지 계속 반복한다.
Fuzz Test 범위
Application Service Layer CRUD Operation에 대하여 진행한다.
이 경우에 DB Connection, Infrastructure Layer 혹은 다른 Application Service에 대해서는 Mocking을 한다.
TargetService에 대해서 Fuzz Test를 진행하려고 할 때 TargetService가 의존하는 것들을 Mocking 처리한다.
Go Lang에서는 mockery 등을 이용하여 자동으로 Mock Struct를 생성한다.

초록색 테스트 대상, 빨간색 Mocking 대상 Fuzz Test 작성
Fuzz Test를 임의로 4개의 범위로 나누었다.
- Create Input Data : Struct에 자료형에 맞는 입력데이터 주입
- Mocking : 앞서 언급했던 Target을 제외한 다른 요소 Mocking
- Fuzz Test
- Assert : 실행 후 에러나 예상되는 결과에 대한 판단
Fuzz Test 결과
- elapsed: 경과시간
- execs: 퍼즈 대상에 대해 실행된 입력의 총 수
- new interesting: 이 퍼징 실행 중에 생성된 "흥미로운" 입력의 총 수
여기서 interesting이란 입력값으로 인해 메서드에 새로운 동작을 유발했을 경우를 뜻한다.

Fuzz Test 진행 'OSSCA' 카테고리의 다른 글
Spring Boot에 Chaos Monkey 적용하기 (2) 2024.08.18 Litmus Chaos 로컬 개발 환경 설정 (2) 2024.08.16 Github Pull Request 실습하기 (5) 2024.08.03 Litmus Chaos 튜토리얼 따라하기 (1) 2024.08.02