본문 바로가기

front-TEST

프론트엔드 개발에서 테스트란?

☑️ Software Test

프론트엔드에서 테스트는 중요✧✴︎하다.

제품과 서비스의 품질을 확인하며 소프트웨어의 버그를 찾고 오류를 찾는데 더더욱 필요하기 때문이다.

즉, 서비스(제품)가 예상하는 대로 동작하는지 확인/검증하는 단계

함수, 특정한 기능, UI, 성능, API 스펙 .. 등등을 확인하는 과정

 

 

 

 

code ➡️ 요구사항 ➡️ TEST

 

이러한 테스트를 주기적으로 실행해서 Pass or Fail 확인해야 하며, 테스트의 종류 역시 다양하다.

 

보통 develop -> QA -> Publish 순으로 현업에서 일을 하는데,
QA 단계에서 수동적으로 검증하면 시간이 많이 소요되며, 시간이 많이 드니까 검증비용 역시 많이 들게 된다. 여기서 병목현상이 발생해서 문제점이 발생하게 된다.

 

수동적인 테스팅이 아니라 테스트코드와, 스크립트를 이용해서 개발팀이 완성하면 원하는 기능을 자동으로 테스트할 수 있도록 검증 자체를 "자동화" 하는 방식으로 많이 변해왔다.

 

요즘에는 개발을 하면서 자동으로 테스트가 되도록 개발을 하는 프로세스로 개선되어왔다.

 

 

⇱ 왜 테스트를 해야할까

  • 기능이 정상 동작
  • 요구 사항 만족
  • 손쉬운 유지 보수
  • 시간 절약
  • 이슈 예측
  • 버그 빨리 발견
  • 코드간 의존성 낮춤
  • 좋은 문서화
  • 자신감 있게 리팩툉

목표, 플랫폼 이냐에 따라서 다양한 테스트 종류가 있지만 어떤 분야든, 어떤 영역이든, 어떤 프로젝트를 하던지
모든 개발자들이 공통으로 작성해야 하는 테스트가 있다.
그건 바로 "Test Pyramid"

 

 

⌁ Test Pyramid

 

 

테스트 피라미드에는 총 3가지의 테스트가 있다.
Unit Test / Integration Test / E2E (end-to-end) Test

 

 

 

⎗ Unit Test

단위 테스트
독림적인 하나의 컴포넌트, 하나의 함수, 모듈, 클래스 같이 딱 하나의 단위를 테스트하는 것이다.

⎗ Interation Test

통합 테스트
여러가지의 단위를 묶었을 때 이들이 상호작용을 잘하는지, 서로간에 유기적으로 상호작하는 것을 테스트하는 것이다.

⎗ E2E (end-to-end) Test

UI 테스트, 사용자 테스트
사용자가 실제로 우리의 소프트웨어를 사용했을 때 그 flow 를 테스트 하는 것이다.

 

 

 

👁️‍🗨️ 왜 피라미드 모양일까?

유닛테스트에서 e2e테스트로 올라갈수록 비용(cost) 이 올라간다.
테스트 작성시에도 유닛테스트가 상대적으로 쉽고 실행시에도 유닛테스트가 비용이 전혀 들지 않는 반면 실제로 사용자가 사용하는 환경에서 테스트를 위해선 이런 플랫폼을 지원하는 것이 비용이 비싼 편이다

 

개발적인 효율성 측면에서도 유닛테스트가 훨씬 저렴하다.

개발을 할때 유닛테스트를 작성하면 즉각적으로 오류나 버그를 빠르게 캐치해서 해결이 가능하지만, 모듈이나 클래스가 다 완성된 다음에 서로 상호작용하거나 또 사용자가 사용하는 상위레벨만을 테스트해서 문제가 발생한다면 "어디서 문제가 발생한거지? 어디가 잘못된거지?" 버그를 찾아내고 문제를 추적하는데 더 오랜시간이 걸리기 때문에 개발비용이 더 비싸질 수 있다.

 

속도 역시 유닛테스트가 빠르다.

단위별로 테스트 했을 때 상대적으로 가볍고 심플한 테스트이기 때문에 실행속도가 빠른 반면에 실제로 사용자가 테스트하는 환경, 브라우저를 실행하던지 다른 플랫폼을 구동해야하는 e2e테스트 에서는 테스트를 수행하는 속도도 느리다.

 

그래서 비용과 속도적인 측면 때문에 unit test 를 가장 많이 작성해서 프로젝트에서 각각의 함수나 클래스, 모듈 단위들이 잘 동작하는지 확실하게 테스트코드를 작성해두고, 그리고 이들간에 상호작용을 테스트하는 integration test 를 조금 작성하고 그다음에 E2E test 를 작성한다.

728x90
반응형