테스트

_dodo_hee·2023년 10월 10일
0

핸드북

목록 보기
28/29

테스트란 무엇인가요?
테스트의 예는 어떤 것들이 있나요?
테스트는 왜 해야 하나요?
유닛 테스트란 무엇인가요?
통합 테스트란 무엇인가요?
E2E 테스트란 무엇인가요?

테스트

테스트를 소프트웨어의 관점에서 정의하면 "애플리케이션이 요구 사항에 맞게 동작하는지를 검증하는 행위"

테스트 예

  • DB에 데이터를 입력하는 API를 개발 > API 호출 > DB값 검증
  • 디자인 시안에 맞게 HTML/CSS를 작성 > 브라우저에서 실제 렌더링된 결과를 확인
  • 새로운 기능을 추가하기 위해 기존 모듈을 리팩토링 > 영향을 받는 다른 모듈의 실행 결과를 확인
  • 버그를 수정하기 위해 기존 함수를 수정 > 버그가 수정 확인 & 영향을 받는 다른 모듈의 실행 결과를 확인
  • 개발 환경에서 테스트된 어플리케이션을 리얼 환경에 배포 > 배포 과정에서 발생한 문제가 없는지 확인

테스트를 왜 해야하는가?

  • 더 적극적으로 리팩토링 등의 코드 개선을 할 수 있어 코드 품질이 향상
  • 개발 단계에서의 제품 품질이 향상되어 테스터와의 불필요한 커뮤니케이션 비용이 감소
  • 테스트는 코드가 의도한대로 동작한 다는 것을 보장
  • 코드를 수정할때 테스트가 존재하지 않는다면 코드 수정시 발생할 수 있는 사이드이팩트 예상 어려움.

유닛 테스트

코드의 Unit단위를 테스트

장점

  • 프론트엔드 코드에서 유닛은 컴포넌트나, 서비스가 될 수 있다.
  • 제일 작은 단위를 테스트하기 때문에 모든 시나리오를 테스트할 때 테스트의 양이 가장 적어서 효율적이다.
  • TDD 사용시 가장 작은단위 부터 기능대로 동작하는지 확인하면서 개발하기 좋다.
  • 별도의 통합이 필요없기 때문에 백엔드 API가 구현이 안되어도 작성할 수 있다.

단점

  • 단위 테스트는 의존성이 있는 모듈을 제어하기 위해 필연적으로 모의 객체(Mocking)을 사용할 수 밖에 없기 때문에, 각 모듈이 실제로 잘 연결되어 상호 작용하는지에 대해서는 검증하지 못한다.
  • 모듈의 사소한 API 변경에도 영향을 받기 때문에 작은 단위의 리팩토링에도 쉽게 깨지는 문제가 있다.

통합 테스트

통합된 기능을 테스트

장점

  • 유닛테스트가 단일 컴포넌트나 단일 서비스를 기준으로 테스트를 했다면, 유닛들 간의 데이터를 주고받는 환경을 테스트한다.
  • 통합테스트 전략에 따라 프론트엔드 전체 유닛들만 통합하여 테스트하거나, 백엔드와 데이터베이스까지 전체를 통합해서 테스트하는 경우도 있다.
  • 전체 유닛의 상호작용에 대해서 테스트가 가능하다.

단점

  • 단일 모듈이 복잡한 알고리즘이나 분기문을 갖고 있을 때 단위 테스트에 비해 테스트가 번거롭다.
  • 테스트 중복이 발생할 확률이 높다는 단점이 있다.

E2E 테스트

end to end의 약자로, 소프트웨어의 가장 끝단인 사용자로 부터 가장 끝단인 백엔드 인프라까지 테스트

장점

  • 주로 유저 스토리를 기반의 시나리오를 기반으로 테스트를 진행한다.
  • 사용자 관점에서 전체 시나리오를 테스트하기 때문에 코드의 변경에도 테스트를 변경할 필요 없다.
  • 다른 테스트와 달리 전체 시나리오를 테스트하기 떄문에 소프트웨어의 무결성을 보장하기 가장 좋다.
  • 사용자 관점에서 전체 시나리오를 테스트하기 때문에 전체를 테스트하기 위해선 굉장히 많은 테스트가 필요하다.
  • 프론트엔드만 따로 테스트하는 것이 불가능하며, 백엔드와의 통합이 필요하다.
  • 전체 테스트를 하는데 시간이 오래걸려 자주 테스트하기 어렵다.

단점

  • 단위 테스트나 통합 테스트에 비해 테스트의 실행 속도가 느리다.
  • 개발 단계에서 빠른 피드백을 받기 어렵다.
  • 세부 모듈이 갖는 다양한 상황들의 조합을 고려해야 하기 때문에 테스트를 작성하기가 쉽지 않다.
  • 큰 단위의 기능을 작은 기능으로 나누어 테스트할 수가 없어 필연적으로 테스트 사이에 중복이 발생된다.
  • 테스트 실행 환경의 예상하지 못한 문제들(네트워크 오류, 프로세스 대기로 인한 타임아웃 등)로 인해 테스트가 가끔 실패하는 일이 발생되기도 한다.
profile
무럭무럭 자라나는 도도 개발성장일기

0개의 댓글