테스트 유형(Test Type): The targets of testing
- 테스팅 하는 목적 및 품질 특성을 염두에 두고 소프트웨어 시스템(또는 시스템 일부분)을 검증하는 일련의 테스트 활동
1. 테스트 유형별 테스트 목적
1) 기능 테스팅
- 소프트웨어가 수행하는 기능에 대한 (품질 특성) 테스팅
2) 비기능 테스팅
- 호환성, 신뢰성, 사용성과 같은 비기능적인 품질 특성을 테스팅
3) 구조적 테스팅
- 소프트웨어나 시스템의 구조나 아키텍처에 대한 테스팅
4) 확인/회귀 테스팅(Testing related to changes)
- 유지 보수 테스팅에 많이 사용
- 변경 내용에 관련된 테스팅
(확인 테스팅: 결함에 대한 수정이 이루어 졌는지에 대한 확인, 회귀테스팅: 의도하지 않은 변경을 찾음)
2. 기능적 테스팅(Functional Testing)
- 기능 테스팅은 문서화 되어 있거나 테스터가 알고 있는 기능과 특징, 그리고 그것들과 특별한 시스템과의 상호 운용성을 고려하여 수행
- 시스템이 수행하는 "그 무엇"을 테스팅
- 기능성이라는 품질 특성에 적합성, 정확성, 준수성, 상호운용성, 보안성 등의 부특성을 포함 (ISO/IEC 9126)
1) 활용 가능한 소프트웨어 모델(요구사항 명세, 기능 명세 등에 포함)
- 프로세스 흐름 모델
- 상태 전이 모델
- 유즈케이스 모델
- 평문 언어 명세
2) 모든 테스트 레벨에서 수행 가능
- 예: 컴포넌트를 위한 테스트는 컴포넌트 스펙 명세를 기반으로 테스트
3) 기능 테스팅은 명세 기반 기법(Specification-based technique)을 이용해 테스팅: 블랙박스 테스팅
- 소프트웨어나 시스템 기능에서 테스트 조건과 테스트 케이스를 도출, 소프트웨어의 외부적인 행동을 고려
3. 비기능 테스팅(Non-functional Testing)
- 성능 테스팅, 부하 테스팅, 스트레스 테스팅, 사용성 테스팅, 유지보수성 테스팅, 신뢰성 테스팅, 이동성 테스팅을 포함하는 개념
- 시스템이 "어떻게"동작하는가를 테스팅
1) 활용 가능한 소프트웨어 모델
- 제어 흐름 모델
- 메뉴 구조 모델
2) 소프트웨어 제품 특성 테스팅
- 비기능 테스팅을 소프트웨어 제품 특성 테스팅이라고도 함
3) 모든 테스트 레벨에서 수행
4) 다양한 척도 또는 비율(Scale) 정량화 가능한 소프트웨어 시스템의 품질 특성을 측정
- 예: 성능 테스팅에서 응답시간
5) 소프트웨어 공학 - 소프트웨어 제품 품질(ISO/IEC 9126)에서 정의된 품질 모델 참고 가능
- 비기능성을 신뢰성, 사용성, 효율성, 유지보수성, 이식성이라는 품질 특성으로 분류
- 각각의 품질 특성을 3~5가지의 품질 부특성으로 분류
4. 구조적 테스팅(Structural Testing)
1) 특정 유형의 구조에 대한 커버리지를 평가하여 테스팅의 보장성 또는 충분함(Thoroughness)을 측정하는 것이 목적
- 명세 기반 기법을 적용한 다음에 사용
2) 커버리지: 시스템 또는 소프트웨어의 구조가 테스트 수트에 의해 커버된 정도
- 구조 종류에 대해 커버된 퍼센트로 표시
- 커버리지가 100%가 아니라면, 누락된 아이템을 테스트 하기 위해 추가 테스트 설계하여 커버리지를 높임
3) 모든 테스트 레벨에서 수행
- 콜트리: 통합 테스팅 레벨
- 호출체계(구조, Hierarchy)와 같은 시스템의 아키텍쳐에 기반을 두고 테스팅: 시스템 테스팅 레벨
- 비지니스 모델이나 메뉴 구조를 활용하여 테스팅: 인수 또는 시스템, 시스템 통합 테스팅 레벨
5. 확인(재)/리그레션 테스팅(Confirmation(re-testing) and regression Testing)
1) 확인 테스팅(Confirmation Testing, Re-Testing)
- 결함이 발견되고 수정된 후에 원래의 결함이 성공적으로 제거되었는지 확인하기 위해 다시 테스트 하는 것
- 디버깅(Debugging): 결함의 원인을 찾거나 결험을 수정하기 위한 개발 활동, 테스트 활동 아님
2) 리그레션 테스팅(Regression Testing)
- 이미 테스트된 프로그램의 테스팅을 반복하는 것, 퇴행(Regression) 여부를 확인하는 테스팅
- 결함은 테스트 중인 소프트웨어에 존재하거나 다른 관련이 있는 또는 전혀 관련이 없는 소프트웨어 컴포넌트에 존재 가능
- 소프트웨어 또는 환경이 변경되면 리그레션 테스팅을 수행해야 함(예 - OS 패치)
- 수행 범위와 정도: 이전에 정상 동작했던 소프트웨어에서 결함을 발견하지 못해 야기될 수 있는 리스크에 바탕을 둠
(위험성이 높으면 리그레션 테스팅을 보다 넓은 범위로 보다 상세하고 철저하게 수행)
- 모든 테스트 레벨에서 수행 가능
- 기능, 비기능, 구조적 테스팅에 적용 가능
- 리그레션 테스팅 → 반복적 성향 → 자동화 대상
유지보수 테스팅(Maintenance Testing)
- 이미 운영되고 있는 시스템에서 수행
- 소프트웨어나 시스템이 변경, 단종되었거나 마이그레이션될 때 발생
- 변경된 부분에 대한 테스팅 이외에도 변경하지 않은 시스템 요소에 대한 리그레션 테스팅도 고려해야 함
- 명세가 매우 오래되었거나 없다면 명세서를 근간으로 수행하기 어려울 수 있음
1. 유지보수 테스팅 종류
1) 변경에 의한 유지보수 테스팅
- 릴리즈 기반의 계획된 개선을 위한 변경, 요구사항 변경에 의한 수정, 긴급 변경, 환경의 변경등이 존재
(예: 계획된 OS 또는 DB 업그레이드, OS의 새로 드러난 취약점 패치)
2) 마이그레이션을 위한 유지보수 테스팅
- 마이그레이션: 한 플랫폼에서 다른 플랫폼으로 옮겨가는 것
- 변경된 소프트웨어에 대한 운영 테스트뿐만 아니라, 새로운 환경에서의 운영 테스트도 포함
3) 단종에 의한 유지보수 테스팅
- 데이터를 마이그레이션 하는 테스팅을 포함
- 데이터의 보유기간이 필요하다면 데이터 저장관련 사항을 테스팅 해야 함
2. 유지보수 테스팅의 범위
- 변경 사항의 리스크 및 크기, 기존 시스템의 크기와 관련됨
1) 변경 내용에 따라, 모든 테스트 유형에 대해 모든 테스트 레벨에서 수행 가능
- 예: 변경된 내용이 메모리 누출을 막기 위한 컴포넌트 수정(비기능 테스팅 유형을 컴포넌트 레벨에서 유지 보수 테스팅 하고 필요 시 회귀 테스팅)
2) 영향도 분석(Impact analysis): 변경으로 인해 기존 시스템이 어떻게 영향을 받는지 결정하는 것
- 리그레션 테스팅 수행 정도를 결정하는데 이용
'Testing' 카테고리의 다른 글
4-3-1. 명세기반 기법(Specification-based technique) (4) | 2015.07.20 |
---|---|
4-2. 테스트 설계 기법의 종류 (0) | 2015.07.20 |
4-1. 테스트 설계 및 구현 프로세스 (0) | 2015.07.20 |
2-2. 테스트 레벨 (0) | 2015.07.20 |
2-1. 소프트웨어 개발 모델 (1) | 2015.07.20 |
1-6. 소프트웨어 테스팅을 제약하는 요소 (0) | 2015.07.14 |
1-5. 테스팅의 독립성, 테스트의 심리학 (0) | 2015.07.13 |
1-4. 테스트 프로세스 (0) | 2015.07.13 |
1-3. 테스팅의 일반적인 원리 (0) | 2015.07.13 |