본문 바로가기
테스팅

[테스팅] 데이터 분석에서 유닛테스트가 필요할까?

by mushroom analyst 2022. 2. 19.

이번 글에서는 유닛 테스트에 대해서 글을 작성해 보려고 합니다.

 

먼저 유닛 테스트란 다음과 같이 위키백과에서 정의를 내리고 있습니다.

컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다. 즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다.

 

사실 제가 처음 회사에 입사해서 일을 하게 될 때 유닛 테스트라는 개념과 필요성을 전혀 알지 못했습니다.

하지만 특정 분석 기능을 개발하고 이를 배포했을 때, 문제들이 발생하였고 그때 알아차렸습니다.

따라서, 이 분야에 입문하시는 분들께서는 참고하시면 좋을 것 같고, 이미 알고 계시거나 알아가는 단계에 있는 고수분들은 저에게 조언과 피드백 주시면 감사하겠습니다!

 

제가 데이터 분석 분야에서 유닛 테스트가 필요하다고 생각한 경우는 다음과 같습니다.

물론, 해당 경우보다 더 필요한 상황이 많겠지만 제 경험상 느꼈던 부분에 한하여 말씀드리는 점 참고 부탁드립니다!

 

우리가 만든 분석 모듈에 문제가 발생하여, 개선 및 수정 사항이 필요한 경우

 

저는 예전에 분석 프로젝트를 제작한다거나 어떤 대회에 참가한다고 했을 때, 그 코드를 주피터 노트북 하나로 만드는 경우가 많았습니다. 

주피터 노트북 파일 화면

 

그러다가 해당 코드가 내용이 많아서 길어졌을 때, 다루기에 버겁다고 생각하여 하나의 주피터 노트북 파일에서 기능별로 여러 개의 python 파일로 만드는 모듈화 작업을 하여 이를 실행하는 방법을 사용했었습니다. 데이터 분석 프로젝트를 어떻게 모듈화를 하는지도 궁금해하실 수 있는데요. 그 주제에 대해서는 추후에 업로드 하도록 하겠습니다.

모듈들로 구성한 화면

 

위의 경우들로만 작업을 해봤을 때, 문제가 생기거나 수정을 할 경우 제 로컬에 있는 파일들만 수정해서 실행 후 오류가 나면 고치고 하는 작업을 반복했었기에 큰 불편함을 느끼지 못했던 것 같습니다.

 

그렇지만 문제는 분석 기능을 서비스로 배포할 때 생겼습니다!

분석 기능 또한 동일하게 모듈들로 만들어서 실제 서비스가 배포되고 있는 서버에 배치하였고, 우리가 가지고 있는 모든 데이터들에 대해서 최소 6개월 정도 가량의 데이터로 "데이터 로드 - 예측 결과 저장" 까지의 파이프라인을 테스트하며 검증을 했다고 생각했습니다.

하지만 배포된 순간 이유 모를 오류가 발생했다고 말씀 주시기도 하고, 예측 결과가 이상하다고 말씀을 주실 때도 있었습니다. 그럴 때마다, 제가 만든 로컬의 모듈들로 오류가 났던 데이터의 종류와 기간을 가져다가 테스트해야 했습니다. 처음에도 불편하긴 했었지만 데이터의 양이 적아서 괜찮다고 생각했습니다. 그렇지만 DAU가 많은 앱들에 대해서는 코드 실행을 돌릴 때마다 최소 1시간 이상 걸리는 문제가 발생했습니다. 그래서 문제가 발생할 때마다 원인을 찾고 해결하는 데에 있어서 시간이 오래 걸리고, 이는 다른 작업들을 하지 못하는 문제까지도 발생시켰습니다.

 

결론적으로, 실제 서비스에 배포 중인 분석 모듈이 문제가 생겼을 때, 신속하게 어디에서 문제가 발생했는지를 파악할 필요가 있고 수정해야 합니다. 그렇지 못한다면 서비스와 현재 다른 프로젝트 작업에도 큰 지장이 생길 수 있기 때문입니다. 따라서 우리는 유닛테스트라는 과정을 구축하여 해당 문제들을 해결할 수 있습니다.

 

그렇다면 유닛테스트를 실제로 어떻게 적용할 수 있을까?

해당 내용에 대해서는 다음 포스팅에서 설명해 보도록 하겠습니다!!

제가 작성하는 글이 경험상 느낀 점들을 기반으로 작성하다 보니 틀린 점이나 부족한 점이 많을 것이라고 생각됩니다.

글을 읽어보시고 피드백은 주시면 감사하겠습니다!! 

 

 

 

댓글