기능 테스트와 구조 테스트, 그리고 개발 프로세스 기반 테스트

minhye kim·2024년 9월 17일

Java

목록 보기
10/11

1. 기능 테스트 (Functional Testing)

소프트웨어가 요구되는 기능을 정확하게 수행하는지 확인하는 테스트 방식입니다. 사용자의 관점에서 시스템의 입력과 출력만을 검증합니다.

  • Black-Box Testing (블랙박스 테스트):
    소프트웨어의 내부 구조를 고려하지 않고 외부 동작만으로 테스트를 진행합니다.
    요구사항이나 명세에 따른 기능 검증을 목표로 합니다.

  • Behavior-Driven Development (BDD, 행동 주도 개발):
    시스템의 행동을 자연어로 설명하고 그에 맞춰 테스트를 진행합니다.
    비즈니스 측면의 기능을 테스트하는 방식입니다. Given-When-Then 구조를 따릅니다.

2. 구조 테스트 (Structural Testing)

소프트웨어의 내부 로직이나 구조를 기반으로 테스트하는 방법입니다. 소스 코드를 분석하여 기능이 의도대로 동작하는지 확인합니다.

  • White-Box Testing (화이트박스 테스트):
    코드의 내부 구조와 논리 흐름을 바탕으로 테스트합니다.
    경로 커버리지, 조건 커버리지, 루프 테스트 등을 포함합니다.

3. 단위 테스트 (Unit Testing)

정의: 소프트웨어의 가장 작은 단위(함수, 클래스 등)를 독립적으로 테스트합니다.

  • Unit Testing (단위 테스트):
    개별 메소드나 클래스가 정상적으로 동작하는지 확인합니다.
    Mocking 등을 사용하여 외부 의존성을 제거하고 테스트합니다.

  • Arrange-Act-Assert (AAA 패턴):
    단위 테스트 작성 시 사용하는 패턴으로, 테스트의 흐름을 명확하게 나누는 방식입니다.
    테스트는 준비(Arrange), 실행(Act), 확인(Assert)의 세 단계로 나뉘어 구조적으로 작성됩니다.

4. 통합 테스트 (Integration Testing)

개별 모듈들이 상호작용하며 통합될 때, 이들이 잘 연동되는지 테스트하는 방식입니다.

  • Integration Testing (통합 테스트):
    여러 모듈을 통합하여 그들이 함께 올바르게 동작하는지 확인합니다.
    데이터베이스나 외부 API와의 연동을 포함하는 실제 의존성을 테스트합니다.

5. 개발 프로세스 기반 테스트 (Development Process-Based Testing)

개발 방식 자체에서 테스트를 중시하며, 개발과 테스트가 밀접하게 연관된 프로세스를 따르는 방식입니다.

  • Test-Driven Development (TDD, 테스트 주도 개발):
    테스트를 먼저 작성하고, 그 테스트를 통과할 수 있는 코드를 작성하는 개발 방식입니다.
    작은 단위로 코드를 작성하고 지속적인 리팩토링을 통해 코드 품질을 유지합니다.

  • Behavior-Driven Development (BDD, 행동 주도 개발):
    요구 사항을 테스트 사례로 변환해 개발하는 방법입니다. TDD에서 발전된 형태로, 비개발자도 이해할 수 있는 테스트 사례를 사용합니다.
    기능 요구 사항에 초점을 맞추고 테스트를 개발의 일부분으로 다룹니다.

전체 요약

대분류중분류설명
기능 테스트Black-Box Testing내부 구조를 알지 못한 상태에서 기능 및 요구사항이 제대로 동작하는지 테스트.
BDDGiven-When-Then 패턴을 사용하여 비즈니스 요구사항을 자연어로 설명하고 테스트.
구조 테스트White-Box Testing내부 코드의 구조와 논리 흐름을 기반으로 테스트. 코드 커버리지를 확인함.
단위 테스트Unit Testing소프트웨어의 작은 단위(메소드, 클래스)를 독립적으로 테스트.
AAA 패턴테스트의 준비, 실행, 결과 확인의 단계를 명확하게 나누어 작성하는 패턴.
통합 테스트Integration Testing여러 모듈이 통합되어 잘 연동되고 동작하는지 확인하는 테스트. 외부 의존성을 포함하는 경우가 많음.
개발 프로세스 기반 테스트TDD테스트를 먼저 작성하고, 이를 통과하는 코드를 작성하는 방식의 개발 프로세스.
BDD행동 기반으로 기능을 설명하고 테스트 사례로 변환하여 개발하는 방식.TDD에서 발전된 형태.

이렇게 분류하면 각 테스트 방법이 어떤 범주에 속하며, 어떤 목적으로 사용하는지 명확히 이해할 수 있습니다.

profile
안녕하세요. 블로그를 시작하게 되었습니다! 앞으로 유용한 정보와 좋은 내용을 많이 공유할게요:)

0개의 댓글