twinstae/tripReviewAnalysisSystem

단위, 전체 테스트 작성 => 테스트 주도 개발TDD

Closed this issue · 1 comments

test.py 테스트를 만들어서 에러를 미연에 방지하자는 것입니다.

현재 문제

이번에 크롤러를 제작하면서 실제 구현보다는 자잘한 에러를 잡는데 너무 많은 시간을 써야 했습니다.
알고 보면 사소한 에러들이었지만, 이걸 하나하나 에러 메세지를 보며 찾아내고, 수정하기는 고된 작업이었습니다. 실제 구동 중에 에러가 일어나면 테스트에 오랜 시간이 걸립니다.

사용자 스토리

테스트를 통해 에러를 예측하고 미리 방어적으로 코딩하면...
단위 테스트를 통해 빠르게 에러를 찾아낼 수 있습니다.
심신의 안정을 갖춘 상태에서 빠르게 수정할 수 있습니다.
정말 중요한 기능 구현에 집중 할 수 있습니다.
버그 리포트를 기록 유지함으로서, 반복되는 에러를 사전에 예방할 수 있습니다.

무엇을 테스트 하나?

함수를 작성하거나 어떤 입력이 들어가면, 어떤 출력이 나올지 명확히 생각해봅니다. 이를 docstring으로 작성합니다.

입력값이 변하거나 결측치가 발생했을 때 에러가 발생할 수 있을지 생각해봅니다. (ex str이 입력 변수로 올 줄 알았는데 tuple이 왔다)

  • 가장 기본적인 것은 데이터 값의 범위와 형식을 검사하는 겁니다.
    • 예를 들어 리뷰 텍스트는 string이어야지 tuple이나 리스트이면 안 됩니다.
    • for문 안에는 원소가 1개라도 리스트가 들어가야지, 단일 값이 들어가면 안 됩니다.
    • 또 어떤 데이터는 범위가 있습니다. load_page 함수에서 start는 0이하일 수 없습니다. (-3페이지 부터 크롤링?) 이유는 모르지만 26을 입력하면 -26이 뜨는 에러가 있었습니다. 이 경우 절대값 함수 abs를 통해 양수 임을 보장할 수 있습니다.

자세한 에러 목록과, 기술적 예방/대처 방법은 wiki기능을 이용해 버그 리포트를 예측, 기록, 유지하겠습니다. 꼭 읽어주세요. 여러분의 시간과 멘탈을 지켜줄 겁니다.