Study_Note

types of test design techniques 본문

QA_study

types of test design techniques

12월7일생 2023. 7. 27. 11:27
728x90
반응형

테스트 설계 기법의 종류
(types of test design techniques)

 

명세기반 테스트 (Specification-Based Testing)

명세기반 테스트(Specification-Based Testing)는 소프트웨어의 요구사항이나 명세서에 기반하여 테스트를 설계하고 수행하는 테스트 접근 방법입니다. 즉, 소프트웨어의 동작과 기능을 정의하는 문서들을 활용하여 테스트 케이스를 개발하고 실행하는 방법을 말합니다.

이러한 테스트는 소프트웨어가 요구사항과 명세서에 명시된 기대 동작을 정확하게 수행하는지 확인하는 데 중점을 둡니다. 명세기반 테스트는 특정 기능이나 시나리오에 대한 테스트를 간단하고 체계적으로 수행하기 위해 입력값을 분류하거나 경계값을 확인하는 등의 접근 방법을 사용합니다.

이러한 테스트 방법은 소프트웨어 개발 초기 단계부터 참여하여 요구사항을 파악하고 테스트 케이스를 작성하므로 결함을 초기에 발견하고 수정할 수 있어 품질 향상에 도움이 됩니다. 또한, 기능이 수정되거나 추가될 때마다 요구사항과 명세서를 기반으로 테스트를 반복하여 변경으로 인한 영향을 검증하는 데 유용합니다.

요약하면, 명세기반 테스트는 소프트웨어의 명세서에 기반하여 요구사항을 충족하는지 확인하는 테스트 방법으로, 정확성과 체계성을 갖춘 테스트를 수행하여 소프트웨어의 신뢰성을 높이는 데에 도움이 됩니다.

 

동등 분할(Equivalence Partitioning) 테스트: 

입력값을 동등한 그룹으로 나누고, 각 그룹에서 대표값으로 테스트를 수행하는 기법입니다. 각 그룹은 동일한 결과를 가져야 합니다. 예를 들어, 양수, 음수, 그리고 0을 입력으로 받는 함수를 테스트할 때, 양수, 음수, 0으로 분할하여 각각 대표값을 선택하여 테스트를 수행합니다.

경계값 분석(Boundary Value Analysis) 테스트: 

입력값의 경계 부근에서 문제가 발생하기 쉬우므로, 경계값 주변에서 테스트를 집중적으로 수행하는 기법입니다. 예를 들어, 0에서 최대값까지의 범위를 갖는 함수를 테스트할 때, 0, 최대값, 최대값 바로 전 값, 그리고 0 바로 다음 값 등의 경계값들을 테스트 케이스로 선택합니다.

원인-효과 그래프(Cause-Effect Graph) 테스트: 

입력 조건과 결과 사이의 관계를 그래프로 나타내어 테스트 케이스를 도출하는 기법입니다. 이 그래프를 이용하여 다양한 입력 조합을 효과적으로 테스트할 수 있습니다.

상태전이(State Transition) 테스트: 

시스템이 상태 전이를 잘 처리하는지 검증하는 기법으로, 상태 다이어그램을 기반으로 테스트 케이스를 개발합니다. 상태가 변경될 때마다 올바른 상태 전이가 일어나는지 확인합니다.

결정 테이블(Decision Table) 테스트: 

복잡한 비즈니스 규칙을 검증하기 위해 조건과 결과를 표 형태로 나타내고 가능한 모든 조합을 테스트하는 기법입니다. 조건에 따라 다른 결과가 발생하는 경우에 유용하게 사용됩니다.

 

 

구조기반 테스트(Structure-Based Testing)

구조기반 테스트(Structure-Based Testing)는 소프트웨어의 내부 구조와 논리 흐름에 기반하여 테스트를 설계하고 수행하는 테스트 접근 방법입니다. 이 방법은 소프트웨어의 코드를 직접 분석하고 테스트 케이스를 작성하며, 프로그램의 구조적 요소들을 중심으로 테스트를 수행합니다.


구조기반 테스트는 코드의 실행 경로와 논리를 중심으로 테스트를 수행하기 때문에 코드의 품질과 안정성을 높이는 데에 도움이 됩니다. 또한, 구조 기반 테스트를 통해 테스트 커버리지를 측정하여 얼마나 많은 코드가 테스트되었는지 확인할 수 있습니다. 이를 통해 프로그램의 결함을 발견하고 수정할 수 있어 소프트웨어의 신뢰성을 향상시키는 데에 도움이 됩니다.


조건/결정 커버리지(Condition/Decision Coverage): 

프로그램의 조건식과 결정문들이 모두 실행되고 참과 거짓으로 모두 테스트되는지 확인합니다.

경로 커버리지(Path Coverage): 

프로그램의 모든 실행 경로를 테스트하는지 확인합니다. 이는 모든 분기와 반복문을 따라가며 테스트 케이스를 만드는 것을 의미합니다.

결정/조건 커버리지(Decision/Condition Coverage): 

프로그램의 모든 조건문과 결정문들을 확인하는 커버리지를 측정합니다.

상태 기반 테스트(State-Based Testing): 

프로그램의 상태와 이벤트를 기반으로 테스트 케이스를 작성합니다. 주로 상태 전이 다이어그램과 같은 도구를 사용하여 테스트를 설계합니다.

구문 커버리지(Syntax Coverage): 

프로그램의 모든 구문을 테스트하는 커버리지를 측정합니다.


[요약]

명세기반 테스트 (Specification-Based Testing)

  • 동등 분할(Equivalence Partitioning) 테스트
  • 경계값 분석(Boundary Value Analysis) 테스트
  • 원인-효과 그래프(Cause-Effect Graph) 테스트
  • 상태전이(State Transition) 테스트
  • 결정 테이블(Decision Table) 테스트

구조기반 테스트 (Structure-Based Testing)

  • 조건/결정 커버리지(Condition/Decision Coverage)
  • 경로 커버리지(Path Coverage)
  • 결정/조건 커버리지(Decision/Condition Coverage)
  • 상태 기반 테스트(State-Based Testing)
  • 구문 커버리지(Syntax Coverage)