테스트란, 우리가 작성한 코드가 제대로 작동하는지 확인하는 과정이다.
테스트 | 정의 | 복잡도 | 주기 |
---|---|---|---|
UnitTest | Fully Isolate한, 하나의 함수를 테스트 하는 것 | 하 | 빈번 |
Integration Test | 다른 함수들에 의존적인 기능(함수)를 테스트 하는 것 | 중 | 보통 |
E2E Test | 실제 사용자의 입장에서 메뉴얼대로 테스트 하는 것 | 상 | 가끔 |
완전히 독립적인, 하나의 함수나 컴포넌트를 테스트 하는 것
하나의 단독적인 Unit을 테스트하기 때문에 Unit Test라고 부른다.
예를들어 Input에 올바른 Ouput이 나오는지 확인한다.
하나의 Unit test는 하나의 테스트코드 혹은 Suite로 구성될 수 있다. Suite는 테스트코드의 묶음이다.
다른 함수들에 의존적인 기능(함수)를 테스트 하는 것
예를 들어 내부적으로 A, B 함수를 호출하는 C함수를 테스트 하는 것
A, B Unit Test는 통과하였으나, C의 로직상에서 발생하는 문제점을 찾기위함이다.
서비스 사용자의 입장에서 애플리케이션의 기능 전체를 테스트 하는 것
ex. validating a the DOM after a click
실제 사용자의 입장에서 메뉴얼대로 테스트 하는 것으로 브라우저에서 동작을 확인한다.
앱의 대한 전체 동작흐름을 확인한다.
모든 코드를 고칠때마다 우리는 모든 부분의 테스트를 메뉴얼대로 적용할 수 없다.
따라 우리는 테스트를 자동화할 필요가 있다.
위에서 설명한 테스트를 프로그래밍적으로 자동화하는 것을 자동화 테스트
라고 한다.
테스트할 내용을 코드로 작성하고, 실행시킴으로써 테스트를 자동화한다.
테스트코드를 실행시키고, 결과를 통합시켜주는 툴
테스트코드 로직 작성을 위한 기능을 제공하는 라이브러리
E2E 테스트를 위한 도구로, browser interaction을 가능하게한다.
Test-Driven-Development 약자로, 테스트 케이스를 먼저 작성하고 이 테스트를 통과하게끔 코드를 작성하는 개발방법론이다.