TDD(Test-Driven Development), RTL(React Testing Library), Test Types

김재훈·2022년 6월 5일
0

Test

목록 보기
4/4

TDD(테스트 주도 개발)

  • 코드 작성 전에 테스트를 작성하고, 테스트에 통과하도록 코드를 작성하는 것입니다 (Write tests before writing code then write code according to "spec" set by tests)

  • 흔히 레드-그린 테스트라고 합니다 ("red-green" testing)

    • 코드 작성 전에 테스트에 실패하는 레드 테스트를 먼저 실행 (Tests fail before code is written)
    • 코드 작성 후에는 통과하는 테스트로 그린테스트를 확인
  • Write "shell" function (아무것도 하지않는 빈 함수) -> Write tests -> Tests fail -> Write code -> Tests pass

Why TDD?

  • 테스트를 작성하는 것이 마지막에 해야 하는 따분한 일이 아니라 코딩 프로세스의 일부입니다
  • 효율적입니다 (=코드 작성 전에 테스트를 작성하면 변경 사항이 생길 때마다 모든 테스트를 자동으로 다시 실행하여 일일이 수동 테스트를 하지 않아도 됩니다)

RTL

  • 철학
    • 완고함(Opinionated), React 테스트에 관해서 모범 사례를 지향합니다
  • 역할
    • 테스트를 위한 가상 DOM을 생성하며, DOM과 상호 작용하기 위한 유틸리티도 제공합니다 -> DOM에서 요소를 찾을 수 있거나, 클릭과 같은 요소와 상호 작용할 수 있습니다
    • 브라우저 없이도 테스트 가능하게 하며, 내부 코드 구현을 테스트하는 것이 아니라 사용자의 소프트웨어 사용을 테스트하는 것을 권장합니다

Test Types

  • Unit tests

    • 보통 함수나 별개의 React 컴포넌트 코드의 한 유닛 혹은 단위를 테스트합니다
    • 다른 코드의 유닛과 상호 작용하는 것을 테스트하지 않습니다
  • Integration tests

    • 여러 유닛이 함께 작동하는 방식을 테스트해서 유닛 간의 상호 작용을 테스트합니다 -> 컴포넌트 간, 마이크로 서비스간의 상호 작용을 테스트합니다
  • Functional tests

    • 특정 코드 함수가 아닌 소프트웨어 특정 기능의 일반적인 동작을 테스트하며, 그래서 RTL이 기능 테스트를 권장합니다

Acceptance / End-to-end (E2E) tests

  • 실제 브라우저, 애플리케이션이 연결된 서버가 필요합니다
  • 보통 Cypress, Selenium 등과 같은 특별한 도구들이 필요합니다
  • RTL을 위해 설계된 테스트는 아닙니다

Reference

  • udemy testing lecture
profile
같이 협업하며 성장하고싶은, 좋은 개발자를 지향합니다 :)

0개의 댓글