소프트웨어가 요구되는 기능을 정확하게 수행하는지 확인하는 테스트 방식입니다. 사용자의 관점에서 시스템의 입력과 출력만을 검증합니다.
Black-Box Testing (블랙박스 테스트):
소프트웨어의 내부 구조를 고려하지 않고 외부 동작만으로 테스트를 진행합니다.
요구사항이나 명세에 따른 기능 검증을 목표로 합니다.
Behavior-Driven Development (BDD, 행동 주도 개발):
시스템의 행동을 자연어로 설명하고 그에 맞춰 테스트를 진행합니다.
비즈니스 측면의 기능을 테스트하는 방식입니다. Given-When-Then 구조를 따릅니다.
소프트웨어의 내부 로직이나 구조를 기반으로 테스트하는 방법입니다. 소스 코드를 분석하여 기능이 의도대로 동작하는지 확인합니다.
정의: 소프트웨어의 가장 작은 단위(함수, 클래스 등)를 독립적으로 테스트합니다.
Unit Testing (단위 테스트):
개별 메소드나 클래스가 정상적으로 동작하는지 확인합니다.
Mocking 등을 사용하여 외부 의존성을 제거하고 테스트합니다.
Arrange-Act-Assert (AAA 패턴):
단위 테스트 작성 시 사용하는 패턴으로, 테스트의 흐름을 명확하게 나누는 방식입니다.
테스트는 준비(Arrange), 실행(Act), 확인(Assert)의 세 단계로 나뉘어 구조적으로 작성됩니다.
개별 모듈들이 상호작용하며 통합될 때, 이들이 잘 연동되는지 테스트하는 방식입니다.
개발 방식 자체에서 테스트를 중시하며, 개발과 테스트가 밀접하게 연관된 프로세스를 따르는 방식입니다.
Test-Driven Development (TDD, 테스트 주도 개발):
테스트를 먼저 작성하고, 그 테스트를 통과할 수 있는 코드를 작성하는 개발 방식입니다.
작은 단위로 코드를 작성하고 지속적인 리팩토링을 통해 코드 품질을 유지합니다.
Behavior-Driven Development (BDD, 행동 주도 개발):
요구 사항을 테스트 사례로 변환해 개발하는 방법입니다. TDD에서 발전된 형태로, 비개발자도 이해할 수 있는 테스트 사례를 사용합니다.
기능 요구 사항에 초점을 맞추고 테스트를 개발의 일부분으로 다룹니다.
전체 요약
| 대분류 | 중분류 | 설명 |
|---|---|---|
| 기능 테스트 | Black-Box Testing | 내부 구조를 알지 못한 상태에서 기능 및 요구사항이 제대로 동작하는지 테스트. |
| BDD | Given-When-Then 패턴을 사용하여 비즈니스 요구사항을 자연어로 설명하고 테스트. | |
| 구조 테스트 | White-Box Testing | 내부 코드의 구조와 논리 흐름을 기반으로 테스트. 코드 커버리지를 확인함. |
| 단위 테스트 | Unit Testing | 소프트웨어의 작은 단위(메소드, 클래스)를 독립적으로 테스트. |
| AAA 패턴 | 테스트의 준비, 실행, 결과 확인의 단계를 명확하게 나누어 작성하는 패턴. | |
| 통합 테스트 | Integration Testing | 여러 모듈이 통합되어 잘 연동되고 동작하는지 확인하는 테스트. 외부 의존성을 포함하는 경우가 많음. |
| 개발 프로세스 기반 테스트 | TDD | 테스트를 먼저 작성하고, 이를 통과하는 코드를 작성하는 방식의 개발 프로세스. |
| BDD | 행동 기반으로 기능을 설명하고 테스트 사례로 변환하여 개발하는 방식.TDD에서 발전된 형태. |
이렇게 분류하면 각 테스트 방법이 어떤 범주에 속하며, 어떤 목적으로 사용하는지 명확히 이해할 수 있습니다.