본문으로 바로가기

이 챕터에서는 "무엇을, 어떻게 테스트할 것인가?"를 결정하는 구체적인 '테스트 기법'들을 배웁니다. 시험에서 가장 많은 문제가 출제되는 부분이므로, 각 기법의 개념과 차이점을 명확히 이해하는 것이 중요합니다.

Overview of Test Techniques (테스트 기법 개요)

  • Test techniques are systematic procedures used to derive and select test cases. They are categorized into black-box, white-box, and experience-based techniques.
  • 테스트 기법은 테스트 케이스를 도출하고 선택하는 데 사용되는 체계적인 절차입니다. 명세(요구사항)만 보고 테스트하는 블랙박스 기법, 코드 내부 구조를 보며 테스트하는 화이트박스 기법, 테스터의 경험을 활용하는 경험 기반 기법으로 나뉩니다.
  • Comparison of Test Technique Categories (테스트 기법 카테고리 비교) (암기)
Category Test Basis (테스트 기반) What is it testing? (테스트 대상)
Black-box Requirements, Specifications, Use cases (요구사항, 명세서, 유스케이스) The behavior of the software (소프트웨어의 동작, 기능)
White-box Code, Architecture, Detailed design (코드, 아키텍처, 상세 설계) The internal structure of the software (소프트웨어의 내부 구조)
Experience-based Tester's knowledge, intuition, and experience (테스터의 지식, 직관, 경험) Common errors and typical areas of failure (흔히 발생하는 오류 및 실패 영역)

Black-box Test Techniques (블랙박스 테스트 기법)

소프트웨어의 내부 구조를 보지 않고, 입력과 출력 값에만 집중하여 기능적 동작을 테스트하는 기법들입니다.

1. Equivalence Partitioning (EP) - 동등 분할 (암기)

  • Divides input data into partitions (or classes) from which test cases can be derived. It is assumed that all values within a partition will be processed in the same way.
  • 테스트할 데이터의 전체 범위를 동일하게 처리될 것으로 예상되는 그룹(분할)으로 나눕니다. 각 분할에서 대표값 하나만 선택하여 테스트하면, 해당 분할의 모든 값을 테스트한 것과 같은 효과를 본다는 개념입니다. 유효(Valid) 파티션과 무효(Invalid) 파티션으로 나눕니다.

2. Boundary Value Analysis (BVA) - 경계값 분석 (암기)

  • A technique that focuses on testing the "boundaries" or "edges" of equivalence partitions. Many errors tend to occur at these boundaries.
  • 오류는 동등 분할의 중간값이 아니라 경계(edge)에서 주로 발생한다는 사실에 착안한 기법입니다. 동등 분할로 나뉜 각 그룹의 경계 지점을 집중적으로 테스트합니다. 보통 동등 분할 기법(EP)과 함께 사용됩니다.
    • 2-Value BVA: 경계값과 경계 바로 다음 값을 테스트합니다. (예: 10이 경계면 10, 11 테스트)
    • 3-Value BVA: 경계 바로 이전 값, 경계값, 경계 바로 다음 값을 테스트합니다. (예: 10이 경계면 9, 10, 11 테스트)

3. Decision Table Testing - 결정 테이블 테스팅 (암기)

  • A technique used to test systems with complex business rules. It maps conditions and the resulting actions in a table format.
  • 복잡한 비즈니스 규칙이나 논리적 조건이 얽혀 있을 때 유용한 기법입니다. 조건(Conditions), 행동(Actions), 그리고 이들의 조합인 **규칙(Rules)**을 표(테이블) 형태로 만들어 테스트 케이스를 도출합니다.

4. State Transition Testing - 상태 전이 테스팅 (암기)

  • A technique used to test systems that exhibit different states and transitions between those states based on specific events.
  • 시스템이 특정 이벤트에 따라 한 **상태(State)**에서 다른 상태로 변하는(전이, Transition) 경우를 테스트하는 데 사용됩니다. 상태 전이 다이어그램이나 테이블을 사용하여 가능한 모든 상태와 전이를 커버하는 테스트 케이스를 설계합니다.

White-box Test Techniques (화이트박스 테스트 기법)

소프트웨어의 내부 코드 구조, 로직, 분기 등을 분석하여 테스트 케이스를 설계하는 기법입니다.

1. Statement Testing and Coverage - 구문 테스팅 및 커버리지 (암기)

  • A technique that aims to execute every executable statement in the code at least once. Coverage is measured as the percentage of executed statements.
  • 코드에 있는 모든 실행 가능한 **구문(Statement)**이 최소 한 번 이상 실행되도록 테스트하는 것을 목표로 합니다.
    • 커버리지 공식: (실행된 구문 수 / 전체 구문 수) * 100%

2. Decision Testing and Coverage - 결정 테스팅 및 커버리지 (암기)

  • A technique that aims to execute every decision outcome (e.g., True and False branches of an IF statement) at least once. It is stronger than statement coverage.
  • 코드 내의 모든 결정(Decision) 포인트(예: IF, WHILE문의 참/거짓 분기)의 결과가 최소 한 번 이상 실행되도록 테스트하는 것을 목표로 합니다.
    • 커버리지 공식: (실행된 결정 결과 수 / 전체 결정 결과 수) * 100%

(중요!) Statement vs. Decision Coverage
100% 결정 커버리지를 달성하면, 항상 100% 구문 커버리지가 달성됩니다.
하지만 100% 구문 커버리지를 달성했다고 해서, 100% 결정 커버리지가 보장되지는 않습니다. (Decision coverage is stronger than statement coverage.)


테스트 기법 다시 정리

Black-box Test Techniques (블랙박스 테스트 기법)

English Name Korean Name Core Purpose
Equivalence Partitioning
(EP)
동등 분할 / 동치 분할 입력 데이터의 전체 범위를 동일하게 처리될 그룹으로 나누어, 각 그룹의 대표값 하나만 테스트하여 효율성을 높임.
Boundary Value Analysis
(BVA)
경계값 분석 오류가 주로 발생하는 입력값의 경계 지점(예: 최솟값, 최댓값)을 집중적으로 테스트함.
Decision Table Testing 결정 테이블 테스팅 복잡한 비즈니스 규칙이나 논리적 조건들의 다양한 조합을 체계적으로 테스트함.
State Transition Testing 상태 전이 테스팅 시스템이 특정 이벤트에 따라 한 상태에서 다른 상태로 변하는 모든 경우를 테스트함. (예: 로그인 상태, 로그아웃 상태)
Use Case Testing 유스케이스 테스팅 사용자와 시스템 간의 상호작용(시나리오)을 기반으로, 실제 사용 흐름을 따라가며 테스트함.

White-box Test Techniques (화이트박스 테스트 기법)

English Name Korean Name Core Purpose
Statement Testing 구문 테스팅 코드에 있는 모든 실행 가능한 구문(Statement, 코드 한 줄)을 최소 한 번 이상 실행시키는 것을 목표로 함.
Decision Testing 결정 테스팅 코드의 모든 결정 지점(예: if, while 문)의 참(True)과 거짓(False) 결과를 최소 한 번 이상 실행시키는 것을 목표로 함.
Condition Testing 조건 테스팅 결정 지점 내의 개별 조건식(예: if (a > 10 && b < 5)) 각각의 참/거짓 결과를 테스트함.
Path Testing 경로 테스팅 코드 내에서 실행될 수 있는 모든 독립적인 경로를 테스트하는 것을 목표로 함. 가장 강력하지만 현실적으로 모든 경로를 테스트하기는 어려움.

 

Experience-based Test Techniques (경험 기반 테스트 기법)

명세서나 코드보다는 테스터의 경험, 지식, 직관을 활용하여 결함을 찾아내는 기법입니다.

1. Error Guessing - 오류 추정

  • A technique where the tester uses their experience, knowledge of common errors, and intuition to anticipate defects that might exist.
  • 테스터가 자신의 경험과 직관을 바탕으로 시스템에 어떤 오류가 있을지 '추측'하고, 그에 따라 테스트 케이스를 설계하는 비공식적인 기법입니다. (예: '0으로 나누기', '필수 입력 필드를 비워두기')

2. Exploratory Testing - 탐색적 테스팅

  • A technique where test design, execution, and learning are performed simultaneously. It is highly dependent on the tester's skill and creativity.
  • 정해진 테스트 케이스 없이, 테스터가 시스템을 학습하고, 테스트를 설계하며, 동시에 실행하는 동적인 테스트 접근법입니다. 테스트의 자유도가 높으며, 주로 **세션 기반(Session-based)**으로 관리됩니다.

3. Checklist-based Testing - 체크리스트 기반 테스팅

  • A technique where the tester uses a high-level list of items to check or conditions to verify. The checklist is created based on experience or standards.
  • 경험 많은 테스터가 만든 확인 항목 목록(체크리스트)을 사용하여 테스트를 수행하는 기법입니다. 일관된 테스트 커버리지를 보장하는 데 도움이 됩니다.

Collaboration-based Test Approaches (협업 기반 테스트 접근법)

애자일 개발 방법론에서 강조되는 접근법으로, 여러 이해관계자가 협력하여 테스트를 정의합니다.

1. Collaborative User Story Writing - 협업적 사용자 스토리 작성

  • Involves testers collaborating with business representatives and developers to refine user stories and define clear, testable acceptance criteria.
  • 테스터가 기획자, 개발자와 함께 사용자 스토리를 구체화하고, 명확하며 테스트 가능한 **인수 조건(Acceptance Criteria)**을 정의하는 데 참여하는 활동입니다.

2. Acceptance Test-Driven Development (ATDD) - 인수 테스트 주도 개발

  • A collaborative approach where the team (business, developers, testers - often called the "Three Amigos") defines acceptance tests before development begins. These tests describe how the system should behave from the user's perspective.
  • 실제 코드를 개발하기 전에, **"세 친구(Three Amigos)"**로 불리는 기획자, 개발자, 테스터가 모여 인수 테스트를 먼저 정의하는 개발 접근법입니다. 이 인수 테스트는 사용자 관점에서 시스템의 기대 동작을 명세화하는 역할을 합니다.
반응형