개발자의 공부/테스트 및 최적화

TDD(Test Driven Development)와 단위 테스트(Unit Test) 간단 설명

2023. 10. 4. 15:38
목차
  1. ✅ TDD(Test Driven Development): 테스트 주도 개발
  2. ✅ 단위 테스트(Unit Test)

✅ TDD(Test Driven Development): 테스트 주도 개발

실제 코드를 개발하기 전에 단위 테스트 케이스를 먼저 작성하는 소프트웨어 개발 방법론이다.

 

TDD의 특징

테스트 우선 접근 (Test-First Approach)

  • TDD는 코드를 작성하기 전에 먼저 해당 코드가 통과해야 할 테스트 케이스를 작성하는 방법을 강조한다. 즉, 개발자는 코드를 작성하기 전에 해당 코드가 어떻게 동작해야 하는지를 미리 정의한 테스트를 작성한다.

순환적 개발 (Iterative Development)

  • TDD는 작은 단위의 기능을 개발하고 테스트한 다음, 기능을 확장하거나 변경할 때마다 해당 테스트 케이스를 업데이트한다. 이를 통해 작은 단계로 코드를 개발하면서 안정성을 유지할 수 있다.

자동화된 테스트 스위트 (Automated Test Suite)

  • TDD에서는 테스트 케이스를 자동으로 실행하는 테스트 스위트를 유지한다. 코드 변경 시 이 테스트 스위트를 실행하여 변경 사항이 이전 동작에 영향을 미치는지 신속하게 확인할 수 있다.

리팩터링 (Refactoring)

  • TDD는 코드를 개선하고 개선된 코드가 여전히 기존 동작을 유지하는지 확인하는 과정에서 리팩터링을 장려한다. 이를 통해 코드의 가독성과 유지 보수성을 향상시킬 수 있다.

지속적 통합 (Continuous Integration)

  • TDD는 지속적 통합(CI)과 잘 결합된다. CI는 코드 변경이 이루어질 때마다 자동으로 테스트를 실행하여 품질을 확인하는 프로세스를 의미한다.

TDD의 주요 이점은 코드의 신뢰성을 높이고 버그를 초기에 발견하여 수정하기 쉽게 만들어주며, 코드 변경이 기존 기능에 영향을 미치지 않도록 보장한다. 또한 테스트 케이스를 작성함으로써 요구 사항을 명확히 이해하고 문제를 해결하는 과정을 명확히 한다.

 

🟢 Red-Green-Refactor

테스트 주도 개발(TDD) 방법론에서 사용되는 개발 주기를 설명하는 간단한 프로세스이다.

 

1. Red

처음으로 코드를 작성하기 전에 테스트 케이스를 작성한다. 이 단계에서는 아직 코드가 작성되지 않았고 테스트 케스만 작성되있기 때문에 테스트가 실패한다.(Red)

 

2. Green

Red 단계에서 작성한 테스트가 실패하는 것을 확인한 후에 코드를 작성하여 테스트를 통과 시킨다. 테스트를 통과하는 코드를 작성하는 것이 목표이기에 Green이라고 한다.

 

3. Refactor

Green 단계에서 코드를 작성하고 테스트가 통가되면 코드를 개선하고 리펙토링한다. 코드의 가독성, 효율성 및 유지 보수성을 향상 시키고 테스트 케이스가 있으므로 코드가 여전히 정상적으로 작동하는지 확인하면서 리펙터링을 진행할 수 있다.

 

✅ 단위 테스트(Unit Test)

코드를 작은 단위로 테스트하는 소프트웨어 개발 접근 방식으로 프론트엔드 코드의 각 부분이 예상한 대로 동작하고 다른 부분과 상호작용하는지를 확인하고 검증하는 데 사용된다. 컴포넌트, 유틸 함수, 커스텀 훅 등이 하나의 단위가 될 수 있다. 

 

🟢 AAA 패턴

단위 테스트를 작성할 때 사용되는 테스트 코드의 구조를 설명하는 패턴이다.

 

Arrange (준비)

  • Arrange 단계에서는 테스트 환경을 설정하고, 테스트에 필요한 객체를 생성하거나 초기화한다. 이 단계에서 테스트 대상 객체와 필요한 데이터를 준비한다.

Act (실행)

  • Act 단계에서는 실제로 테스트 대상 동작을 실행한다. 즉, 테스트 코드의 일부분을 호출하거나 실행한다. 이 단계에서 테스트 대상 동작을 실행하고 예상 결과를 얻는다.

Assert (단언)

  • Assert 단계에서는 Act 단계에서 얻은 결과를 검증하고 테스트 케이스가 예상한 대로 동작하는지 확인한다. 이 단계에서 예상 결과와 실제 결과를 비교하여 테스트를 판단한다.

AAA 패턴은 테스트 코드를 더 읽기 쉽고 이해하기 쉽도록 구조화하는 데 도움을 준다. 이 패턴을 따르면 테스트 코드의 목적과 흐름을 더 명확하게 파악할 수 있으며, 테스트 결과를 신뢰할 수 있게 만들어준다. 단위 테스트 작성 시 일반적으로 사용되며, 테스트 코드의 가독성과 유지 보수성을 향상시키는 데 도움이 된다.

 

간단한 예시

function addTwoNumbers(a: number, b: number) {
  return a + b;
}

describe("addTwoNumbers", () => {
  test("1 and 2 make 3", () => {
    // Arrange
    const argA = 1;
    const argB = 2;
    const assert = 3;

    // Act
    const result = addTwoNumbers(argA, argB);

    // Assert
    expect(result).toBe(assert);
  });
});
  test("첫번째 페이지에서는 이전 페이지로 돌아갈 수 없음", () => {
    // Arrange
    const { prevButton } = renderPageNumbers();

    // Act
    fireEvent.click(prevButton);

    // Assert
    expect(prevButton).toHaveClass("disabled");
  });
저작자표시 비영리 동일조건 (새창열림)
  1. ✅ TDD(Test Driven Development): 테스트 주도 개발
  2. ✅ 단위 테스트(Unit Test)
JMins
JMins
안녕하세요. 프론트엔드 개발자 김정민입니다. 개발 지식을 공유하고 기록하는 공간입니다.
JMins
개발자 노트
JMins
전체
오늘
어제
  • 분류 전체보기 (85)
    • 개발자의 공부 (73)
      • React (17)
      • 자료구조&알고리즘 (28)
      • JS (17)
      • TS (8)
      • Nodejs (0)
      • Nextjs (1)
      • 기타 (1)
      • Design Pattenrs (0)
      • 테스트 및 최적화 (1)
    • 문제 및 해결 (9)
    • 기본 지식 (3)
    • 챌린지 (0)

블로그 메뉴

  • 홈

공지사항

  • #블로그 스킨 변경
  • 개인적으로 공부를 기록하기 위해 적고 있습니다.

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
JMins
TDD(Test Driven Development)와 단위 테스트(Unit Test) 간단 설명
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.