테스트 코드

mileage·2022년 6월 8일
0

개발자 테스트 코드 작성 시 장/단점과 테스트 종류 별 (단위 테스트, 통합 테스트, E2E 테스트) 로 특징은?

테스트 코드

  • 소프트웨어의 제품 or 서비스의 품질을 확인하거나 소프트웨어의 버그를 찾을 때 작성하는 코드를 의미한다.
    --> 제품이 예상하는 대로 동작하는지 확인하는 것

테스트 코드를 왜 작성해야 할까?

  • 기능이 정상적으로 동작하는지 확인할 수 있다.
  • 결함을 사전에 발견할 수 있다.
  • 기존의 코드를 다른 코드로 리팩토링할 때 기존과 동일한 동작을 하는지 걱정하지 않아도 된다.
  • 코드 작성자의 의도, 사용법, 주의사항 등이 드러나 문서로서 작용할 수 있다.

테스트 코드 작성시 장단점

  • 장점
    - 예상 동작과 실제 동작을 비교해 빠르고 정확한 테스트가 가능해 초기 개발의 디버깅이 쉬워진다.
    - 어플리케이션의 변경(기능 확장, 리팩터링 등)이 있어도 올바르게 작동하는지 확인할 수 있다.
    - 단위 테스트 자체를 어플리케이션에 대한 문서로 사용할 수 있다.
    - 여러 빌드 도구들(maven, gradle 등)은 테스트 자동화 기능을 포함하고 있다.
  • 단점
    - 테스트 코드까지 작성해야하기 때문에 개발 시간이 오래 걸린다.
    - 어플리케이션 변경 사항을 테스트 코드에도 적용해야 하기 때문에 테스트 코드를 유지보수하는 비용이 든다.

테스트 종류 별 특징

  • 단위테스트(Unit Test)
    단위 테스트는 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다.
    - 어디에서 문제가 발생했는지를 빨리 확인할 수 있기 때문에 디버깅 시간을 단축시킨다.
    - 코드 변경 뒤에도 기능이 제대로 동작하는지 검증해주기 때문에 프로그래머가 더 의욕적으로 코드를 변경할 수 있게 한다.
  • 통합 테스트(Integration Test)
    단위 테스트가 끝나고 그 하나 하나를 결합해가며 테스트하는 방법이다.
    - 단위 테스트와 달리 개발자가 변경할 수 없는 부분까지 묶어 검증할 때 사용한다.
    - 단위 테스트에서 발견하기 어려운 버그를 찾을 수 있다.
    - 단위 테스트보다 더 많은 코드를 테스트하기 때문에 신뢰성이 떨어질 수 있고 어디에서 문제가 발생했는지 확인하기 어렵다.
  • E2E 테스트(End to End Test)
    사용자의 입장에서 사용자가 사용하는 상황을 가정하고 테스트 하는 것.
    - 일반적으로 웹이나 어플 등에서 GUI를 통해 시나리오, 기능 테스트 등을 수행한다.
    - 사용자에게 직접적으로 노출되는 부분을 점검한다.
    - 단위 테스트로 불가능한 사용자 관점의 테스트까지 가능하다.

0개의 댓글