본문 바로가기

강의/Udacity ML

5.2 테스팅 & 도구

SMALL

테스팅

배포 전에 코드를 테스트해야 한다. 큰 영향을 미치기 전에 오류와 잘못된 결론을 파악하는 데 도움이 된다. 오늘날 고용주들은 자신의 코드를 테스트하는 것을 포함하는 산업 환경에 적합한 코드를 준비할 수 있는 기술을 갖춘 데이터 과학자를 찾고 있습니다.

 

테스팅과 데이터 과학

데이터 과학에서 발생할 수 있는 문제가 항상 쉽게 감지되는 것은 아니다. 값이 잘못 인코딩되거나, 기능이 부적절하게 사용되거나, 예상치 못한 데이터 손상 가정이 있을 수 있다. 이러한 오류를 탐지하려면 코드 품질뿐만 아니라 분석 품질과 정확성도 확인해야 한다. 예상치 못한 놀라움을 피하고 결과에 자신감을 가지려면 적절한 테스트가 필요하다.

 

TDD(Test-driven Development): 작업을 실행하기 위한 코드를 작성하기도 전에 작업에 대한 테스트를 작성하는 개발 프로세스입니다.

단위 테스트: 프로그램의 나머지 부분과 독립적으로 코드(일반적으로 단일 기능)의 "단위"를 다루는 테스트 유형입니다.

 


단위 테스트 (유닛 테스트)

우리는 반복 가능하고 자동화된 방식으로 우리의 기능을 테스트하고 싶다. 이상적으로는 모든 장치 테스트를 실행하고 실패한 항목과 성공한 항목을 정확하게 알려주는 테스트 프로그램을 실행하는 것이 좋다. 다행히도 Python에는 효과적인 장치 테스트를 만드는 데 사용할 수 있는 훌륭한 도구가 있다.

 

단위 테스트 장단점

장치 테스트의 장점은 이러한 테스트가 프로그램의 나머지 부분과 분리되어 종속성이 발생하지 않는다는 것이다. 데이터베이스, API 또는 기타 외부 정보 소스에 액세스할 필요가 없다. 하지만, 유닛 테스트를 통과했다고 해서 우리 프로그램이 성공적으로 작동하고 있다는 것을 증명하기에 항상 충분한 것은 아니다. 프로그램의 모든 부분이 서로 제대로 작동하며 서로 간에 데이터를 올바르게 전달하고 전송한다는 것을 보여주기 위해 통합 테스트를 사용한다. 이 과정에서는 유닛 테스트에 초점을 맞춘다. 그러나 더 큰 프로그램을 구축하기 시작하면 통합 테스트도 사용할 수 있다.

 


유닛 테스트 도구

pytest 설치

pip -install -U pytest

 

테스트 출력에서 주기는 성공적인 단위 테스트를 나타내고 F는 실패한 단위 테스트를 나타낸다. 어떤 테스트 함수가 실패했는지만 확인되므로 테스트당 하나의 주장문만 사용하는 것이 좋다. 그렇지 않으면 정확히 몇 개의 테스트가 실패했는지 또는 어떤 테스트가 실패했는지 알 수 없다. 실패한 주장문에 의해 테스트가 중지되지는 않지만 구문 오류가 있는 경우 테스트가 중지된다.

SMALL

'강의 > Udacity ML' 카테고리의 다른 글

5.8 로그와 로그 메시지  (0) 2021.08.04
5.7 테스트 중심의 개발 및 데이터 과학  (0) 2021.08.04
4.24 모델 버전 관리  (0) 2021.07.31
4.23 VC 시나리오 #3  (0) 2021.07.30
4.22 VC 시나리오 #2  (0) 2021.07.30