1 minute read

이력서 및 포트폴리오 제작하며 이곳저곳 인터넷을 떠돌아 다니던 중, 대부분의 개발자들이 공통적으로 말하는 부분이 있었다.

테스트 코드가 중요하다.

그래서 오늘은 전공시간때 배웠던 TDD의 개념과 적용 방법 을 다시 한번 정리해보기로 했다.

1. 그래서, TDD가 뭐였더라?

  • TDD(Test Driven Development)
  • 반복 테스트를 이용한 소프트웨어 개발 방법론.
  • 작은 단위의 테스트 케이스를 작성하고,
  • 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다.

2. TDD 개발주기

TDD

  • <Red>단계 : 실패하는 테스트 코드를 작성.
  • <Green>단계 : 테스트 코드를 성공시키기 위한 실제 코드를 작성.
  • <Yellow>단계 : 중복 코드 제거, 일반화 등의 리팩토링을 수행한다.

3. Unit Test의 5원칙 (F.I.R.S.T)

  • F - Fast. 테스트 코드의 실행은 빨라야 한다.
  • I - Independent. 독립적으로 실행이 되어야 한다.
  • R - Repeatable. 반복 가능해야 한다.
  • S - Self Validating. 메뉴얼 없이 테스트 코드만으로 성공/실패 여부를 알 수 있어야 한다.
  • T - Timely. 바로 사용 가능해야 한다.

4. Give - When - Then 패턴

  • Give - When - Then 패턴은
    [준비 - 실행 - 검증]의 패턴으로 테스트 코드를 작성하는것을 의미한다.
    • Give. 테스트 준비를 위한 변수, 입력 값을 정의.
    • When. 실제 액션을 하는 테스트의 단계.
      가급적 하나의 메서드만 실행하는 것이 바람직하다.
    • Then. 테스트를 검증하는 과정.
      예상한 값, 실제 실행을 통해 나온 값을 비교 검증한다.

5. 관련 라이브러리

  • Java
    • JUnit
    • Spring Test & Spring Boot Test
    • AssertJ
    • Hamcrest
    • Mockito
    • JSONassert
    • JsonPath
  • Python
    • unittest

6. 참고한 글