TIL.Unit Test

HyunJun_lee·2021년 8월 22일
0

TIL

목록 보기
2/26

Unit Test

  • 유닛 테스트란, 내가 작성한 코드의 가장 작은 단위인 함수를 테스트하는 메소드이다. 그래서 내가 작성한 로직 을 테스트하는 유닛테스트 코드를 짜서 테스트하게 된다
  • 프론트의 경우 버튼을 추가해서 이벤트를 처리하는 신규 로직을 구현랑 때마다 크롬 브라우저를 띄워서 테스트하고 이전 기능 또한 테스트 해야 하기 때문에 시간이 많이 소요될 수 있다.
  • 백엔드의 경우 테스트할 엔드포인트가 10개라면 이것을 httpie 나 포스트맨으로 테스트하면 최소 수분은 걸릴 것이고 엔드포인트 10개를 테스트 하는 유닛테스트를 돌린다면 수초만에 테스트가 끝날 것이다. 또한, integration 테스트는 데이터베이스 서버를 돌려야 하고 메모리가 유닛테스트보다 더 많이 사용하게 되므로 비용도 비싸다.
  • 이처럼 유닛 테스트는 빠르고 비용이 싸므로 개발할때 필수적으로 작성해야 한다

Testing Pyramid

  • Google Test Automation Conference에서 제안된 테스트 피라미드
  • 시스템을 테스트 할때 크게 3가지 방법으로 나눌수 있다.
  • 전체 테스트 비중을 아래와 같은 수치로 구현하는것이 권장된다.
    • E2E(UI) Testing - 10%
    • Integration Testing - 20%
    • Unit Testing -70%

✅ End-To-End Testing / UI Testing

  • 크롬을 띄운 다음에 내가 만든 검색페이지로 들어가서 검색을 해보고 검색한 내용이 제대로 나오는지 화면상에서 확인하거나 직접 회원가입을 해보고 회원가입 후에 로그인 되는지 직접 브라우저 상에서 값을 입력해서 테스트하는 방법
  • 자동화 할 수 있지만 UI Testing은 자동화 하기가 가장 까다롭고 또 실행하기도 까다롭다.
  • Manual Testing은 실행하기 쉽다는 장점이 있지만 비용이 많이 들고 부정확하며 실행 시간이 오래걸린다.

✅ Integration Testing

  • 최소 두개이상의 클래스 또는 서브 시스템의 결합을 테스트하는 방법
  • 예를들면 장고로 서버를 띄우고 모델 클래스와 결합하여 데이터베이스 시스템과 연동한 테스트
  • Postman 또는 httpie로 호출해서 Json response가 제대로 출력되는 확인

✅ Unit Testing

  • 가장 쉬우며 효과가 좋다! 끝!

Unit Test 장점

  • 유닛 테스트는 UI Test또는 integration Test보다 테스트 비용이 싸다고 할수 있다. 왜냐하면 UI Test는 백엔드 서버와 프론트를 연동하여 사람이 직접 테스트하지만, 유닛 테스트는 사람이 스크립트로 한꺼번에 자동으로 실행하기 때문이다.
  • 또한, 유닛 테스트는 다른 테스트에 비해서 실행속도가 매우빠르다. 그래서 유닛테스트를 활용하면 하루에도 배포를 여러번 할 수 있어 개발 및 배포 속도에 중요한 영향을 주기 떄문에 개발할 때 최대한 활용하는게 좋다.
  • 유닛테스트를 잘 짜놓으면 유닛테스트가 되었던 코드에서는 버그가 거의 발견되지 않고 대부분 버그가 발견되는 경우는 유닛테스트가 없어서 발생하는 경우가 많고 만약 사후에 발견된 버그에 대해서도 버그를 수정한 후 유닛테스트를 작성해놓으면 버그를 방지할 수 있다.
profile
Frontend-Developer

0개의 댓글