단위·통합·시스템·인수와 기능·비기능 시험
주문서비스의 할인 계산식 하나가 잘못됐다고 하자. 전체 시스템을 띄우고 실제 DB·메시지큐·결제샌드박스까지 연결한 뒤에야 이 오류를 확인한다면 원인은 작지만 발견비용은 크다. 반대로 함수 단위 시험만 모두 통과했다고 실제 주문–결제–재고 흐름이 안전하다고 말할 수도 없다.
1. 모든 결함을 시스템 시험에서 찾으면 되지 않을까
주문서비스의 할인 계산식 하나가 잘못됐다고 하자. 전체 시스템을 띄우고 실제 DB·메시지큐·결제샌드박스까지 연결한 뒤에야 이 오류를 확인한다면 원인은 작지만 발견비용은 크다. 반대로 함수 단위 시험만 모두 통과했다고 실제 주문–결제–재고 흐름이 안전하다고 말할 수도 없다.
이번 절은 단위·통합·시스템·인수라는 시험수준과 기능·성능·보안·회복성 같은 시험유형을 두 축으로 나누고, 위험에 가장 가까운 수준에서 빠르게 증거를 얻은 뒤 필요한 현실성을 상위수준에서 보완하는 방법을 다룬다. 기대결과를 일일이 만들기 어려운 경우에는 여러 실행의 관계를 검사하는 방법도 배운다.
기획·계획·분석·설계가 시험수준 선택의 입력이다
테스트 기획·계획·분석·설계는 품질위험을 테스트 목적·범위·환경·조건·케이스로 바꾸었다. 이번 절은 그 테스트조건을 어느 결합수준에서 어떤 오라클로 실행할지를 선택한다. 앞 절에서 정한 위험·목적·조건을 이번 절의 실행 대상으로 이어 쓴다.
이 절의 담당 경계
시험수준은 검증대상의 결합 범위에 따라 단위·통합·시스템·인수로 나누고, 시험유형은 기능·성능·보안·회복성처럼 확인하려는 품질질문에 따라 나누는 서로 다른 분류축이다.
이 절은 학습을 위해 통합시험을 하나의 범주로 묶는다. ISTQB CTFL v4.0.1 §2.2.1은 단위(구성요소)·구성요소 통합·시스템·시스템 통합·인수의 다섯 수준을 구별한다. 내부 주문 모듈과 저장 모듈의 연결은 구성요소 통합, 주문시스템과 외부 결제서비스의 연결은 시스템 통합의 질문이다. 실제 계획에는 어느 경계를 연결했는지 명시한다. T1
하나의 시스템시험도 기능시험일 수 있고 성능시험일 수 있다. “통합시험=비기능시험”처럼 수준과 유형을 같은 축으로 합치지 않는다. 테스트 오라클은 관찰한 결과가 정한 기대와 맞는지 판정하는 근거·방법이다. 요구한 값, 업무 불변조건, 승인된 참조 결과나 실행 사이의 관계가 오라클의 근거가 될 수 있다.M1
수준과 유형은 두 축으로 본다
| 결합 범위 ↓ / 품질질문 → | 기능 | 성능 | 보안 | 회복성 |
|---|---|---|---|---|
| 인수 | 수용조건 | 필요한 조건 | 필요한 조건 | 필요한 조건 |
| 시스템 | 끝단 동작 | 필요한 조건 | 필요한 조건 | 필요한 조건 |
| 통합 | 경계 계약 | 필요한 조건 | 필요한 조건 | 필요한 조건 |
| 단위 | 작은 규칙 | 일부 속성 | 일부 속성 | 이 도식에는 제시하지 않음 |
모든 조합이 같은 가치나 비용을 갖는 것은 아니다. 위험과 관찰가능성에 맞춰 필요한 조합만 선택한다.
2. 단위시험은 작은 책임의 규칙을 빠르게 고립한다
단위시험은 함수·클래스·모듈처럼 작은 책임의 입력과 출력을 직접 관찰한다. 외부 DB·네트워크·시간을 가능한 한 통제하면 실패 시 원인범위가 좁고 반복비용은 작다.
TL-1: 할인 계산 경계는 단위수준에서 바로잡는다
가상 규칙이 “주문금액이 100,000원 이상이면 10% 할인”이라면 99,999, 100,000, 100,001을 직접 넣어 경계를 확인한다. DB와 결제망을 띄우지 않아도 비교연산과 할인계산의 핵심 규칙을 빠르게 판정할 수 있다.
단위시험의 많은 통과를 시스템 정상으로 확대하지 않는다
주문모듈·결제모듈이 각각 자기 입력에서 통과해도 둘이 주고받는 금액단위·타임아웃·재시도·트랜잭션 계약이 어긋날 수 있다. 단위수준의 증거는 해당 책임의 경계까지만 말한다.
3. 통합시험은 경계 사이의 계약을 검증한다
통합시험은 둘 이상의 실제 구성요소를 연결해 데이터형식, 호출순서, 트랜잭션, 오류전파, 타임아웃 같은 경계 계약을 확인한다. 내부 구현보다 “함께 붙였을 때 계약이 성립하는가”가 핵심이다.
TL-2: 각자 통과하지만 함께 실패하는 예
두 구성요소가 모두 미국 달러(USD)를 사용하며 1달러 = 100센트라고 하자. 주문서비스는 100달러를 최소 화폐단위인 센트로 표현하여 amountMinor=10000, currency=USD를 보낸다. 결제어댑터가 이를 달러로 잘못 해석하면 기대한 100달러가 아니라 10,000달러가 되어 청구금액이 100배가 된다. 서로 다른 통화의 환율 문제가 아니라 같은 통화에서 단위 계약을 어긴 자체 예제다.
통합시험은 전송값 10,000센트가 정확히 100달러로 해석되는지 양쪽 경계에서 확인한다. 통화·단위가 빠진 입력은 승인하지 않고, 금액의 정수 범위·반올림·오류응답도 계약에 명시한다. 이 예제는 실제 결제 실행이나 금융기관의 승인 결과가 아니다.
4. 시스템시험은 실제 배치 경계에서 전체 품질을 본다
시스템시험은 배포 가능한 전체 시스템을 대상으로 끝단 흐름, 실제 설정, 저장소, 네트워크와 주요 외부의존성의 상호작용을 본다. 사용자 요청이 들어와 최종 상태가 만들어질 때까지 여러 경계의 조합오류를 관찰할 수 있다.
네 시험수준의 대표 질문
| 수준 | 대표 대상 | 주된 질문 |
|---|---|---|
| 단위 | 함수·모듈 | 작은 규칙이 맞는가 |
| 통합 | 서비스·DB·외부경계 | 계약이 함께 맞는가 |
| 시스템 | 배포 가능한 전체 | 끝단 흐름과 품질이 맞는가 |
| 인수 | 수용자 업무·계약 | 받아들일 조건을 충족하는가 |
5. 인수시험은 ‘만들어진 것’과 ‘받아들일 수 있는 것’을 연결한다
인수시험은 사용자·발주자·운영자 등 수용자가 합의한 업무·계약 기준을 만족하는지 확인한다. 내부 코드경로를 많이 실행하는 것보다 핵심 업무 시나리오와 수용조건이 판정 가능한지가 중요하다.
데모 성공 하나를 인수로 바꾸지 않는다
정상 주문 한 번이 성공했다고 인수조건 전체가 충족된 것은 아니다. 권한, 환불, 장애복구, 데이터이관, 운영준비 등 합의된 수용조건이 있다면 각각 증거가 필요하다.
6. 기능시험은 ‘무엇을 해야 하는가’를 판정한다
기능시험은 요구된 입력·출력·상태전이·업무규칙을 오라클로 삼는다. 같은 기능을 단위·통합·시스템·인수 어느 수준에서도 시험할 수 있으며 수준이 높아질수록 실제 경계와 환경이 더 많이 포함된다.
7. 비기능시험은 품질특성마다 다른 관찰방법이 필요하다
성능은 지연·처리량·자원, 보안은 인증·인가·데이터보호·공격면, 회복성은 장애주입 뒤 복구상태·중복효과·데이터일관성처럼 서로 다른 자극과 오라클을 요구한다. “비기능”이라는 한 이름으로 하나의 시험방법을 가정하지 않는다.
NF-1: 평균 80 ms만으로 성능을 통과시키지 않는다
가상 요청 100건 중 95건이 50 ms, 5건이 650 ms라면 평균은 (95×50 + 5×650)/100 = 80ms다. 평균만 보면 빨라 보이지만 5건은 큰 지연을 가진다. 요구가 “모든 요청 500ms 이하”인지 “95%가 100ms 이하”인지에 따라 오라클이 달라진다.
보안시험은 ‘공격 문자열 목록’보다 보호해야 할 경계를 먼저 본다
일반 사용자가 관리자 API를 호출하면 거부응답뿐 아니라 데이터 상태가 변하지 않았는지 확인한다. 인증·인가·감사로그·비밀노출 등 요구한 보호속성에 맞는 오라클을 정한다.
NF-2: 권한 오라클은 상태변경까지 본다
일반계정이 관리자 전용 주문취소 API를 호출해 HTTP 403을 받았다고 하자. DB의 주문상태가 이미 취소로 바뀌었다면 보안 요구는 실패다. 응답코드와 보호대상 상태를 함께 본다.
회복성시험은 장애가 아니라 복구 완료상태를 검증한다
네트워크 끊김·프로세스 재시작·외부서비스 지연을 주입한 뒤 서비스가 응답하는지만 보지 않는다. 데이터 중복·유실, 재처리, 큐 적체, 사용자에게 보인 최종상태를 확인한다.
NF-3: 타임아웃 뒤 재시도는 중복효과를 만들 수 있다
결제는 성공했지만 응답이 유실되어 호출자가 같은 요청을 다시 보냈다고 하자. 회복성 오라클은 두 번째 호출의 HTTP 성공 여부보다 최종 청구가 한 번인지, 주문상태가 일관적인지, 재시도 식별자가 추적되는지를 본다.
8. 가장 싼 수준이 아니라 ‘충분한 증거를 주는 가장 가까운 수준’을 고른다
작은 규칙은 단위수준이 유리하지만 실제 네트워크 지연·DB 트랜잭션·권한설정은 상위수준이 필요하다. 같은 위험을 여러 수준에서 중복시험하기보다 하위수준에서 빠르게 막고 상위수준에서는 통합·현실성 위험을 보완한다.
시험수준 선택의 네 기준
| 기준 | 질문 |
|---|---|
| 원인격리 | 실패 시 어디가 틀렸는지 좁힐 수 있는가 |
| 현실성 | 필요한 실제 경계·환경이 포함되는가 |
| 비용 | 반복시간·환경·데이터 준비비용은 얼마인가 |
| 오라클 | 기대결과를 명확히 판정할 수 있는가 |
테스트 피라미드를 고정 비율로 외우지 않는다
단위시험이 많고 시스템시험이 적다는 일반적 방향을 참고할 수 있지만 모든 시스템에 같은 비율을 강제하지 않는다. 하드웨어·레거시·규제·외부의존성에 따라 필요한 증거구성이 달라진다.
확장: 정답을 만들기 어려울 때 메타모픽 관계로 검사한다
신규 영상마다 정확한 객체 위치를 표시하거나, 긴 생성 답변마다 유일한 정답 문장을 작성하기는 어렵다. 시험을 실행할 수 있어도 결과를 올바르게 판정할 근거가 없거나 그 비용이 매우 큰 테스트 오라클 문제가 생긴다. 사람이 판단하기 어렵다는 사실을 “무엇을 출력해도 성공”으로 바꾸지 않는다.
메타모픽 테스트(Metamorphic Testing)는 여러 관련 입력과 그 실행 결과 사이에 성립해야 할 관계를 확인하는 테스트 방법이다. 원래 입력인 원천 테스트에서 조건에 맞게 입력을 바꾼 후속 테스트를 만들고, 두 실행의 결과를 메타모픽 관계(MR)에 대조한다. MR은 출력이 꼭 같아야 한다는 규칙에 한정되지 않고 예상된 변화·순서·포함 관계 등을 표현할 수 있다.M1
예를 들어 평균을 구하는 프로그램에 같은 숫자들을 다른 순서로 넣어도 평균은 같아야 한다. 각 결과의 정답을 미리 몰라도 두 값이 다르면 적어도 하나는 정한 평균의 성질과 맞지 않는다. 다만 두 값이 같다고 둘 다 옳은 것은 아니다. 항상 0을 반환하는 프로그램도 그 관계 하나는 통과할 수 있다.
먼저 관계가 성립하는 조건을 쓴다
P는 시험할 프로그램, x는 원천 입력, T(x)는 변환한 입력이라고 하자. 검사할 관계는 R(x,T(x),P(x),P(T(x)))로 적을 수 있다. 이는 실행 코드를 뜻하는 것이 아니라 원천·변환·결과를 어느 규칙으로 비교하는지 표시한 수식이다. 변환 전제와 출력 관계를 함께 작성해야 한다.
| 관계 후보 | 성립하도록 정한 전제 | 비교할 결과 | 잘못 일반화한 경우 |
|---|---|---|---|
| 숫자 목록 순서 바꾸기 | 비어 있지 않은 같은 수치의 산술평균, 가중치·순서 의미 없음 | 평균이 같음 | 최근 값에 더 큰 가중치를 주는 시계열에 그대로 적용 |
| 모든 값에 같은 c 더하기 | 산술평균, 자료형 범위·결측 처리 고정 | 새 평균=기존 평균+c | 상한 잘림·구간별 규칙을 무시 |
| 모든 값에 같은 양수 a 곱하기 | 같은 산술평균, 표현 범위·수치 오차 조건 유지 | 새 평균=a×기존 평균 | 통화·단위 변환과 임계값을 따로 바꾸지 않음 |
| 영상의 배경만 제한적으로 변경 | 해당 과제의 정답과 중요한 증거를 보존한다고 검토한 범위 | 정한 범주·위치 관계 유지 | 6을 180도 돌려 9가 되어도 같은 범주라고 요구 |
영상·언어 변환은 수학적으로 정확한 항등식과 다를 수 있다. 허용한 조명·회전·표현 범위에서 무엇을 불변으로 요구하는지 과제 담당자와 확인한다. 도로 표지판을 뒤집거나 부정어를 빼는 변환처럼 의미를 바꾼 입력을 같은 정답으로 묶으면 올바른 시스템을 실패로 판정할 수 있다. MR 도출에는 분야 지식이 필요하며 자동 생성된 관계도 그대로 승인하지 않는다.M2
앞 할인 TL-1에 “금액을 두 배로 하면 최종 지급액도 두 배”를 무조건 적용할 수 없다. 60,000원의 할인 후 금액은 60,000원인데, 120,000원은 10% 할인 후 108,000원이다. 두 배인 120,000원과 다르지만 할인 규칙의 오류가 아니라 관계의 적용 조건을 잘못 정한 것이다.
직접 계산 MT-A1: 틀린 구현이 어떤 관계에서 드러나는가
시험 대상은 비어 있지 않은 유한 실수 목록의 산술평균이며, 결측값·가중치·잘림·상태 변화가 없다고 가정한다. 정확한 수학 계산을 기준으로 하고 실제 부동소수점 구현의 허용오차는 별도로 정한다. 작은 값으로 정답도 계산해 관계의 의미를 연습한다. 실제 프로그램을 실행한 결과가 아니라 자체 결함 모형이다.
원천 입력은 (2,4,8)이다. 정확한 평균은 14/3≈4.6667이다. 결함 모형 G는 모든 원소 대신 첫 값과 마지막 값만 평균을 내므로 (2+8)/2=5를 낸다.
| 원천에서 바꾼 입력 | 올바른 관계 | G의 후속 결과 | 원천 G=5와의 판정 |
|---|---|---|---|
순서를 (4,2,8)로 바꿈 | 값의 구성이 같으므로 결과 같음 | (4+8)/2=6 | 6≠5, 관계 위반 |
각 값에 3을 더한 (5,7,11) | 후속 결과=원천 결과+3 | (5+11)/2=8 | 8=5+3, 관계 통과 |
각 값을 두 배로 한 (4,8,16) | 후속 결과=원천 결과×2 | (4+16)/2=10 | 10=5×2, 관계 통과 |
G는 잘못된 평균이지만 뒤의 두 관계는 통과한다. 따라서 변환 수만 늘리지 말고 서로 다른 결함을 드러내는 관계와 알려진 정답 사례를 조합한다. 단순 순서 변경도 (8,4,2)처럼 양끝 값의 자리만 바뀌면 G의 값이 그대로 5여서 이 결함을 찾지 못한다. 관계의 이름뿐 아니라 실제 원천·후속 입력 선택도 중요하다.
항상 0을 내는 H는 순서 관계를 통과하지만 +3 관계에서는 후속도 0이어서 기대한 3과 다르다. 이 반례는 관계 통과가 정확성의 충분조건이 아님을 보여 준다. 모든 가능한 결함을 발견한 비율이나 실제 AI 모델 정확도를 계산한 사례가 아니다.
실행 절차를 재현 가능한 한 기록으로 묶는다
화살표의 방향과 조건을 따라 연결을 읽습니다.
먼저 요구·결함위험·전제에서 MR을 선택·승인한다. 선은 입력·결과의 의존 관계이며 원천·후속 실행의 병렬 실행을 요구하는 것이 아니다. 같은 판본·설정·관련 상태를 유지하고 관계 통과를 정확성 전체로 바꾸지 않는다.
| 관계 대조 뒤 남길 상태 | 다음에 확인할 것 |
|---|---|
| 통과 / 위반 / 부적용 / 실행 미완료 | 서로 다른 상태로 기록 |
| 관계·변환·환경·구현의 원인 | 구별해 분석하고 알려진 위반은 회귀 사례로 보존 |
원천·후속 실행은 같은 시험 대상 판본·설정·관련 상태를 사용한다. 계정 권한이나 조회 시점이 바뀌었는데 단순히 입력 표현만 달라졌다고 기록하지 않는다. 입력·변환·전제 확인·출력·허용오차·상태·실행 기록을 한 묶음으로 남겨 관계 위반을 재현할 수 있게 한다.
부동소수점 합은 덧셈 순서에 따라 마지막 자릿수가 달라질 수 있다. 값의 크기·연산·허용한 수치 오차에 따라 절대·상대오차 경계를 정하고, 실패가 났다는 이유로 임의로 허용오차를 늘리지 않는다. 출력 형식의 반올림과 내부 분석값도 구별한다. 정확한 정수 계산이 가능한 작은 정답 사례는 수치 허용오차와 별개로 유지한다.
생성형 모델의 확률적 출력에는 같은 문장 한 번을 요구하는 관계가 적절하지 않을 수 있다. 모델·프롬프트·검색 자료·도구와 가능한 난수 조건을 고정하고, 과제에 맞는 사실·금지행동·분포·반복 관찰 기준을 정한다. 한 번 표현이 달라졌다는 사실이나 두 번 같은 답을 했다는 사실만으로 결함·정확성을 단정하지 않는다. 통계적 비교가 필요하면 그 표본·가정·오류 가능성도 명시한다.
관계를 어겼을 때는 제품만 탓하기 전에 전제가 충족됐는지, 변환기가 의미를 보존했는지, 환경과 상태가 같은지 확인한다. 전제가 맞고 비교도 올바른데 필요한 관계가 깨졌다면 결함 증거가 된다. 관계 위반이 어느 코드 줄의 원인인지까지 자동으로 알려 주는 것은 아니다.M3
MT-R1: ‘관계 95% 통과’를 AI 정확도 95%라고 쓰지 않는다
자체 시험계획에서 후보 입력쌍 100개 중 12개는 변환 전제가 맞지 않아 부적용으로 분리했다고 하자. 유효한 88개 중 80개를 실행했고, 76개는 관계를 만족하며 4개는 위반했다. 8개는 아직 실행하지 않았다. 서로 겹치지 않는 네 상태의 합계는 12+76+4+8=100이다.
실행된 유효 입력쌍의 관계 통과 비율은 76/80=95%다. 유효 계획 대비 실행은 80/88≈90.91%다. 미실행 8개와 부적용 12개를 통과로 넣지 않는다. 관계를 만족하는 잘못된 구현이 존재하므로 이 두 비율은 모델의 정답률이나 모든 요구 충족률이 아니다.
관계 하나를 통과시킨 입력쌍을 여러 번 복제해 건수를 늘려도 독립적인 결함 탐색 범위가 늘지 않는다. 관계 종류·입력 범위·위험·실행 상태와 발견한 고유 결함을 함께 본다. 이 수치는 교육용 작업 현황이지 공식 시험 점수다.
완성 시험안 MT-G1
MT-G1은 보고서의 평균 집계 기능을 먼저 검토하고, 이후 영상 분류·생성형 응용에 관계 기반 시험을 적용할 때 필요한 조건을 정하는 교육안이다. 평균 기능에는 순서·평행이동·배율의 세 관계를 적용하되 빈 입력·결측·표현 한계는 별도 명세로 둔다. G와 H 같은 결함 모형과 작게 직접 계산할 수 있는 기준 사례로 관계의 검출력과 한계를 확인한다. 기존 실증 연구도 서로 다른 메타모픽 관계를 다양하게 사용하는 것이 오라클 문제 완화의 비용효율과 결함 검출에 중요할 수 있음을 보고한다.M3
요구 담당자는 관계가 필요한 성질인지와 부적용 조건을 승인한다. 시험 설계자는 원천·변환·오차·대응을 정하고, 실행 담당자는 판본·상태·입출력을 기록한다. 검토자는 위반이 관계·변환·환경·실제 구현 중 어디에서 생겼는지 확인한다. 알려진 위반 사례는 수정 뒤에도 반복할 회귀 자료로 남긴다.
단위수준에서는 집계 함수의 관계를 고립하고, 통합수준에서는 직렬화·단위·전처리 뒤에도 같은 조건이 전달되는지 확인한다. 시스템수준에서는 권한과 상태 변경을 포함한 실제 흐름을 검토한다. 관계를 적용했다는 이유로 기존 할인 경계·USD 단위 계약·권한·응답시간·중복효과 시험을 없애지 않는다.
영상에서는 검토된 변환 범위와 원본의 정답 정보를 함께 보관하고, 의미를 바꾸는 변환을 부적용으로 분리한다. 생성형에서는 말투 변화만으로 사실과 권한이 유지됐다고 보지 않고 승인 근거·금지 동작·실제 결과를 별도로 본다. 권한 위반과 중요한 관계 위반이 남으면 확대를 보류한다. ‘MR을 자동 생성한다’는 계획만을 완성 시험안으로 제출하지 않는다.
공식 범위 심화 적용 — IT테스트 기획
시험수준·유형 선택을 제품위험과 테스트 목적에 연결하여 어떤 증거를 어느 경계에서 얻을지 정한다.
공식 범위 심화 적용 — IT테스트 계획
단위·통합·시스템·인수 시험에 필요한 환경·데이터·의존성·실행비용을 계획에 반영한다.
공식 범위 심화 적용 — IT테스트 분석
요구와 위험을 기능·성능·보안·회복성 조건으로 펼치고 가장 직접적인 시험수준을 고른다.
공식 범위 심화 적용 — IT테스트 설계
각 수준에서 자극·오라클·상태확인을 구체화하여 중복 없이 추적 가능한 케이스로 만든다.
출처와 적용 경계
T1. ISTQB와 CTFL 저자들의 Foundation Level Syllabus v4.0.1, 2024-09-15, §2.2.1~2.2.2. 확인: 2026-10-06. 다섯 수준과 품질특성별 유형의 구분을 대조했다. 표·사례는 독립적으로 작성했다.
시험수준·유형의 구분은 ISTQB와 본문의 실제 관찰 경계에 연결한다. 할인·금액단위·응답시간·권한·재시도 예시는 교육용 자체 유한 예제이며 실제 조직의 시험표준이나 인증결과가 아니다.
M1. Li et al., Metamorphic Relation Generation: State of the Art and Visions for Future Research (2024), arXiv 2406.05397v2, §§1~2의 오라클·필요 성질·원천/후속 실행·관계 종류. https://arxiv.org/html/2406.05397v2 . 2026-09-20 해당 HTML을 확인했다. 논문의 실험 수치·그림을 본문 예제의 결과로 사용하지 않는다.
M2. Xu et al., MR-Scout: Automated Synthesis of Metamorphic Relations from Existing Test Cases, ACM TOSEM 33(6), 2024, 공개 초록의 분야 지식과 MR 도출 문제. https://doi.org/10.1145/3656340 . 저자 공개 preprint는 https://arxiv.org/abs/2304.07548 에서 확인했다. 초록의 범위를 사용했으며 전체 도구의 구현·성능을 검증했다고 표시하지 않는다.
M3. Liu et al., How Effectively Does Metamorphic Testing Alleviate the Oracle Problem?, IEEE TSE 40(1), 2014, DOI 10.1109/TSE.2013.46, 공개 초록·서론의 관계 검사와 다양한 관계의 필요성. https://doi.org/10.1109/TSE.2013.46 . 저자 공개 accepted manuscript는 https://vuir.vu.edu.au/33046/1/TSEmt.pdf 에서 확인했다. G·H 및 MT-A1/R1/G1은 자체 반례·설계이며 원 논문의 실험을 재현한 것이 아니다.
보존 기출 추출문 work/qnet/text/pdf/round_140.txt의 메타모픽 테스트 요구에 대응하는 교육 내용을 보강했다. 아래 추가 문제는 자체 문제이며, 이번에 원본 PDF의 해당 페이지를 다시 이미지 대조하거나 기출군·공식 채점 상태를 승인한 것은 아니다. 필요 이론의 본문 보완과 기출 원문·독립 승인 완료는 구별한다.
9. 한 장으로 정리하기
- 시험수준과 시험유형은 서로 다른 축이다.
- 단위는 작은 규칙, 통합은 경계계약, 시스템은 끝단 품질, 인수는 수용조건을 본다.
- 기능시험은 요구된 동작·상태를, 비기능시험은 성능·보안·회복성 등 품질특성을 본다.
- 평균값·응답코드만으로 성능·보안·회복성을 판정하지 않는다.
- 위험을 충분히 관찰할 수 있는 가장 가까운 수준을 선택하고 상위수준에서는 현실성을 보완한다.
- 하위수준 통과를 전체 시스템 정상으로 확대하지 않는다. 메타모픽 관계 통과 역시 정확성 전체의 증명이 아니다.
독립 연습 — 통과한 관계로도 발견하지 못한 결함을 찾는다
다음은 본문 사례의 조건을 적용하거나 바꾼 자체 연습이다. 먼저 판단과 근거를 적고 풀이를 펼친다.
MT-A1과 같은 결함 G가 첫 값과 마지막 값만 평균을 낸다고 가정한다. 새 원천 입력 (1, 5, 12)을 사용하고 후속 입력을 ① (12, 5, 1), ② (5, 1, 12)로 각각 바꾼다. 비어 있지 않은 유한 실수 목록·가중치 없음·정확한 계산이라는 원래 가정을 유지한다.
- G의 원천값과 각 후속값을 계산하고 순서 불변 관계의 판정을 쓰라.
- ①이 통과한다면 G가 정확하다는 결론을 낼 수 있는지, 어떤 확인을 추가할지 설명하라.
풀이와 오답 교정 보기
원천 G는 (1+12)/2=6.5다. ①도 (12+1)/2=6.5라서 이 입력쌍은 관계를 통과한다. ②는 (5+12)/2=8.5로 6.5와 달라 관계를 위반한다. ①의 통과는 정확한 평균 (1+5+12)/3=6과 G의 결과 6.5 사이의 차이를 없애지 못한다. 같은 관계 이름이라도 실제 입력쌍이 결함을 드러낼 수 있는지 확인하고, 알려진 정답 사례와 다른 결함에 민감한 관계를 조합한다.
“순서를 바꿨으니 항상 잡는다”면 실제 입력 선택, “MR 통과=정확도”라면 조건과 출력 관계를 다시 읽는다.
10. 자체 10점 문제
단위·통합·시스템·인수 시험을 구분하고, 기능시험과 비기능시험이 시험수준과 다른 축인 이유를 설명하시오.
요구어는 구분, 설명이다. 각 수준의 대상·대표 오라클과 기능/비기능의 교차관계를 짧게 연결한다.
10점 풀이와 답안 구성 보기
10점 답안 목차
- 시험수준과 시험유형의 두 축
- 단위·통합·시스템·인수의 대상
- 기능시험의 요구·상태 오라클
- 성능·보안·회복성의 별도 오라클
- 위험과 비용에 따른 수준 선택
10점 비교표 활용
수준 × 품질질문 표를 다시 사용한다. 결합범위는 단위·통합·시스템·인수이고, 별도 품질질문은 기능·성능·보안·회복성이다. 두 축을 하나의 실행 순서로 합치지 않는다.
10점 모범답안
시험수준은 검증대상의 결합 범위를 기준으로 나눈다. 단위시험은 함수·모듈의 규칙을 가까운 오라클로 확인하고, 통합시험은 구성요소 사이 데이터·호출·트랜잭션 계약을 검증한다. 시스템시험은 실제 배치경계의 끝단 흐름과 품질을, 인수시험은 수용자가 합의한 업무·계약 기준을 확인한다. 기능·비기능은 별도 축으로, 기능시험은 요구된 출력과 상태전이를 보고 성능·보안·회복성 시험은 부하·권한·장애 같은 서로 다른 자극과 오라클을 사용한다. 따라서 위험을 충분히 관찰할 수 있는 가장 가까운 수준을 고르고 필요한 현실성은 상위 수준에서 보완한다.
11. 자체 25점 문제
주문·결제 서비스를 시험하려 한다. 할인 경계 오류, 주문-결제 금액계약 오류, 관리자 권한우회, 500 ms 응답시간 요구, 결제 응답유실 후 중복처리를 주요 위험으로 두고 단위·통합·시스템·인수 시험과 기능·비기능 시험을 배치하시오. 환경과 오라클도 제시하시오.
요구어는 배치, 제시다. 위험별로 가장 가까운 수준과 끝단 보완시험을 구분해야 한다.
25점 풀이와 답안 구성 보기
25점 답안 목차
- 위험·품질질문 분류
- 할인 경계의 단위시험
- 주문–결제 계약의 통합시험
- 권한·응답시간·복구의 시스템시험
- 업무 수용조건의 인수시험
- 기능/성능/보안/회복성 오라클
- 실제 의존성·데이터·네트워크 환경
- 빠른 하위수준 + 현실적인 상위수준 조합
25점 시험 배치표
| 위험 | 가장 가까운 수준 | 이어 확인할 것 |
|---|---|---|
| 할인 | 단위 | 경계 입력과 기대값 |
| 계약 | 통합 | 필요한 실제 경계와 단위·오류 오라클 |
| 권한·성능·복구 | 시스템 | 실제 상태·환경과 각각의 오라클 |
| 업무수용 | 인수 | 합의한 수용조건 |
25점 모범답안
먼저 위험을 관찰지점과 품질질문으로 분해한다. 할인 100,000원 경계는 99,999·100,000·100,001을 단위수준에서 빠르게 검증한다. 주문 서비스와 결제 어댑터의 금액단위·직렬화·오류계약은 실제 경계를 연결한 통합시험으로 확인한다. 관리자 권한우회는 시스템수준에서 일반계정으로 호출하고 응답뿐 아니라 DB 상태가 불변인지 확인한다. 500 ms 요구는 실제와 유사한 데이터·네트워크·의존성을 둔 성능시험에서 요구된 분포기준으로 판정한다. 결제 성공 후 응답유실·재시도는 장애를 주입하고 최종 청구·주문상태·중복효과가 없는지를 회복성 오라클로 본다. 인수시험에서는 정상 주문·환불·권한·운영준비 등 수용자가 합의한 기준을 끝단 시나리오로 확인한다. 하위수준의 빠른 피드백과 상위수준의 현실성을 결합하고, 각 결과를 원래 위험과 추적한다.
추가 10점 문제: 오라클 문제와 메타모픽 관계
테스트 오라클 문제와 메타모픽 테스트를 설명하고 MT-A1의 관계 통과·위반을 해석하시오.
10점 풀이와 답안 구성 보기
목차: 판정의 어려움 → 전제·변환·관계 → 작은 반례 → 검출 한계.
답안 도식: 필요한 관계와 정확성의 경계
전제를 먼저 확인하여 부적용이면 제외·기록한다. 적용 가능하면 원천·후속 실행 그림의 x·T(x)와 P(x)·P(T(x))를 관계 R에 대조해 만족·위반을 판정한다. 관계 만족 ≠ 모든 결과가 정확함이다.
화살표는 입력 변환과 실행·판정의 흐름이다. MT-A1의 G는 순서 변경에서 위반하지만 +3과 두 배 관계에서는 만족하므로, 알려진 정답과 다른 관계도 함께 확인한다.
완성 답안: 오라클 문제는 실행 결과의 정답을 얻기 어렵거나 판정 비용이 커서 통과·실패를 판단하기 곤란한 상황이다. 메타모픽 테스트는 필요한 성질을 입력·결과 사이의 관계로 표현하고 원천·후속 실행을 함께 비교한다. 산술평균의 순서 변경처럼 결과가 같아야 하는 관계뿐 아니라 평행이동·배율에 따른 변화도 사용할 수 있다. 전제·입력 범위·설정·허용오차를 고정해야 한다.
MT-A1의 G는 (2,4,8)에서 첫·마지막만 평균을 내어 5를 반환한다. 순서를 (4,2,8)로 바꾸면 6이 되어 불변 관계를 위반한다. 그러나 +3 입력의 결과 8과 두 배 입력의 결과 10은 각각 G의 원천 결과+3, ×2와 같아 다른 관계를 통과한다. 잘못된 구현도 일부 관계를 만족하므로 관계 통과를 정확성 증명으로 쓰지 않는다.
변환 전제가 틀리거나 환경이 달라졌다면 올바른 프로그램도 관계 위반처럼 보일 수 있다. 알려진 정답·다양한 관계·권한·경계·상태 시험을 결합하고 미실행·부적용을 통과에서 제외한다. 관계 통과율은 실제 AI 정답률과 다르다.
추가 25점 문제: 관계 기반 시험안을 설계한다
평균 집계와 AI 응용의 신뢰성을 검토하는 MT-G1을 설계하시오. 원천·후속 시험, MR 도출, 적용 조건, 결과 판정과 한계를 포함하시오.
25점 풀이와 답안 구성 보기
답안 구성: 대상과 적용 전제 → 세 관계의 원천·후속 입력 → 판본·상태·오차 통제 → 위반 원인과 중단 → 결과의 분모와 한계 순서로 쓴다. 관계 계약을 실제 입력쌍으로 옮기고, 실행 절차에 기록·담당·판정을 붙인 뒤 MT-G1의 선택을 설명한다. 관계를 여러 개 적는 데서 끝내지 않고 통과해도 틀리는 반례와 부적용·미실행의 처리를 결론에 남긴다.
답안 도식: 시험안과 결과 대사
| 담당·단계 | 함께 남길 기록 |
|---|---|
| 요구 담당 | 목적·MR 전제·부적용 조건 |
| 시험 설계 | 원천·후속 쌍·같은 판본·상태·허용오차 |
| 실행 기록 | 입력·출력·변환·설정·관계 판정 |
| 결과 대사 | 부적용 12 / 통과 76 / 위반 4 / 미실행 8 |
| 원인 확인 | 관계·변환·환경·구현 구별 → 수정·회귀·확대 보류 |
대사 합계는 100개다. 실행된 유효 80개 중 76개가 관계를 만족했다는 사실을 모든 입력의 정답률로 바꾸지 않으며, 이 표는 앞 MT-G1을 답안에 옮긴 자체 설계다.
완성 설계 답안: MT-G1의 첫 대상은 비어 있지 않은 유한 수치 목록의 산술평균이다. 순서 불변·동일값 더하기·양수 배율의 세 관계를 요구에서 도출하고 결측·가중치·잘림·표현 범위·수치 오차를 적용 조건으로 정한다. 요구 담당자가 필요한 성질과 예외를 승인하고 시험 담당자가 원천·변환·판정 기준을 기록한다. 자동으로 제안된 MR도 이 검토 없이 실행 승인으로 사용하지 않는다.
원천 (2,4,8)과 후속 (4,2,8), (5,7,11), (4,8,16)을 같은 판본·상태에서 실행한다. G의 결과 5·6·8·10은 순서 관계에서만 위반하며, 항상 0인 H는 순서 관계를 통과해도 +3 관계를 위반한다. 작은 기준 정답과 결함 모형으로 검출 차이를 확인한 뒤 자료 범위를 넓힌다. 실행 기록에는 원천·후속 입력, 모델·설정·전처리, 전제 확인, 출력·허용오차·결과를 연결한다.
AI 영상에는 과제상 라벨·증거를 보존한 변환만 적용하고 의미를 바꾸는 회전·가림은 부적용으로 분리한다. 생성형 출력에는 문장 일치 대신 검증 가능한 사실·금지행동·구조·반복 관찰의 기준을 정한다. 확률적 변동을 조사할 때에는 표본·판정 오류의 한계를 기록하고 실패 뒤 임의로 허용오차를 늘리지 않는다.
단위에서는 계산 관계를, 통합에서는 변환·직렬화·단위 계약을, 시스템에서는 권한·상태·실패의 실제 흐름을 확인한다. 관계 위반을 발견하면 전제·변환기·환경·시험대상 구현을 구분해 원인을 좁힌다. 중요한 미해결 위반과 권한 오류가 있으면 확대를 보류하고 수정 뒤 해당 입력쌍을 회귀 자료로 사용한다.
MT-R1은 후보 100개 중 부적용 12, 실행 통과 76, 위반 4, 미실행 8이다. 유효 실행의 통과 95%와 유효 계획 실행률 약 90.91%를 분리하고 모델 정확도·공식 합격률로 바꾸지 않는다. 최종 결과는 관계별 적용 범위·미실행·결함·조치·잔여를 제시하며 직접 정답·기존 경계·성능·보안·회복성 시험을 대체하지 않는다.
자기교정과 조건 변경
| 부족한 답 | 오류 또는 누락 | 수정 예 | 복습 |
|---|---|---|---|
| 통합시험은 곧 비기능시험이다 | 결합 범위와 품질질문을 혼합 | 통합 수준의 기능·비기능을 구별 | 두 축 |
| 403을 받았으니 인가가 안전하다 | 이미 바뀐 상태를 확인하지 않음 | 응답과 DB 불변을 함께 확인 | 권한 |
| 오라클이 없으니 실행만 하면 된다 | 판정 근거를 제거 | 필요한 관계·참조·상태를 명시 | 오라클 |
| MR이면 출력은 항상 같아야 한다 | 예상 변화·전제 누락 | +3이면 평균도 +3인 관계 사용 | 관계 |
| 입력 두 배면 할인 후 금액도 두 배다 | 할인 구간이 바뀜 | 60,000→120,000의 지급 60,000→108,000 | 잘못된 관계 |
| 모든 관계 통과는 모든 결과의 정확성이다 | 필요한 조건과 충분조건 혼동 | G·H의 통과 반례와 정답 사례 결합 | 반례 |
| 변환하면 자동으로 같은 의미다 | 라벨·증거가 달라질 수 있음 | 6/9 회전 등은 전제부터 검토 | 관계 |
| 76/80이면 모델 정확도 95%다 | MR·모델 정답과 분모 혼동 | 유효 실행 관계 통과 95%, 실행 80/88 | 현황 |
원천을 (2,4,8)에서 역순 (8,4,2)로 바꾸면? G는 양쪽 모두 5여서 이 입력쌍의 순서 관계는 통과한다. 관계가 불필요한 것이 아니라 이 입력쌍만으로 그 결함을 드러내지 못한 것이다.
원천의 모든 값에 5를 더하면? 올바른 평균은 29/3≈9.6667이고 G는 (7+13)/2=10이다. G도 원천 5보다 5가 커져 관계를 통과하지만 정확한 평균은 아니다.
미실행 8개를 더 실행해 6개 통과·2개 위반이면? 유효 88개 중 통과 82·위반 6으로 관계 통과율은 약 93.18%, 실행률은 100%다. 부적용 12개는 여전히 별도이며, 관계 통과가 모델 정답률이라는 오해는 그대로 금지한다.
추가 예·표·문제·답안·시험계획은 자체 작성이다. 실제 프로그램·AI 모델·변환 시험이나 독립 감수를 수행하지 않았고, 본문 산술 대조와 제작 프로젝트의 회귀 실행을 구별한다.