ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Fuzz Test
    OSSCA 2024. 11. 26. 11:51

    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
Designed by Tistory.