본문 바로가기
ISTQB CTFL

4. 테스트 기법

by 양초털이범 2021. 5. 25.

4.1.1 테스트 기법의 종류와 특성



블랙박스 테스트 화이트박스 테스트 경험기반 테스트
방법 적절한 테스트 베이시스에 대한 분석을 기반으로 수행
내부 구조를 고려하지 않고 입출력에만 집중
아키텍처, 세부 설계, 내부 구조, 테스트 대상의 코드에 대한 분석을 기반
테스트 대상의 내부 구조와 처리에 집중한다.
개발자, 테스터, 사용자의 경험을 활용하여 테스트를 설계, 구현, 실행
블랙박스, 화이트박스 테스트와 결해서 사용하는 경우가 많음
특징 테스트 컨디션, 테스트 케이스, 테스트 데이터는 테스터 베이시스로부터 도출
기능 테스팅과 비기능 테스팅에 적용 가능
사용자 스토리를 테스트 베이시스로 도출
테스트 케이스는 요구사항과 결과물 간의 차이와 편차를 식별하는데 사용
테스트 컨디션, 테스트 케이스, 테스트 데이터, 코드, SW 아키텍처 등 관련된 정보를 포함한 테스트 베이시스로부터 도출(테스트 데이터는 코드)
커버리지는 구조 내에서 테스트한 항목과 테스트 베이시스에 적용된 기법을 기준으로 측정
테스트 컨디션, 테스트 케이스 테스트 데이터는 테스터, 개발자, 사용자 관계자의 지식과 경험 같은 테스트 베이시스로부터 도출

 

4.2.1 동등 분할(응용 가능한가)


수학적인 등가 집합을 만든 후, 각 등가 집합의 원소 중 대푯값을 선택하여 테스트 케이스를 도출하는 것이 가능.

ex) 1~5 사이의 값이면 2, 3, 4

 

동등 분할 정해진 대푯값이 있다면 그것만으로 테스트 케이스를 도출하는 것이 가능.

ex) 안드로이드의 해상도

 

커버리지 달성을 위해서는 각 분할에서 최소 한 개의 값을 사용해 테스트 케이스 작성이 필요

ex) 배터리의 3단계 범위를 모두 포함하는 정수가 각각 필요

 

4.2.2 경계값 분석(응용 가능한가)


동등 분할의 경계에서 결함이 발견될 확률이 높기 때문에 결함을 예방하기 위해 경계값까지 포함하여 테스트하는 기법

ex) 유효 경계값 : 유효한 분할 영역의 경계값(1~5 : 유효 경계값은 1, 5)

ex) 비유효 경계값 : 비유효한 분할 영역의 경계값(1~5 : 비유효 경계값은 0, 6)

 

범위에 따라 경계값의 범위가 달라짐

ex) 2-포인트 경계값 : 유효한 분할 값에서 2개의 값(1~5 : 0, 1, 5, 6)

ex) 3-포인트 경계값 : 유효한 분할 값에서 3개의 값(1~5 : 0, 1, 2, 4, 5, 6)

 

커버리지 : 경계값에 포함되는 테스트 입력값 / 경계값

 

4.2.3 결정 테이블 테스팅(응용 가능한가)


조건에 대한 테이블을 작성하여 하나하나 구분하는 테스팅 기법

 

커버리지 계산을 위해선 규칙에 만족하는 테스트 케이스를 작성해야 한다.

 

표기법(조건)

  • Y, 조건이 참이라는 것을 의미 (T 또는 1 로 표기할 수 있음)
  • N, 조건이 거짓이라는 것을 의미 (F 또는 0 으로도 표기할 수 있음)
  • —, 조건의 값이 중요하지 않다는 것을 의미 (N/A 로 표기할 수 있음)

표기법(기대 결과)

  • X, 행동이 일어난다는 것을 의미 (Y, T, 1 로 표기할 수 있음)
  • 공백(blank), 행동이 일어나지 않음을 의미 (—, N, F, 0 으로 표기할 수 있음)

불필요한 조건은 테스트 할 필요가 없다.

 

4.2.4 상태 전이 테스팅


시스템은 현재 상황과 이전의 이력을 반영하는 상태 및 그 변화에 따라 다르게 동작할 수 있다. 이를 상태 전이도로 표현 가능하다. 이를 기반으로 테스팅에 활용하는 것을 상태전이 테스팅이라 한다.

 

종류

  • 유효전이 : 상태 전이 다이어그램에 측정 가능한 모든 전이
  • 비유효전이 : 상태 전이 다이어그램에 측정 불가능한 모든 전이

커버리지 : 테스트한 전이 / 측정 가능한 모든 전이

 

 

4.2.5 유스케이스 테스팅 (유스케이스에서 테스트 케이스를 도출하는 방법을 설명할 수 있다.)


유스케이스는 액터(사용자, 외부 HW, 기타 컴포넌트)와 대상간(유스케이스를 적용하는 컴포넌트나 시스템)의 관계를 나타낸 케이스이다.

 

특징

  • 유스케이스는 SW 기능에 대한 요구사항을 통합한다.
  • 유스케이스는 대상이 하나 이상의 액터와 협력하여 수행할 수 있는 동작을 명시한다.
  • 유스케이스는 상호작용과 활동 or 사전조건 or 사후조건 or 자연어로 설명 가능하다.
  • 액터와 대상 간의 상호작용으로 대상의 상태가 변경될 수 있다.
  • 상호작용은 워크플로우, 활동 다이어그램, 비즈니스 프로세스 모델로 시각화 가능하다.
  • 유스케이스는 예외 동작 및 오류 처리를 포함한 기본 동작의 가능한 변형이 포함된다.
  • 테스트는 정의한 동작을 실행하도록 설계된다.
  • 유스케이스에서 테스트 케이스를 도출하기 위해서는 테스트 케이스는 관련자들(actors)과 협력해 테스트 중인 시스템이 수행하는 명시된 기본, 예외 및 에러 동작의 실행을 위해 생성한다.

커버리지 : 테스트한 유스케이스 동작수 / 모든 유스케이스 동작수

 

4.3.1 구문 테스팅과 커버리지(구문 커버리지를 설명할 수 있다)


구문 테스팅 : 코드의 잠재적으로 실행 가능한 구문을 실행하는 테스트 기법

 

구문 커버리지 : 소스코드에서 실행한 구문의 백분율을 계산하고 측정에 사용하는 메트릭

 

커버리지 : 테스트로 실행한 구문의 수 / 테스트 대상의 모든 실행 가능한 구문의 수

 

4.3.2 결정 테스팅과 커버리지 (결정 커버리지를 설명할 수 있다.)


결정 테스팅 : 결정 테스팅은 코드에 존재하는 결정문을 실행하고 결정문의 결과에 따라 실행되는 코드를 테스트하는 기법

 

커버리지 : 테스트로 실행된 결정문 결과의 수/테스트 대상의 가능한 모든 결정문의 결과의 수

 

4.3.3 구문 및 결정 테스팅의 가치(구문 및 결정 커버리지의 가치를 설명할 수 있다.)


특징

  • 구문 커버리지를 100% 달성하면 코드에 존재하는 모든 실행 구문을 최소한 한 번씩은 테스트 한 것이지만 모든 결정 로직을 테스트했다는 것은 보장하지 않는다. 즉, 구문 테스팅은 결정 테스팅보다 커버리지가 낮다.
  • 결정 커버리지를 100% 달성하면 결과가 참인 경우와 거짓인 경우를 포함한 모든 결정 결과가 실행 됐다는 뜻이다.
  • 100% 결정 커버리지는 100% 구문 커버리지를 보장하지만, 반대의 경우는 성립하지 않는다.

 

4.4.1 오류추정(오류 추정을 설명할 수 있다.)


오류추정은 테스터의 지식과 과거에 발견했던 결함에 대한 경험, 개발자들이 흔히 범하는 실수를 활용하는 것이다.

 

이용하는 지식

  • 어플리케이션의 과거 동작
  • 발생하기 쉬운 오류의 유형
  • 다른 어플리케이션에서 발생한 장애

 

4.4.2 탐색적 테스팅


탐색적 테스팅 : 비공식 테스트를 테스트 실행 중에 동적으로 설계, 실행, 기록하고 평가하는 테스팅

 

특징

  • 탐색적 테스팅은 명세가 충분하지 않거나 적은 경우 또는 테스팅에 상당한 시간적 압박이 있을 때 가장 유용하다.
  • 탐색적 테스팅은 다른 보다 공식적인 테스팅 기법을 보완하는 데도 유용하다.
  • 탐색적 테스팅은 다른 블랙박스, 화이트박스, 경험 기반 기법과 통합하여 사용할 수도 있다.

 

4.4.3 체크리스트 기반 테스팅


체크리스트 기반 테스팅 : 체크리스트에 기록된 테스트 컨디션을 커버하기 위해 테스터가 테스트를 설계, 구현, 실행하는 테스팅

 

특징

  • 체크리스트는 기능 및 비기능 테스팅을 포함한 다양한 테스트 유형을 지원하기 위해 작성할 수 있다.
  • 구체적인 테스트 케이스가 없는 경우, 체크리스트 기반 테스팅은 대략적인 지침과 일관성을 제공할 수 있다.
  • 커버리지는 늘어날 수 있지만 재현 가능성은 줄어들 수 있다.

'ISTQB CTFL' 카테고리의 다른 글

6. 테스트 지원 도구  (0) 2021.05.26
5. 테스트 관리  (0) 2021.05.26
3. 정적 테스팅  (0) 2021.05.24
2. 소프트웨어 개발 수명주기와 테스팅  (0) 2021.05.23
1. 테스팅의 기초  (0) 2021.04.04

댓글