unit test

Kepler·2020년 3월 10일
0

Unit Test에는 3가지 종류가 있다.

1. UI (E2E) Testing (10%): UI단에서 테스트. 처음부터 끝까지.

  • 장점: 직관적이고, 가장 확실한 테스트이다.
  • 단점: 비용, 시간이 많이 든다.

UI 테스팅의 경우, 배포할만한 환경까지 구축하고 이루어져야한다 (보통 스타트업은 이 테스트에 의존한다.) 따라서,버그가 발견되면 프론트/백 어느쪽의 어떤 코드인지 까지 파악한 후 디버깅이 가능하다. 디버깅 후에도, 다시 프/백 연동하여 테스트를 실시하므로, 상당히 까다롭다.

2. Integration Testing (20%): 서버 한부분만 테스트.

  • 장점: E2E보다 저렴.
  • 단점: 하지만, 비용이 꽤 있다.

3. Unit Testing(70%): 코드 가장 작은단위 테스트(즉 함수).

  • 장점: 자동화 가능, 원할때마다 실행 가능, 속도 빠름 (효율성 UP).
  • 단점: 테스트하는 코드를 짜야함. 그 구현이 복잡할 수 있음.

똑같은 버그라도 유닛테스트 단계에서 발견하여 수정하는게 훨씬 더 비용/공수가 적다. 개발시 실제코딩과 유닛테스트의 비율은 5:5의 자세로 임한다. 그만큼 QC의 중요성을 항상 생각하면서 개발해야 한다는 뜻이다.

테스트시 주의할점

testcase를 짤 때, 1/-1/0의 케이스를 생각하자.

예) 1(positive if 10+20=30), -1(negative, 잘못된 값을 넣어서 테스트 if 20+20 is 30), 0(exception, if a+b 가 빈값, int가 아닐 경우 등)

테스트끼리는 의존성이 없어야한다. 해당 unit test가 끝나면 그 코드를 삭제하여 영향이 안가도록 하자.

예)유저 생성 테스트를 한 경우, 생성된 유저정보는 db에서 지우기

속도가 빨라야 한다. 따라서,실제 요청을 보내는 것은 하지 않는다.

예)소셜 로그인의 경우, 실제 카카오에 요청을 보내면 안됨

profile
🔰

0개의 댓글