ISO/IEC 29119

**ISO/IEC/IEEE 29119** 소프트웨어 및 시스템 공학 -- 소프트웨어 테스트(Software and systems engineering -- Software testing)는 소프트웨어 테스트를 위한 5개의 국제 표준 시리즈이다. 2007년에 처음 개발되어 2013년에 발표된 이 표준은 "모든 소프트웨어 개발 수명 주기 내에서 사용할 수 있는 테스트를 위한 어휘, 프로세스, 문서화, 기술 및 프로세스 평가 모델을 정의한다."

## 역사 및 개정
ISO/IEC/IEEE 29119 소프트웨어 테스트 표준 세트의 개발은 2007년 5월에 시작되었으며, 전기전자공학자협회의 IEEE 829 (테스트 문서화) 및 IEEE 1008 (단위 테스트); 그리고 BSI 그룹의 BS 7925-1 (어휘) 및 -2 (소프트웨어 구성 요소)와 같은 기존 표준을 기반으로 했다.

처음에 국제 표준화 기구(ISO)는 소프트웨어 테스트 경험이 풍부한 실무단이 없었기 때문에, ISO는 2011년까지 20개 이상의 다른 국가들이 참여하는 WG26을 만들었다. 처음에는 표준을 위해 네 가지 섹션이 개발되었다: 개념 및 정의(1), 테스트 프로세스(2), 테스트 문서화(3), 테스트 기술(4). 프로세스 평가에 관한 다섯 번째 부분이 추가될 예정이었고, 결국 29119-2의 테스트 프로세스와 연결되는 ISO/IEC 33063:2015가 되었다. 29119의 실제 다섯 번째 부분은 키워드 주도 테스트 개념에 관하여 2016년 11월에 발표되었다.

, 표준의 다섯 부분에 대한 주요 개정은 없었다. 이 부분들은 가장 최근부터 가장 오래된 순서로 다음과 같다.

* ISO/IEC/IEEE 29119-5:2016, 5부: 키워드 주도 테스트, 2016년 11월 발행
* ISO/IEC/IEEE 29119-4:2015, 4부: 테스트 기술, 2015년 12월 발행
* ISO/IEC/IEEE 29119-3:2013, 3부: 테스트 문서화, 2013년 9월 발행
* ISO/IEC/IEEE 29119-2:2013, 2부: 테스트 프로세스, 2013년 9월 발행
* ISO/IEC/IEEE 29119-1:2013, 1부: 개념 및 정의, 2013년 9월 발행

## 구조 및 내용
### ISO/IEC/IEEE 29119-1:2013, Part 1: Concepts and definitions
ISO/IEC/IEEE 29119 1부는 표준의 기반이 되는 어휘를 소개하고 실제 적용 사례를 제공함으로써 표준의 다른 부분들을 쉽게 사용할 수 있도록 돕는다. 1부는 정의, 소프트웨어 테스트 개념 설명, 그리고 이러한 정의와 개념을 표준의 다른 부분에 적용하는 방법을 제공한다.

### ISO/IEC/IEEE 29119-2:2013, Part 2: Test processes
2부는 소프트웨어 테스트 수행 시 조직에서 사용하도록 의도된 소프트웨어 테스트를 위한 일반 테스트 프로세스 모델을 정의한다. 이 모델은 조직 수준, 테스트 관리(프로젝트) 수준, 동적 테스트 프로세스 수준에서 소프트웨어 테스트 프로세스를 정의하는 테스트 프로세스 설명을 포함한다(WG26은 정적 테스트 포함에 대한 합의를 얻지 못했다). 이 표준에 정의된 프로세스는 다양한 소프트웨어 개발 수명 주기 모델과 함께 사용할 수 있다.

### ISO/IEC/IEEE 29119-3:2013, Part 3: Test documentation
이 부분은 소프트웨어 테스트 문서화를 다루며, 테스트 프로세스 중에 생성되는 템플릿과 테스트 문서화 예시를 포함한다. 템플릿은 2부의 세 가지 주요 테스트 프로세스 수준을 지원하며, 이 표준은 다른 기존 표준과의 매핑도 포함한다.

ISO/IEC/IEEE 29119-3에 정의된 문서는 다음과 같다.

; **조직 테스트 프로세스 문서화:**
: - 테스트 정책
: - 조직 테스트 전략
; **테스트 관리 프로세스 문서화:**
: - 테스트 계획 (테스트 전략 포함)
: - 테스트 상태
: - 테스트 완료
; **동적 테스트 프로세스 문서화:**
: - 테스트 설계 명세서
: - 테스트 케이스 명세서
: - 테스트 절차 명세서
: - 테스트 데이터 요구 사항
: - 테스트 데이터 준비 보고서
: - 테스트 환경 요구 사항
: - 테스트 환경 준비 보고서
: - 실제 결과
: - 테스트 결과
: - 테스트 실행 로그
: - 테스트 사고 보고서

### ISO/IEC/IEEE 29119-4:2015, Part 4: Test techniques
4부는 2부에서 정의된 테스트 설계 및 구현 프로세스 중에 사용할 수 있는 소프트웨어 테스트 설계 기술(테스트 케이스 설계 기술 또는 테스트 방법이라고도 함) 및 해당 커버리지 측정에 대한 표준 정의를 제공한다. 4부의 기술은 2부를 지원하거나 2부와 별도로 사용하도록 의도되었다. 표준의 테스트 설계 기술은 세 가지 주요 범주로 분류된다: 명세 기반 테스트 설계 기술, 구조 기반 테스트 설계 기술, 경험 기반 테스트 설계 기술.

#### 사양 기반 테스트 설계 기술
이 기술들은 테스트 대상 시스템의 (기능) 명세에 기반한다. 이들은 블랙박스 검사 기술이라고도 불린다.

이 그룹에서 제안되는 테스트 설계 기술은 다음과 같다.

* 동등 분할
* 분류 트리 방법
* 경계값 분석
* 구문 테스트
* 조합 테스트 설계 기술
* 결정 테이블 테스트
* 원인-효과 그래프 작성
* 상태 전이 테스트
* 시나리오 테스트
* 랜덤 테스트

#### 구조 기반 테스트 설계 기술
이러한 구조적 테스트 기술은 테스트 대상 시스템의 (내부) 구조에 기반한다. 이들은 화이트박스 테스트 기술이라고도 불린다.

이 그룹에서 제안되는 테스트 설계 기술은 다음과 같다.

* 분기 테스트
* 결정 테스트
* 분기 조건 테스트
* 분기 조건 조합 테스트
* 변형 조건 결정 커버리지(MCDC) 테스트
* 데이터 흐름 테스트

#### 경험 기반 테스트 설계 기술
이러한 탐색적 테스트 기술은 인간 테스터의 경험에 의존한다.

이 그룹에서 제안되는 테스트 설계 기술은 다음과 같다.
* 오류 추정

### ISO/IEC/IEEE 29119-5:2016, Part 5: Keyword-driven testing
이 표준은 소프트웨어 테스트 산업에서 사용되는 소프트웨어 테스트(일반적으로 자동화된)를 명시하는 접근 방식인 키워드 주도 테스트를 다룬다. 이 표준은 "키워드 주도 테스트 명세를 생성하거나, 해당 프레임워크를 생성하거나, 키워드를 기반으로 테스트 자동화를 구축하려는 사용자"를 위한 것이다.

## 비판
ISO/IEC/IEEE 29119가 2014년 여름에 도입되자, 일부 소프트웨어 테스터와 관련 단체들은 ISO에 표준 폐기를 요구하기 시작했다. 이 표준에 반대한 주요 단체로는 소프트웨어 테스팅 협회와 국제 소프트웨어 테스팅 학회가 있었다. 표준 반대 이유는 다음과 같다.

* 전문 테스터들 사이에서 ISO/IEC에서 요구하는 내용에 대한 진정한 합의 부족
* 문서화에 지나치게 중점을 두어 실제 소프트웨어 테스트 프로세스에서 벗어날 수 있음
* ISO 29119는 인지적으로 어려운 작업에서 사람들이 일하는 방식과 일치하지 않으며, 복잡하고 스트레스가 많은 조직에서 도움이 되지 않는 관행에 집착하는 방식을 강화한다
* 이 표준은 규제 및 표준에서 규칙과 원칙의 균형에 대한 다른 관련 작업을 고려하지 못한다. 이 표준은 테스트를 지배해야 할 원칙에 대해 불분명하고, 세부 사항에 대해 지나치게 규범적이어서 수단과 목적의 혼란을 초래한다.
* 이 표준은 효과적으로 문맥 주도 테스트를 배제한다
* 소프트웨어 테스트의 표준화 자체가 불필요하다
* 이 표준은 정치적, 금전적 함의를 가지며 너무 규범적이어서 산업에 이롭지 않다

WG26의 소집자 스튜어트 리드 박사는 2014년 9월에 이러한 반대 의견 중 일부에 대해 답변했다. 하지만 소프트웨어 테스터들의 불만 때문에 WG26이 추가 조치를 취했는지는 분명하지 않다.

## 각주

분류:IEEE 표준
분류:소프트웨어 테스트
분류:ISO/IEC 표준