일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Problem Solving
- 스탭퍼
- 매일
- English
- Daily Challenge
- 사이드
- 30분
- 운동
- 화상영어
- 만화도
- FIT XR
- leetcode
- 쓰릴오브파이트
- 잡생각
- 10분
- 미드시청
- 리얼 클래스
- Writing
- 읽기
- 링피트
- 프로젝트
- 개발자
- 영어원서읽기
- 영어공부
- 뭐든
- 월간
- 파비최
- 3줄정리
- realclass
- 괜찮음
- Today
- Total
파비의 매일매일 공부기록
깔끔한 파이썬 탄탄한 백엔드 - #8 unit test 본문
이번장은 개발한 시스템이 정상적으로 동작하는지 확인하는 테스트에 대한 내용이다.
특히 단위 테스트에 대해 자세히 알아보고 구현한다고 한다.
테스트 자동화의 중요성 : 많은 시스템들이 매뉴얼 테스트(사람이 직접 하는)만 거치는데 테스트 실행 속도도 느리고 시간도 오래 걸릴뿐더러 부정확할 가능성이 존재한다.
그러므로 테스트 자동화가 필요하다. 항상 정확하게, 그리고 빠지는 부분이 없도록 테스트가 실행되는 것이 중요하다.
테스트 방법
1. UI Test / End-To-End Test : 웹 브라우저를 통해 UI를 테스트하는 것. 시간이 많이 소요되며 테스트 설정 시간도 오래 걸리고 실행 속도도 느림. 자동화하기 까다로움. 셀리니엄 같은 프레임워크를 이용하면 어느 정도는 자동화가 가능. 디자인에 대한 부분은 사람이 봐야 할 수밖에 없음(자동화 어려움). 전체 테스트 중 약 10%만 수행하는 걸 추천
2. 통합 테스트 : UI 요소가 없는 곳에서 수행. 자동화 하기 용이함. 실제로 시스템을 실행해서 테스트를 해야 하기에 까다로운 부분 존재 및 단위 테스트에 비해 자동화에 시간이 오래 걸리고 실행 속도도 느림. 전체 테스트의 약 20%만 수행하는 것을 추천
3. 단위 테스트 : 코드를 직접 테스트하는 개념. 코드로 코드를 테스트한다. 실행하기 쉬우며 실행 속도 빠름. 디버깅이 비교적 간단. 문제가 있을 경우 파악이 비교적 간단. 전체적인 부분 테스트 어려움. 각각의 함수는 정상 작동하나 전체적인 서비스로 연결되어 실행되었을 때의 정상 동작에 대한 테스트는 불가. 전체 테스트의 약 70%로 구성 추천.
그다음은 나도 사용해본 적이 있는 pytest를 이용해서 미니터 API에 대한 단위 테스트를 구현한다.
저자는 단위 테스트와 코드 개발 비중을 1:1로 하는 것을 권장한다.
단위 테스트는 개발자들의 방패라고 생각하는 것이 좋으며 단위 테스트가 잘 구현되어 있으면 조금 더 쉽게 기존 코드를 업데이트하고 확장할 수 있다. 만약 단위 테스트 구현이 미미하면 개발자들이 수정하거나 새로 추가한 코드를 커밋/배포할 때 확신을 가지기 힘들 수 있다.
또한 버그를 고치는 비용이 현저히 낮다. 단위 테스트에서 발견되는 버그는 분석 및 파악, 수정이 용이한 편이다.
단위 테스트를 하지 않는다고 해서 테스트의 의무가 없어지는 것이 아니며 버그도 사라지지 않는다. 그러므로 꼭 단위 테스트를 구현하라고 저자는 이야기한다.
'Study > Python' 카테고리의 다른 글
깔끔한 파이썬 탄탄한 백엔드 - #11 파일 업로드 엔드포인트 (0) | 2021.08.06 |
---|---|
깔끔한 파이썬 탄탄한 백엔드 - #10 API 아키텍처 (0) | 2021.08.05 |
깔끔한 파이썬 탄탄한 백엔드 - #7 인증 (0) | 2021.08.03 |
깔끔한 파이썬 탄탄한 백엔드 - #6 데이터베이스 (0) | 2021.08.02 |
깔끔한 파이썬 탄탄한 백엔드 - #5 본격적으로 API 개발하기 (0) | 2021.08.01 |