테스트란?

이짜젠·2021년 7월 14일
0

테스트란, 우리가 작성한 코드가 제대로 작동하는지 확인하는 과정이다.


테스트의 종류

테스트정의복잡도주기
UnitTestFully Isolate한, 하나의 함수를 테스트 하는 것빈번
Integration Test다른 함수들에 의존적인 기능(함수)를 테스트 하는 것보통
E2E Test실제 사용자의 입장에서 메뉴얼대로 테스트 하는 것가끔

Unit Test

완전히 독립적인, 하나의 함수나 컴포넌트를 테스트 하는 것

하나의 단독적인 Unit을 테스트하기 때문에 Unit Test라고 부른다.
예를들어 Input에 올바른 Ouput이 나오는지 확인한다.

하나의 Unit test는 하나의 테스트코드 혹은 Suite로 구성될 수 있다. Suite는 테스트코드의 묶음이다.

Intergration Test

다른 함수들에 의존적인 기능(함수)를 테스트 하는 것

예를 들어 내부적으로 A, B 함수를 호출하는 C함수를 테스트 하는 것
A, B Unit Test는 통과하였으나, C의 로직상에서 발생하는 문제점을 찾기위함이다.

E2E Test (End-to-End Test)

서비스 사용자의 입장에서 애플리케이션의 기능 전체를 테스트 하는 것

ex. validating a the DOM after a click

실제 사용자의 입장에서 메뉴얼대로 테스트 하는 것으로 브라우저에서 동작을 확인한다.
앱의 대한 전체 동작흐름을 확인한다.


자동화 테스트란?

모든 코드를 고칠때마다 우리는 모든 부분의 테스트를 메뉴얼대로 적용할 수 없다.
따라 우리는 테스트를 자동화할 필요가 있다.

위에서 설명한 테스트를 프로그래밍적으로 자동화하는 것을 자동화 테스트라고 한다.
테스트할 내용을 코드로 작성하고, 실행시킴으로써 테스트를 자동화한다.

구성요소

Test Runner

테스트코드를 실행시키고, 결과를 통합시켜주는 툴

  • Mocha
  • Jest

Assertion Library

테스트코드 로직 작성을 위한 기능을 제공하는 라이브러리

  • Chai
  • Jest

Headless Browser

E2E 테스트를 위한 도구로, browser interaction을 가능하게한다.

  • Cypress
  • Puppeteer

TDD

Test-Driven-Development 약자로, 테스트 케이스를 먼저 작성하고 이 테스트를 통과하게끔 코드를 작성하는 개발방법론이다.

과정

  • 테스트케이스를 작성한다.
  • 테스트를 통과하게끔 코드를 작성한다.
  • 코드를 최대한 깔끔하게 리펙토링한다.

하는이유

  • 테스트에 소요되는 시간을 줄일 수 있다.
  • 코드를 고쳤을 때 발생할 수 있는 잠재적 이슈/버그를 찾을 수 있다.
  • 배포과정시에 자동화테스트과정을 통합시켜 안정적인 상태로 배포시킬 수 있다.
  • 좋은 코드를 작성할 수 있다.
    • 테스트코드를 작성하기 위해선 코드를 모듈화에 신경을 쓰게된다.
    • 구현보다 인터페이스에 집중하게 된다.

참고

profile
오늘 먹은 음식도 기억이 안납니다. 그래서 모든걸 기록합니다.

0개의 댓글