프로젝트

일반

사용자정보

구조 기반 테스트 설계 기법

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 }에서 AB 블록 모두 실행

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>0b<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=FalseA=False, B=True 케이스 필수

6. 데이터 흐름 테스팅(Data Flow Testing)

- 변수의 정의(Definition)와 사용(Use) 경로를 추적해 이상 패턴 탐지

- 예: 변수 x가 초기화 없이 사용되거나 재정의 전에 사용되는 경우 검출


커버리지 기준 비교표

커버리지 유형 설명 테스트 케이스 수
문장 커버리지 모든 실행 문장 1회 이상 실행 낮음
분기 커버리지 모든 조건문의 True/False 분기 실행 중간
조건 커버리지 개별 조건식의 참/거짓 검증 높음
MC/DC 조건식이 독립적으로 결과 영향 검증 매우 높음

ISO 29119-4의 테스트 설계 프로세스 적용

구조 기반 테스트는 ISO 29119-2의 테스트 설계 및 구현 프로세스에 따라 아래 단계를 수행합니다[1][3]:

  1. 테스트 컨디션 도출(TD2): 코드 모듈, 함수, 루프 등 테스트 대상 구조 식별
  2. 테스트 커버리지 항목 도출(TD3): 커버리지 유형(예: 분기 100%) 및 측정 지표 정의
  3. 테스트 케이스 도출(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