소프트웨어 테스트: Difference between revisions

From CS Wiki
(댓글 내용 추가)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[분류:소프트웨어 공학]]
[[분류:소프트웨어 공학]]
;Software Test
;Software Test


== 개요 ==
==개요==
=== 정의 ===
===정의===
* 노출되지 않은 숨어있는 결함(Fault)을 찾기 위해 소프트웨어를 작동시키는 일련의 행위와 절차
* 오류 발견을 목적으로 프로그램을 실행하여 품질을 평가하는 과정
* 개발된 소프트웨어의 결함과 문제를 식별하고 품질을 평가하며 품질을 개선하기 위한 일련의 활동
* 일반적으로 테스트 케이스에 따라 SW를 동적으로 실행시켜 예상결과치와 비교 분석
* SW의 동작과 성능, 안정성이 요구되는 수준을 만족하는지 확인하기 위한 결함을 발견하는 메커니즘


=== 목적 ===
*노출되지 않은 숨어있는 결함(Fault)을 찾기 위해 소프트웨어를 작동시키는 일련의 행위와 절차
* 프로그램의 잠재된 오류의 발견
*오류 발견을 목적으로 프로그램을 실행하여 품질을 평가하는 과정
* 기술적인 기능 및 성능의 확인
*개발된 소프트웨어의 결함과 문제를 식별하고 품질을 평가하며 품질을 개선하기 위한 일련의 활동
* 사용자 요구 만족도 향상
*일반적으로 테스트 케이스에 따라 SW를 동적으로 실행시켜 예상결과치와 비교 분석
* 제품 신뢰도 향상
*SW의 동작과 성능, 안정성이 요구되는 수준을 만족하는지 확인하기 위한 결함을 발견하는 메커니즘
*시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 수동 또는 자동 방법을 동원하여 검사하고 평가하는 일련의 과정 - IEEE, 1993


=== [[소프트웨어 테스트 원리|테스트의 일반적인 원리]] ===
===목적===
 
*프로그램의 잠재된 오류의 발견
*기술적인 기능 및 성능의 확인
*사용자 요구 만족도 향상
*제품 신뢰도 향상
 
===[[소프트웨어 테스트 원리|테스트의 일반적인 원리]]===
{| class="wikitable"
{| class="wikitable"
! 원리
!원리
! 내용
!내용
! 원인
!원인
|-
|-
| 결함 발견
|결함 발견
|  
|
* 결함제거가 아닌 결함의 발견을 목적으로 함
*결함제거가 아닌 결함의 발견을 목적으로 함
|  
|
* Test 본연의 역할
*Test 본연의 역할
|-
|-
| 불완전성
|불완전성
|  
|
* 완벽한 테스팅은 불가능
*완벽한 테스팅은 불가능
* 무한경로, 무한입력값, 무한타이밍
*무한경로, 무한입력값, 무한타이밍
|  
|
* 자원의 한계
*자원의 한계
|-
|-
| 정황 의존성
|정황 의존성
|  
|
* 테스트는 테스트 주변환경에 의한 영향을 받음
*테스트는 테스트 주변환경에 의한 영향을 받음
|  
|
* 외부요소, 심리요소
*외부요소, 심리요소
|-
|-
| 초기 집중
|초기 집중
([[요르돈 법칙]])
([[요르돈 법칙]])
|  
|
* 개발 설계 시 부터 테스트를 고려
*개발 설계 시 부터 테스트를 고려
* 결함의 조기발견 및 재유입 방지
*결함의 조기발견 및 재유입 방지
|  
|
* 품질비용 감소
*품질비용 감소
|-
|-
| 결함 집중
|결함 집중
|  
|
* 결함의 80%는 20%코드에 집중
*결함의 80%는 20%코드에 집중
* 결함이 높은 곳에 자원집중
*결함이 높은 곳에 자원집중
|  
|
* 파레토 법칙
*파레토 법칙
|-
|-
| 살충제 페러독스
|살충제 페러독스
|  
|
* 동일한 테스트 전략, 기법을 적용할 시 내성이 생김
*동일한 테스트 전략, 기법을 적용할 시 내성이 생김
|  
|
* 테스터의 수동적 자세
*테스터의 수동적 자세
|-
|-
| 오류-부재 궤변
|오류-부재 궤변
|  
|
* 결함을 모두 제거하였다고 품질이 우수하다고 볼 순 없음
*결함을 모두 제거하였다고 품질이 우수하다고 볼 순 없음
|  
|
* SW 요구사항 불만족
*SW 요구사항 불만족
|}
|}


== 참조 모델 ==
==참조 모델==
* [[TMMi]]
* [[ISO/IEC/IEEE 29119]]
* [[확인과 검증|확인과 검증(V&V)]]


== 테스트 종류 ==
*[[TMMi]]
=== 단계별 구분 ===
*[[ISO/IEC/IEEE 29119]]
*[[확인과 검증|확인과 검증(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 16:18, 21 July 2023


Software Test

개요[edit | edit source]

정의[edit | edit source]

  • 노출되지 않은 숨어있는 결함(Fault)을 찾기 위해 소프트웨어를 작동시키는 일련의 행위와 절차
  • 오류 발견을 목적으로 프로그램을 실행하여 품질을 평가하는 과정
  • 개발된 소프트웨어의 결함과 문제를 식별하고 품질을 평가하며 품질을 개선하기 위한 일련의 활동
  • 일반적으로 테스트 케이스에 따라 SW를 동적으로 실행시켜 예상결과치와 비교 분석
  • SW의 동작과 성능, 안정성이 요구되는 수준을 만족하는지 확인하기 위한 결함을 발견하는 메커니즘
  • 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 수동 또는 자동 방법을 동원하여 검사하고 평가하는 일련의 과정 - IEEE, 1993

목적[edit | edit source]

  • 프로그램의 잠재된 오류의 발견
  • 기술적인 기능 및 성능의 확인
  • 사용자 요구 만족도 향상
  • 제품 신뢰도 향상

테스트의 일반적인 원리[edit | edit source]

원리 내용 원인
결함 발견
  • 결함제거가 아닌 결함의 발견을 목적으로 함
  • Test 본연의 역할
불완전성
  • 완벽한 테스팅은 불가능
  • 무한경로, 무한입력값, 무한타이밍
  • 자원의 한계
정황 의존성
  • 테스트는 테스트 주변환경에 의한 영향을 받음
  • 외부요소, 심리요소
초기 집중

(요르돈 법칙)

  • 개발 설계 시 부터 테스트를 고려
  • 결함의 조기발견 및 재유입 방지
  • 품질비용 감소
결함 집중
  • 결함의 80%는 20%코드에 집중
  • 결함이 높은 곳에 자원집중
  • 파레토 법칙
살충제 페러독스
  • 동일한 테스트 전략, 기법을 적용할 시 내성이 생김
  • 테스터의 수동적 자세
오류-부재 궤변
  • 결함을 모두 제거하였다고 품질이 우수하다고 볼 순 없음
  • SW 요구사항 불만족

참조 모델[edit | edit source]

테스트 종류[edit | edit source]

단계별 구분[edit | edit source]

V 다이어그램 V다이어그램.jpg

  • 소프트웨어 개발 생명주기에 따라 대응되는 테스트를 표현한 다이어그램
테스트 세부 내용
단위 테스트

(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]

단위 테스트- 정적/동적 테스트

통합 테스트- 상향식/하향식/백본/빅뱅 테스트

시스템 테스트 - 기능/비기능 테스트

인수 테스트 - 알파/베타 테스트

같이 보기[edit | edit source]