구조 기반 테스트 설계 기법
Prof. Jong Min Lee이(가) 10일 전에 추가함
ISO/IEC/IEEE 29119의 구조 기반 테스트 설계 기법¶
구조 기반 테스트 설계 기법(Structure-Based Test Design Techniques)은 소프트웨어의 내부 구조(코드, 모델, 아키텍처)를 분석해 테스트 케이스를 도출하는 화이트박스 테스트 접근법입니다. ISO/IEC/IEEE 29119-4에서는 코드 커버리지 및 논리적 구조를 기반으로 결함을 탐지하는 방법을 체계화했습니다.
구조 기반 테스트의 주요 목적¶
- 내부 논리 검증: 조건문, 반복문, 데이터 흐름 등 코드 구조의 정확성 확인
- 커버리지 달성: 명시된 커버리지 기준(예: 문장, 분기) 충족
- 숨은 결함 탐지: 실행되지 않는 코드 또는 논리적 오류 식별
ISO 29119-4에서 정의하는 주요 기법¶
1. 문장 커버리지(Statement Coverage)
- 모든 실행 가능한 코드 문장을 최소 1회 실행하는 테스트 케이스 설계
- 예: if (x > 0) { A } else { B }
에서 A
와 B
블록 모두 실행
2. 분기 커버리지(Branch Coverage)
- 모든 조건문(True/False)의 분기를 실행하는 테스트 케이스 생성
- 예: if (x && y)
에서 (x && y)
가 True, False 되는 조건을 테스트하면 됨.
o (x && y)
가 True가 되는 경우는 (True, True)
밖에 없음.
o (x && y)
가 False가 되는 경우는 (True, False),
(False, True),
(False, False)` 중 하나를 선택하면 됨.
3. 조건 커버리지(Condition Coverage)
- 복합 조건문 내 개별 조건식의 참/거짓을 모두 검증
- 예: if (a>0 || b<5)
에서 a>0
과 b<5
각각의 참/거짓 경우 테스트
4. 분기-조건 조합 커버리지(Branch-Condition Combination)
- 분기 및 개별 조건식의 모든 조합을 테스트
- 예: if (a && b)
에서 (a=True, b=True)
, (a=True, b=False)
, (a=False, b=True)
5. 수정 조건/결정 커버리지(MC/DC)
- 안전 필수 시스템(SIL 4)에서 요구되는 커버리지로, 각 조건이 독립적으로 결과에 영향을 미치는지 검증[2][5]
- 예: if (A || B)
에서 A=True, B=False
와 A=False, B=True
케이스 필수
6. 데이터 흐름 테스팅(Data Flow Testing)
- 변수의 정의(Definition)와 사용(Use) 경로를 추적해 이상 패턴 탐지
- 예: 변수 x
가 초기화 없이 사용되거나 재정의 전에 사용되는 경우 검출
커버리지 기준 비교표¶
커버리지 유형 | 설명 | 테스트 케이스 수 |
---|---|---|
문장 커버리지 | 모든 실행 문장 1회 이상 실행 | 낮음 |
분기 커버리지 | 모든 조건문의 True/False 분기 실행 | 중간 |
조건 커버리지 | 개별 조건식의 참/거짓 검증 | 높음 |
MC/DC | 조건식이 독립적으로 결과 영향 검증 | 매우 높음 |
ISO 29119-4의 테스트 설계 프로세스 적용¶
구조 기반 테스트는 ISO 29119-2의 테스트 설계 및 구현 프로세스에 따라 아래 단계를 수행합니다[1][3]:
- 테스트 컨디션 도출(TD2): 코드 모듈, 함수, 루프 등 테스트 대상 구조 식별
- 테스트 커버리지 항목 도출(TD3): 커버리지 유형(예: 분기 100%) 및 측정 지표 정의
- 테스트 케이스 도출(TD4): 코드 구조를 기반으로 입력값/기대 결과 명시
적용 시 고려사항¶
- 도구 활용: 정적 분석 도구(예: SonarQube) 또는 커버리지 측정 도구(예: JaCoCo)와 연동
- 리스크 기반 선택: 안전/보안 크리티컬 시스템에서는 MC/DC와 같은 높은 커버리지 적용[2][5]
- 한계점: 외부 명세 불일치 결함 탐지 불가 → 명세 기반 기법과 조합 필요
구조 기반 테스트 설계 기법은 코드 품질을 정량적으로 평가하고, ISO 25023(소프트웨어 제품 품질 측정) 표준과의 연계성을 강화합니다. ISO 29119-4는 이를 표준화해 테스트 프로세스의 객관성과 신뢰성을 보장합니다.
Citations:
[1] https://blog.naver.com/tnsqo1126/222292738841
[2] https://en.wikipedia.org/wiki/ISO/IEC_29119
[3] http://jidum.com/jidums/view.do?jidumId=698
[4] https://shinbe.tistory.com/entry/%EC%A0%9C-24%ED%9A%8C-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EA%B3%B5%ED%95%99-3435
[5] https://reqtest.com/en/knowledgebase/isoiecieee-29119-creating-a-standard-approach-to-test-software/
[6] https://www.tta.or.kr/data/androReport/ttaJnal/167-5-3.pdf
[7] https://peimsam.tistory.com/367
[8] https://tektek.tistory.com/17
[9] https://www.iso.org/standard/79430.html
[10] https://testmanager.tistory.com/314