소프트웨어 테스트 편집하기

IT위키

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
1번째 줄: 1번째 줄:
[[분류:소프트웨어 공학]]
[[분류:소프트웨어 공학]]
;Software Test
;Software Test


==개요==
== 개요 ==
===정의===
=== 정의 ===
 
* 노출되지 않은 숨어있는 결함(Fault)을 찾기 위해 소프트웨어를 작동시키는 일련의 행위와 절차
*노출되지 않은 숨어있는 결함(Fault)을 찾기 위해 소프트웨어를 작동시키는 일련의 행위와 절차
* 오류 발견을 목적으로 프로그램을 실행하여 품질을 평가하는 과정
*오류 발견을 목적으로 프로그램을 실행하여 품질을 평가하는 과정
* 개발된 소프트웨어의 결함과 문제를 식별하고 품질을 평가하며 품질을 개선하기 위한 일련의 활동
*개발된 소프트웨어의 결함과 문제를 식별하고 품질을 평가하며 품질을 개선하기 위한 일련의 활동
* 일반적으로 테스트 케이스에 따라 SW를 동적으로 실행시켜 예상결과치와 비교 분석
*일반적으로 테스트 케이스에 따라 SW를 동적으로 실행시켜 예상결과치와 비교 분석
* SW의 동작과 성능, 안정성이 요구되는 수준을 만족하는지 확인하기 위한 결함을 발견하는 메커니즘
*SW의 동작과 성능, 안정성이 요구되는 수준을 만족하는지 확인하기 위한 결함을 발견하는 메커니즘
*시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 수동 또는 자동 방법을 동원하여 검사하고 평가하는 일련의 과정 - IEEE, 1993
 
===목적===
 
*프로그램의 잠재된 오류의 발견
*기술적인 기능 및 성능의 확인
*사용자 요구 만족도 향상
*제품 신뢰도 향상
 
===[[소프트웨어 테스트 원리|테스트의 일반적인 원리]]===
{| class="wikitable"
!원리
!내용
!원인
|-
|결함 발견
|
*결함제거가 아닌 결함의 발견을 목적으로 함
|
*Test 본연의 역할
|-
|불완전성
|
*완벽한 테스팅은 불가능
*무한경로, 무한입력값, 무한타이밍
|
*자원의 한계
|-
|정황 의존성
|
*테스트는 테스트 주변환경에 의한 영향을 받음
|
*외부요소, 심리요소
|-
|초기 집중
([[요르돈 법칙]])
|
*개발 설계 시 부터 테스트를 고려
*결함의 조기발견 및 재유입 방지
|
*품질비용 감소
|-
|결함 집중
|
*결함의 80%는 20%코드에 집중
*결함이 높은 곳에 자원집중
|
*파레토 법칙
|-
|살충제 페러독스
|
*동일한 테스트 전략, 기법을 적용할 시 내성이 생김
|
*테스터의 수동적 자세
|-
|오류-부재 궤변
|
*결함을 모두 제거하였다고 품질이 우수하다고 볼 순 없음
|
*SW 요구사항 불만족
|}
 
==참조 모델==


*[[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)
||
||  
*하드웨어 호환성
* 하드웨어 구성
*파일시스템 구성
* 소프트웨어 구성
*다른 소프트웨어와의 연계
* 파일시스템 구성
* 다른 소프트웨어와의 연계
|}
|}


===접근방법에 따른 구분===
=== 접근방법에 따른 구분 ===
====[[정적 테스트]]====
* [[블랙박스 테스트]]
 
* [[화이트박스 테스트]]
*동료 검토
*워크스루
*[[정형 기술 검토]]
 
====[[동적 테스트]]====
 
*'''소스 코드 열람에 따른 구분'''
**'''[[블랙박스 테스트]]''': 동치분할 검사, 경계값 분석, 오류 예측 검사, 비교 검사, 원인 효과 그래프
**'''[[화이트박스 테스트]]''': 조건 검사, 루프 검사, 기대값 분석, 데이터 흐름 검사
*'''설계 기법에 따른 분류'''
**'''[[명세 기반 테스트]]''': 동치 분할, 경계값 분석, 상태 전이 모델
**'''[[구조 기반 테스트]]''': 제어흐름 테스트, 자료흐름 테스트
**'''[[경험 기반 테스트]]''': 애드혹 테스트, 탐색적 테스트 등
 
===계획 정도에 따른 분류===
 
*[[애드혹 테스트]]: 계획 없이 휴리스틱으로 수행
*[[탐색적 테스트]]: 최소한의 계획으로 수행
*[[스크립트 테스트]]: 방법론 기반, 구체적 시나리오하에서 수행
 
== 요약 ==
단위 테스트- 정적/동적 테스트
 
통합 테스트- 상향식/하향식/백본/빅뱅 테스트
 
시스템 테스트 - 기능/비기능 테스트
 
인수 테스트 - 알파/베타 테스트
 
==같이 보기==
 
*[[테스트 오라클]]
*[[리틀의 법칙]]
*[[퍼즈 테스트]]
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 IT위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소 편집 도움말 (새 창에서 열림)