파비의 매일매일 공부기록

깔끔한 파이썬 탄탄한 백엔드 - #8 unit test 본문

Study/Python

깔끔한 파이썬 탄탄한 백엔드 - #8 unit test

fabichoi 2021. 8. 4. 23:30

이번장은 개발한 시스템이 정상적으로 동작하는지 확인하는 테스트에 대한 내용이다.

특히 단위 테스트에 대해 자세히 알아보고 구현한다고 한다.

 

테스트 자동화의 중요성 : 많은 시스템들이 매뉴얼 테스트(사람이 직접 하는)만 거치는데 테스트 실행 속도도 느리고 시간도 오래 걸릴뿐더러 부정확할 가능성이 존재한다.

그러므로 테스트 자동화가 필요하다. 항상 정확하게, 그리고 빠지는 부분이 없도록 테스트가 실행되는 것이 중요하다.

 

테스트 방법

1. UI Test / End-To-End Test : 웹 브라우저를 통해 UI를 테스트하는 것. 시간이 많이 소요되며 테스트 설정 시간도 오래 걸리고 실행 속도도 느림. 자동화하기 까다로움. 셀리니엄 같은 프레임워크를 이용하면 어느 정도는 자동화가 가능. 디자인에 대한 부분은 사람이 봐야 할 수밖에 없음(자동화 어려움). 전체 테스트 중 약 10%만 수행하는 걸 추천

2. 통합 테스트 : UI 요소가 없는 곳에서 수행. 자동화 하기 용이함. 실제로 시스템을 실행해서 테스트를 해야 하기에 까다로운 부분 존재 및 단위 테스트에 비해 자동화에 시간이 오래 걸리고 실행 속도도 느림. 전체 테스트의 약 20%만 수행하는 것을 추천

3. 단위 테스트 : 코드를 직접 테스트하는 개념. 코드로 코드를 테스트한다. 실행하기 쉬우며 실행 속도 빠름. 디버깅이 비교적 간단. 문제가 있을 경우 파악이 비교적 간단. 전체적인 부분 테스트 어려움. 각각의 함수는 정상 작동하나 전체적인 서비스로 연결되어 실행되었을 때의 정상 동작에 대한 테스트는 불가. 전체 테스트의 약 70%로 구성 추천.

 

그다음은 나도 사용해본 적이 있는 pytest를 이용해서 미니터 API에 대한 단위 테스트를 구현한다.

 

저자는 단위 테스트와 코드 개발 비중을 1:1로 하는 것을 권장한다.

단위 테스트는 개발자들의 방패라고 생각하는 것이 좋으며 단위 테스트가 잘 구현되어 있으면 조금 더 쉽게 기존 코드를 업데이트하고 확장할 수 있다. 만약 단위 테스트 구현이 미미하면 개발자들이 수정하거나 새로 추가한 코드를 커밋/배포할 때 확신을 가지기 힘들 수 있다.

또한 버그를 고치는 비용이 현저히 낮다. 단위 테스트에서 발견되는 버그는 분석 및 파악, 수정이 용이한 편이다.

단위 테스트를 하지 않는다고 해서 테스트의 의무가 없어지는 것이 아니며 버그도 사라지지 않는다. 그러므로 꼭 단위 테스트를 구현하라고 저자는 이야기한다.

 

반응형
Comments