본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

메타모픽 테스트(Metamorphic Testing)는 개별 입력의 정답을 몰라도, 입력을 정해진 방식으로 바꾸었을 때 출력들 사이에 반드시 성립해야 하는 관계(메타모픽 관계)가 지켜지는지 확인해 결함을 찾는 소프트웨어 테스트 기법이다.

메타모픽 테스트는 1998년 T. Y. Chen 등이 제안했다. 일반 테스트는 입력마다 기대 결과를 정해 두고 실제 결과와 비교한다. 그런데 과학 계산, 검색 엔진, 컴파일러, 그리고 특히 인공지능 모델처럼 올바른 출력을 미리 알 수 없거나 확인하는 비용이 매우 큰 프로그램이 있다. 메타모픽 테스트는 하나의 출력이 맞는지를 묻는 대신, 여러 실행 결과가 서로 일관된지를 묻는 방식으로 이 문제를 피한다.

등장 배경: 테스트 오라클 문제

편집 원본 편집

테스트 오라클은 테스트 결과가 맞는지 판정하는 기준이다. 테스트 오라클 문제(Test Oracle Problem)는 이 기준을 마련할 수 없거나 비용이 너무 커서 테스트 결과의 옳고 그름을 판정하지 못하는 상황을 말한다.

  • 정답을 계산할 수 없다: 복잡한 수치 해석, 시뮬레이션의 결과는 손으로 검증할 수 없다.
  • 정답이 하나가 아니다: 검색 결과 순위, 기계 번역, 생성형 AI 의 답에는 유일한 정답이 없다.
  • 입력 공간이 너무 크다: 이미지·음성·센서 입력은 모든 경우의 기대 결과를 사람이 정해 둘 수 없다.
  • AI 모델의 특성: 딥러닝 모델은 규칙을 사람이 작성한 것이 아니라 데이터에서 학습했다. 명세가 없으니 '맞는 동작'을 코드 수준에서 정의하기 어렵다.

이처럼 오라클이 없을 때도 입력 변환과 출력 변화 사이의 관계는 알 수 있는 경우가 많다는 점에서 메타모픽 테스트가 나왔다.

핵심 구성 요소

편집 원본 편집
요소 내용
메타모픽 관계(MR, Metamorphic Relation) 입력을 어떻게 바꾸면 출력이 어떻게 되어야 하는지에 대한 필요조건. 입력 변환 규칙과 출력 관계로 이루어진다
원천 테스트 케이스(Source Test Case) 처음 실행하는 입력. 기존 테스트, 무작위 생성, 실제 데이터에서 얻는다
후속 테스트 케이스(Follow-up Test Case) 원천 입력에 메타모픽 관계의 변환을 적용해 만든 입력
관계 검증기 원천 출력과 후속 출력이 메타모픽 관계를 만족하는지 판정한다. 위반이면 결함이다

메타모픽 관계의 예

편집 원본 편집
대상 입력 변환 기대하는 출력 관계
사인 함수 x → π − x sin(x) = sin(π − x)
최단 경로 그래프에서 출발점과 도착점을 바꾼다(무방향) 최단 거리가 같다
정렬 입력 순서를 섞는다 정렬 결과가 같다
검색 엔진 검색 조건을 하나 더 붙인다(AND) 결과가 원래 결과의 부분집합이다
이미지 분류 밝기를 조금 바꾸거나 작은 회전을 준다 분류 결과가 같다
자율주행 조향 모델 비·안개 효과를 입힌다 예측 조향각이 크게 달라지지 않는다
감성 분석 문장 속 사람 이름을 다른 이름으로 바꾼다 감성 판정이 같다(편향 점검)
  1. 메타모픽 관계 식별: 대상의 도메인 지식과 명세에서 입력 변환과 출력 관계를 찾는다. 테스트 품질을 가장 크게 좌우하는 단계다.
  2. 원천 테스트 케이스 생성: 기존 테스트 데이터나 무작위 입력으로 원천 입력을 준비한다.
  3. 후속 테스트 케이스 생성: 원천 입력에 메타모픽 관계의 변환을 적용한다.
  4. 실행: 원천 입력과 후속 입력으로 각각 프로그램을 실행한다.
  5. 관계 검증: 두 출력이 메타모픽 관계를 만족하는지 확인한다.
  6. 결함 분석과 개선: 위반된 경우를 분석해 결함을 고치고, 관계를 보완하거나 새 관계를 더한다.

전통적 테스트와의 차이

편집 원본 편집
구분 전통적 테스트 메타모픽 테스트
판정 기준 입력별 기대 결과(테스트 오라클) 여러 실행 결과 사이의 관계(메타모픽 관계)
오라클 필요성 입력마다 정답이 있어야 한다 개별 정답이 없어도 된다
테스트 케이스 입력 + 기대 결과 원천 입력 + 변환 규칙 → 후속 입력
테스트 확장 기대 결과를 일일이 작성해야 해서 비용이 크다 변환 규칙으로 후속 입력을 자동으로 대량 생성한다
결함 검출 범위 기대 결과와 다른 모든 결함 관계를 위반하는 결함만. 관계를 만족하는 오답은 놓친다
적합한 대상 명세가 분명한 일반 업무 소프트웨어 AI 모델, 과학 계산, 검색, 컴파일러, 시뮬레이션
주요 기법 블랙박스 테스트(동등 분할, 경계값 분석), 화이트박스 테스트(커버리지) 블랙박스 성격. 다른 기법과 함께 쓴다

메타모픽 테스트는 전통적 테스트를 대신하는 것이 아니라, 오라클이 없는 영역을 보완한다. 퍼즈 테스트의 무작위 입력 생성과 결합해 쓰기도 한다.

다른 AI 소프트웨어 테스트 기법

편집 원본 편집

인공지능 소프트웨어의 품질 보증에는 메타모픽 테스트와 함께 다음 기법이 쓰인다.

기법 개념 판정 기준 한계
메타모픽 테스트 입력 변환 전후 출력의 관계로 결함을 찾는다 메타모픽 관계 위반 여부 좋은 관계를 찾는 데 도메인 지식이 필요하다
뉴런 커버리지 테스트(Neuron Coverage Test) 테스트 입력이 신경망의 뉴런을 얼마나 활성화했는지로 테스트 충분성을 잰다. 코드 커버리지의 신경망 판이다. 2017년 DeepXplore 에서 제안되었다 활성값이 임계값을 넘은 뉴런 수 ÷ 전체 뉴런 수. 커버리지를 높이는 입력을 생성해 새로운 동작을 찾는다 커버리지가 높다고 모델이 옳다는 보장은 없고, 결함 검출력과의 상관이 약하다는 연구도 있다
안전 반경 최대화 테스트 입력 주변에서 출력이 바뀌지 않는 최대 범위(안전 반경, 강건 반경)를 찾아 모델의 강건성을 평가한다 입력을 얼마만큼 바꾸어도 분류가 유지되는가. 반경이 작으면 작은 교란에도 오분류되어 적대적 공격에 취약하다 입력 차원이 높으면 정확한 반경 계산이 어렵고 근사에 의존한다
  • 세 기법은 서로 다른 질문에 답한다. 메타모픽 테스트는 동작이 일관된가, 뉴런 커버리지는 충분히 다양한 내부 동작을 시험했는가, 안전 반경은 작은 변화에 견디는가를 본다.
  • 결과는 인공지능 신뢰성 확보와 설명 가능한 인공지능의 근거 자료로 쓰인다.