유닛테스트는 중요하다
우리는 뭔가를 구현하는 것이 목적
구현이 됬는지 안됬는지에 대한 테스트를 안한다는 것은 개발을 안하는 것이다.

은우님 기준으로 개발 테스트의 비중 5:5 로 해야 함
버그는 지금 고쳐야지 빨리 고칠 수 있다..
우리나라 테스트 약간 비중 안둠
why?빨리 빨리 문화

Test의 3가지 종류

image.png

  1. E2E (UI test)
    : 끝에서 끝까지 다 테스트를 한다. from End to End
    UI테스트는 사용자 입장에서 테스트 하는 것이다.
    사용자처럼 입력해보고 클릭해보고 컴포넌트 제대로 나오는지 보고
    이게 다 UI test다. UI를 통해서 테스트 하고, 마지막 end user 처럼 테스트를 하기때문에 E2E test라고도 함.
    가장 확실하고 정확한 방법
    눈으로 확인하기때문에 빠르게 확인할 수 있다는 장점이 있다.
    눈으로 직접 봤기때문에 정확하게 알 수 있음.
  • 단점
    1)시스템 시동시키는 데 오래걸릴 수 있음
    (ex. 테스트 하기 위해서는 백엔드 서버 키고, 프론트 엔드 서버키고... 등등 배포하듯이 해야 함 )
    2) 직접해봐야되는 불편함
    3) 시간이 오래걸림 -> 비용이 높은 테스트
    4) 반복해서 확인하기 어려움
  • UI테스트 중 버그가 생기면 어떻게 확인할까? 어떤 문제로 인해서 발생하는 건지 파악하고, 고치고나서 retest 클릭부터 다하기~프론트엔드셋업에서 다시 풀땡기고...하나하나 다 확인하기

  • 스타트업이 많이 하는 실수 중 하나가 인력이 부족하니깐, 테스트를 할 때 1차는 다 하지만, 2차 수정하고 테스트할 때 1차때 했던 부분을 테스트 안하고 그냥 추가로 수정한 것만 테스트하는 경우가 많음. 이럴 때 꼭 버그가 생김 why? 테스트를 안했으니깐 (migration issue: 이런 때 발생한 이슈를 이렇게 부름) 내가 테스트안하면 user가 테스트한다... 테스트는 정말정말 중요함 !user가 발견하면 신뢰성이 하락~!!!

  1. Integraiton Test
    : E2E 처럼 내가 직접하는 것이 맞는데, 내가 만든 내 서버만 확인해보는 것! 그게 바로 E2E와의 차이.
    비용이 E2E보다 싸다. 왜 ? 내가 직접 해보고 백엔드단만 확인해볼 수 있으니깐

  2. Unit test
    : 가장 빠르게 편하게 할 수 있는 테스트
    테스트 할 수 있는 최소 단위는 함수다 ! 그 함수를 테스트 하는 것이 unit test .
    함수를 어떻게 테스트하나 ?
    유닛테스트는 테스트를 하는 테스트코드를 만들기 위한 테스트.
    so,, 우리나라가 유닛테스트 잘안함 왜 ? 테스트 하기 위해서 또 코드쳐야되니깐...

    • 유닛테스트의 예
    function add (num1, num2) {
     return num1 + num2 }
    
     add (1,2) == 3
     add(100,200) == 300
     add (10000,20000) == 30000 

    이렇게 해서 에러나오면 문제 있는 것
    근데 유닛 테스트 할 때는 긍정적인 테스트, 부정적인 부분, 그리고 0 값인 부분 확인필요
    (1,-1,0 을 기억하자!!!)
    1 긍정 / -1 부정/ ,0 (예외 케이스)를 다 해야함
    (왜? 내 코드니깐 1만 하고 되네~ 하고 넘어갈 수도 있으니깐)

    • 유닛테스트로 전체테스트 부분의 70프로를 진행 왜 ? 유닛테스트 자동반복 실행이 가능하다는 장점이 있다. 엄청쌓인 유닛테스트는 빠르게 할 수 있음. 사람이 직접하는 테스트는 시간이 오래걸리는데, 얘는 자동반복하면 테스트가 가능해서..그래서 비용이 적게 들을 수 있음

    • E2E는 최소한만하자.. 왜?그래야지 더 realiable 사이트를 만 들 만들 수 있다!
      테스트를 안해보면 불안함..코드짤때....SO 체계적으로 테스트 / 개발하는 것이 중요하다

    • Python에서는 테스트 하기 위해서 데이터 혹은 설정하는 것....fixture
      프론트엔드도 unit test 할 수 있는 라이브러리있음

    • 자동 유닛테스트는 꼭꼭 해줘야 함 -> 왜? migration issue가 있을 수 있음
      내가 아무리 실수를 안했어도 나중에 내가 수정할 수 있고 다른 사람이 수정할 수도 있고
      그러니깐 unit test는 꼭 꼭 !