소프트웨어 테스트: Difference between revisions
From IT Wiki
(→동적 테스트) |
(댓글 내용 추가) |
||
(13 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
[[분류:소프트웨어 공학]] | [[분류:소프트웨어 공학]] | ||
;Software Test | ;Software Test | ||
== 개요 == | ==개요== | ||
=== 정의 === | ===정의=== | ||
* 노출되지 않은 숨어있는 결함(Fault)을 찾기 위해 소프트웨어를 작동시키는 일련의 행위와 절차 | |||
* 오류 발견을 목적으로 프로그램을 실행하여 품질을 평가하는 과정 | *노출되지 않은 숨어있는 결함(Fault)을 찾기 위해 소프트웨어를 작동시키는 일련의 행위와 절차 | ||
* 개발된 소프트웨어의 결함과 문제를 식별하고 품질을 평가하며 품질을 개선하기 위한 일련의 활동 | *오류 발견을 목적으로 프로그램을 실행하여 품질을 평가하는 과정 | ||
* 일반적으로 테스트 케이스에 따라 SW를 동적으로 실행시켜 예상결과치와 비교 분석 | *개발된 소프트웨어의 결함과 문제를 식별하고 품질을 평가하며 품질을 개선하기 위한 일련의 활동 | ||
* SW의 동작과 성능, 안정성이 요구되는 수준을 만족하는지 확인하기 위한 결함을 발견하는 메커니즘 | *일반적으로 테스트 케이스에 따라 SW를 동적으로 실행시켜 예상결과치와 비교 분석 | ||
*SW의 동작과 성능, 안정성이 요구되는 수준을 만족하는지 확인하기 위한 결함을 발견하는 메커니즘 | |||
*시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 수동 또는 자동 방법을 동원하여 검사하고 평가하는 일련의 과정 - IEEE, 1993 | |||
===목적=== | |||
*프로그램의 잠재된 오류의 발견 | |||
* 프로그램의 잠재된 오류의 발견 | *기술적인 기능 및 성능의 확인 | ||
* 기술적인 기능 및 성능의 확인 | *사용자 요구 만족도 향상 | ||
* 사용자 요구 만족도 향상 | *제품 신뢰도 향상 | ||
* 제품 신뢰도 향상 | |||
=== 테스트의 일반적인 원리 === | ===[[소프트웨어 테스트 원리|테스트의 일반적인 원리]]=== | ||
{| class="wikitable" | {| class="wikitable" | ||
! 원리 | !원리 | ||
! 내용 | !내용 | ||
! 원인 | !원인 | ||
|- | |- | ||
| 결함 발견 | |결함 발견 | ||
| | | | ||
* 결함제거가 아닌 결함의 발견을 목적으로 함 | *결함제거가 아닌 결함의 발견을 목적으로 함 | ||
| | | | ||
* Test 본연의 역할 | *Test 본연의 역할 | ||
|- | |- | ||
| 불완전성 | |불완전성 | ||
| | | | ||
* 완벽한 테스팅은 불가능 | *완벽한 테스팅은 불가능 | ||
* 무한경로, 무한입력값, 무한타이밍 | *무한경로, 무한입력값, 무한타이밍 | ||
| | | | ||
* 자원의 한계 | *자원의 한계 | ||
|- | |- | ||
| 정황 의존성 | |정황 의존성 | ||
| | | | ||
* 테스트는 테스트 주변환경에 의한 영향을 받음 | *테스트는 테스트 주변환경에 의한 영향을 받음 | ||
| | | | ||
* 외부요소, 심리요소 | *외부요소, 심리요소 | ||
|- | |- | ||
| 초기 집중 | |초기 집중 | ||
([[요르돈 법칙]]) | ([[요르돈 법칙]]) | ||
| | | | ||
* 개발 설계 시 부터 테스트를 고려 | *개발 설계 시 부터 테스트를 고려 | ||
* 결함의 조기발견 및 재유입 방지 | *결함의 조기발견 및 재유입 방지 | ||
| | | | ||
* 품질비용 감소 | *품질비용 감소 | ||
|- | |- | ||
| 결함 집중 | |결함 집중 | ||
| | | | ||
* 결함의 80%는 20%코드에 집중 | *결함의 80%는 20%코드에 집중 | ||
* 결함이 높은 곳에 자원집중 | *결함이 높은 곳에 자원집중 | ||
| | | | ||
* 파레토 법칙 | *파레토 법칙 | ||
|- | |- | ||
| 살충제 페러독스 | |살충제 페러독스 | ||
| | | | ||
* 동일한 테스트 전략, 기법을 적용할 시 내성이 생김 | *동일한 테스트 전략, 기법을 적용할 시 내성이 생김 | ||
| | | | ||
* 테스터의 수동적 자세 | *테스터의 수동적 자세 | ||
|- | |- | ||
| 오류-부재 궤변 | |오류-부재 궤변 | ||
| | | | ||
* 결함을 모두 제거하였다고 품질이 우수하다고 볼 순 없음 | *결함을 모두 제거하였다고 품질이 우수하다고 볼 순 없음 | ||
| | | | ||
* SW 요구사항 불만족 | *SW 요구사항 불만족 | ||
|} | |} | ||
==참조 모델== | |||
*[[TMMi]] | |||
* [[TMMi]] | *[[ISO/IEC/IEEE 29119]] | ||
* [[ISO/IEC/IEEE 29119]] | *[[확인과 검증|확인과 검증(V&V)]] | ||
* [[확인과 검증|확인과 검증(V&V)]] | |||
== 테스트 종류 == | ==테스트 종류== | ||
=== 단계별 구분 === | ===단계별 구분=== | ||
[[V 다이어그램]] | [[V 다이어그램]] | ||
[[파일:V다이어그램.jpg]] | [[파일:V다이어그램.jpg]] | ||
* 소프트웨어 개발 생명주기에 따라 대응되는 테스트를 표현한 다이어그램 | |||
*소프트웨어 개발 생명주기에 따라 대응되는 테스트를 표현한 다이어그램 | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! 테스트 !! 세부 내용 | !테스트!!세부 내용 | ||
|- | |- | ||
| [[단위 테스트]] | |[[단위 테스트]] | ||
(Unit Test) | (Unit Test) | ||
|| | || | ||
* 인터페이스 테스트 | *인터페이스 테스트 | ||
* 자료구조 테스트 | *자료구조 테스트 | ||
* 수행경로 | *수행경로 테스트 | ||
|- | |- | ||
| [[통합 테스트]] | |[[통합 테스트]] | ||
(Integration Test) | (Integration Test) | ||
|| | || | ||
* 하향식 통합 | *하향식 통합 | ||
* 상향식 통합 | *상향식 통합 | ||
*백본 통합 | |||
|- | |- | ||
| [[시스템 테스트]] | |[[시스템 테스트]] | ||
(System Test) | (System Test) | ||
|| | || | ||
*[[보안 테스트]] | |||
* [[보안 테스트]] | *민감도 테스트 | ||
*[[성능 테스트]] | |||
* 민감도 테스트 | |||
* [[성능 테스트]] | |||
|- | |- | ||
| [[인수 테스트]] | |[[인수 테스트]] | ||
(Acceptance Test) | (Acceptance Test) | ||
|| | || | ||
* 알파 테스트 | *알파 테스트 : 통제된 환경에서 선별된 사용자들(사내 직원 등)이 개발자와 함께 수행하는 테스트 | ||
* 베타 테스트 | *베타 테스트 : 실제와 동일한 환경에서 사외의 사용자들이 테스트하게 하고 피드백을 받는 방법 | ||
|- | |- | ||
| [[설치 테스트]] | |[[설치 테스트]] | ||
(Install Test) | (Install Test) | ||
|| | || | ||
* 하드웨어 | *하드웨어 호환성 | ||
*파일시스템 구성 | |||
* 파일시스템 구성 | *다른 소프트웨어와의 연계 | ||
* 다른 소프트웨어와의 연계 | |||
|} | |} | ||
=== 접근방법에 따른 구분 === | ===접근방법에 따른 구분=== | ||
==== 정적 테스트 ==== | ====[[정적 테스트]]==== | ||
* [[정형 기술 검토]] | |||
*동료 검토 | |||
*워크스루 | |||
*[[정형 기술 검토]] | |||
====[[동적 테스트]]==== | |||
*'''소스 코드 열람에 따른 구분''' | |||
**'''[[블랙박스 테스트]]''': 동치분할 검사, 경계값 분석, 오류 예측 검사, 비교 검사, 원인 효과 그래프 | |||
**'''[[화이트박스 테스트]]''': 조건 검사, 루프 검사, 기대값 분석, 데이터 흐름 검사 | |||
*'''설계 기법에 따른 분류''' | |||
**'''[[명세 기반 테스트]]''': 동치 분할, 경계값 분석, 상태 전이 모델 | |||
**'''[[구조 기반 테스트]]''': 제어흐름 테스트, 자료흐름 테스트 | |||
**'''[[경험 기반 테스트]]''': 애드혹 테스트, 탐색적 테스트 등 | |||
* | ===계획 정도에 따른 분류=== | ||
*[[애드혹 테스트]]: 계획 없이 휴리스틱으로 수행 | |||
*[[탐색적 테스트]]: 최소한의 계획으로 수행 | |||
*[[스크립트 테스트]]: 방법론 기반, 구체적 시나리오하에서 수행 | |||
* 구조 테스트 | == 요약 == | ||
단위 테스트- 정적/동적 테스트 | |||
* | |||
통합 테스트- 상향식/하향식/백본/빅뱅 테스트 | |||
시스템 테스트 - 기능/비기능 테스트 | |||
* | |||
인수 테스트 - 알파/베타 테스트 | |||
* [[ | ==같이 보기== | ||
* [[ | |||
*[[테스트 오라클]] | |||
*[[리틀의 법칙]] | |||
*[[퍼즈 테스트]] | |||
* [[ | |||
* [[ |
Latest revision as of 06:18, 22 July 2023
- Software Test
개요[edit | edit source]
정의[edit | edit source]
- 노출되지 않은 숨어있는 결함(Fault)을 찾기 위해 소프트웨어를 작동시키는 일련의 행위와 절차
- 오류 발견을 목적으로 프로그램을 실행하여 품질을 평가하는 과정
- 개발된 소프트웨어의 결함과 문제를 식별하고 품질을 평가하며 품질을 개선하기 위한 일련의 활동
- 일반적으로 테스트 케이스에 따라 SW를 동적으로 실행시켜 예상결과치와 비교 분석
- SW의 동작과 성능, 안정성이 요구되는 수준을 만족하는지 확인하기 위한 결함을 발견하는 메커니즘
- 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 수동 또는 자동 방법을 동원하여 검사하고 평가하는 일련의 과정 - IEEE, 1993
목적[edit | edit source]
- 프로그램의 잠재된 오류의 발견
- 기술적인 기능 및 성능의 확인
- 사용자 요구 만족도 향상
- 제품 신뢰도 향상
테스트의 일반적인 원리[edit | edit source]
원리 | 내용 | 원인 |
---|---|---|
결함 발견 |
|
|
불완전성 |
|
|
정황 의존성 |
|
|
초기 집중
(요르돈 법칙) |
|
|
결함 집중 |
|
|
살충제 페러독스 |
|
|
오류-부재 궤변 |
|
|
참조 모델[edit | edit source]
테스트 종류[edit | edit source]
단계별 구분[edit | edit source]
- 소프트웨어 개발 생명주기에 따라 대응되는 테스트를 표현한 다이어그램
테스트 | 세부 내용 |
---|---|
단위 테스트
(Unit Test) |
|
통합 테스트
(Integration Test) |
|
시스템 테스트
(System Test) |
|
인수 테스트
(Acceptance Test) |
|
설치 테스트
(Install Test) |
|
접근방법에 따른 구분[edit | edit source]
정적 테스트[edit | edit source]
- 동료 검토
- 워크스루
- 정형 기술 검토
동적 테스트[edit | edit source]
- 소스 코드 열람에 따른 구분
- 설계 기법에 따른 분류
계획 정도에 따른 분류[edit | edit source]
요약[edit | edit source]
단위 테스트- 정적/동적 테스트
통합 테스트- 상향식/하향식/백본/빅뱅 테스트
시스템 테스트 - 기능/비기능 테스트
인수 테스트 - 알파/베타 테스트