뉴런 커버리지 테스트 기법

1. 뉴런 커버리지 테스트 개요

1.1 뉴런 커버리지 테스트란?

  • 뉴런 커버리지 테스트(Neuron Coverage Testing)
  • 신경망 모델의 학습 및 일반화 능력을 평가하기 위한 테스팅 기법
  • 소프트웨어 테스팅에서 사용되는 코드 커버리지 개념을 인공신경망에 적용한 것으로, AI 시스템의 신뢰성을 보장하기 위한 중요한 방법론
  • 정의
    • 일련의 테스트에서 활성화된 뉴런의 수를 신경망의 총 뉴런 수로 나눈 값
      • 활성화: 뉴런의 출력 값이 설정된 임계값보다 높은 상태를 의미
    • 일반적으로 백분율(%)로 표시됨

    • 수식

        뉴런 커버리지(%) = (활성화된 뉴런의 수 / 총 뉴런 수) × 100
      

1.2 뉴런 커버리지 테스트의 작동 원리

  1. 활성화 측정
    • 테스트 입력을 신경망에 통과
    • 각 뉴런의 출력 값이 임계값(일반적으로 0)보다 높은지 확인
  2. 커버리지 계산
    • 활성화된 뉴런의 수를 총 뉴런 수로 나누어 커버리지 비율 계산
  3. 테스트 케이스 생성
    • 낮은 커버리지를 보이는 영역을 타겟으로 하여 추가 테스트 케이스를 생성
    • 신경망의 더 많은 부분이 테스트될 수 있도록 함

1.3 뉴런 커버리지 테스트의 목적과 중요성

  • 모델 품질 평가
    • 뉴런 커버리지는 DNN(Deep Neural Network) 모델이 얼마나 철저하게 테스트되었는지를 측정하는 지표로 사용됨
  • 취약점 탐지
    • 낮은 커버리지를 보이는 영역은 잠재적인 취약점이 될 수 있음
    • 이를 식별하여 모델의 신뢰성을 높일 수 있음
  • 테스트 케이스 최적화
    • 커버리지 정보를 바탕으로 효과적인 테스트 케이스를 설계하여 테스팅 효율을 높일 수 있음

1.4 뉴런 커버리지 테스트의 한계와 논쟁점

  • 최근 연구에 따르면, 뉴런 커버리지가 딥러닝 네트워크의 테스트 품질을 측정하는 데 있어 그 유효성에 대한 의문이 제기되고 있음

1.5 뉴런 커버리지 테스트 vs 메타모픽 테스트

  • 뉴런 커버리지 테스트가 신경망 내부의 활성화 상태를 측정하는 화이트박스 테스팅 접근법이라면,
  • 메타모픽 테스트는 입력과 출력 간의 관계에 초점을 맞춘 블랙박스 테스팅 접근법
  • 두 방법은 상호 보완적으로 사용될 수 있음
  • 화이트박스 테스팅 접근법
    • 모든 명령문 뿐만아니라 모든 분기문, 모든 조건, 모든 실행 경로 등 다양한 기준이 준비됨
      1. 준비된 기준에 맞춰 테스트 데이터 생성
      2. 어떤 테스트 데이터를 사용했을 때 얼마만큼의 소프트웨어 범위를 커버했는지 측정
      3. 부족한 테스트 데이터 추가
    • 커버리지 테스트: 커버리지가 높아지도록 테스트 데이터를 작성하는 테스트 기법
    • 커버리지: 얼마만큼의 범위를 커버했는가를 나타내는 지표

  • 블랙박스 테스팅 접근법
    • 소프트웨어의 내부를 파악하지 않은 채로 소프트웨어가 요구사항을 만족하고 있는지 테스트
    • 동치 분할을 이용한 테스트가 대표적인 예
      • 동치 분할
        • 입력 데이터를 유효한 값과 유효하지 않은 값의 그룹으로 나누어,
        • 각 그룹에서 대표 값만 테스트함으로써 테스트 케이스의 수를 효율적으로 줄이는 방법
        • 소프트웨어 내부 구현을 알 필요 없이 입력 데이터의 특성에 기반하여 테스트를 설계하기 때문에 블랙박스 테스팅의 전형적인 예시가 됨