TIL. unit test

Kim Chioh·2021년 3월 7일
0
post-thumbnail

유닛테스트의 필요성

Httpie 나 postman 을 이용하여 test 하는 것을 Integration test 라고 한다. 우리가 1차 때까지 했던... 귀찮았던 과정이다

Integration test 는 최소 두 개 이상의 class 또는 sub system 을 결합하여 test 하는 방식이다. UI 가 없어도 test 할 수 있다는 점에서 편리하지만, 엔드포인트 하나 당 필요한 값을 그때그때 전부 타이핑해야 한다는 수고로움 때문에 시간이 오래 걸린다. 또, 테스트를 진행할때마다 서버를 열어야 하기 때문에 데이터베이스 메모리 비용이 들 수 있다.

바로 이러한 단점들 때문에 Unit test 가 필요하다. Unit test(단위 test framework) 는 스스로 logic test code 를 짜서 내가 작성한 code 의 가장 작은 단위인 function 을 테스트하는 method 이다.

이렇게 서버를 열지 않아도, 또 엔드포인트에 들어갈 키와 값들을 따로 입력해주지 않아도 자체적으로 test 를 시행할 수 있다. 즉, Integration test 에서 소요되는 단점들-시간&비용-을 보완할 수 있는 것이다.
물론 하나의 Unit test 를 만드는데에도 적지 않은 시간이 소요된다. 그러나 Integration test 와 달리 한 번 만들어두면 유지/보수가 쉽고, 스크립트 자체로 돌리기 때문에 test 속도도 빠르고 비용도 많이 절감할 수 있다.

Unit test과정

Unit test #1 : setUp

get method 는 생각보다 유닛 테스트를 짜기가 쉬우면서도 번거로웠다. post 에 비해 error 가 많이 발생하지 않아서 쉬웠고, setup 과정이 길어 번거롭다.
setup과정에는 준비과정, 데이터 등이 들어가있어야 하는데 내가 짠 get method는 프로덕트 전체 뷰여서 준비과정이 꽤 길었다.

Unit test #2 : tearDown

tearDown은 clean up을 위한 과정이다. 셋업 데이터를 임시로 저장하였고 테스트가 끝나면 모두 지워야하기 때문에 이 과정에서는 delete()가 쓰인다.

Unit test #3 : success, fail, and not found

유닛테스트는 총 3가지의 목적에 따라 다른 테스트를 진행해야한다.
1. 결과가 잘 나오는지,
2. 결과가 잘 실패하는지,
3. 예외처리가 잘 되는지.

profile
Just do what to do

0개의 댓글