brunch

You can make anything
by writing

C.S.Lewis

by sebatyler May 01. 2023

연쇄 96퍼센트

python django test code coverage

연쇄 96%?


 전 회사에서는 Flask로 개발되어 있던 백엔드를 Django(이하 장고)로 재개발하면서 코드 퀄리티를 높이는 것이 첫 번째 과제였다. 장고의 장점인 어드민과 마이그레이션을 활용하고, 전무했던 테스트 코드를 작성하여 목표를 달성하려고 노력했다. 퇴사 시점인 2021년 12월말 기준으로 96%의 테스트 코드 커버리지를 유지할 수 있었다.


 현재 일하고 있는 Starry Night에서는 테스트 코드 커버리지에 집착하기 보다는 개발을 하면서 필요하다고 판단되는 코드에 대한 테스트 코드를 적당히 자연스럽게 작성해왔다. NYXS 모바일앱을 런칭할 때 96%의 테스트 코드 커버리지를 달성했고, 이를 현재까지도 잘 유지하고 있다. 두 회사에서 연속으로 96%라는 수치는 나에게 매우 신기하면서도 뿌듯한 일이다.


달라진 점은?


 이전 회사에서는 장고의 기본 테스트를 django-test-plus, fast-test-database, factory-boy, freezegun 등과 함께 사용하여 테스트 코드를 개발하고 실행했다. 현재는 pytest에 django-test-plus, factory-boy, freezegun 등을 함께 활용하고 있다. 이전과 비교해보면 테스트 코드 작성이 쉽고 편리해졌으며, fixture 재활용을 통해 반복되는 코드 사용도 줄어들었다. 또한, 테스트시에는 sqlite3를 DB로 사용하여 테스트 실행 속도가 빠른 것도 만족스러운 점 중 하나이다.


테스트 코드 커버리지란?


 테스트 코드 커버리지는 테스트된 코드의 비율을 나타내는 지표이고 100%에 가까울수록 거의 모든 코드가 테스트되고 있다는 것을 의미한다. 테스트 코드 커버리지가 높을수록 테스트된 코드에 대한 자신감을 높일 수 있으며, 버그를 예방하고 코드 퀄리티를 향상시킬 수 있다. 물론 테스트 코드 커버리지가 높다고 해서 모든 버그나 문제를 발견할 수 있는 것은 아니다. 테스트 코드가 잘못 되었거나 예상치 못한 입력이 들어올 수도 있기 때문이다. 


테스트 코드 왜 필요한가?


 높은 테스트 코드 커버리지는 전체적인 코드 퀄리티와 안정성을 유지하는 데 도움이 된다. 테스트 코드를 꾸준히 작성하고 유지하는 것은 버그 혹은 로직 오류를 조기에 발견하고 수정하여 시간과 노력을 절약하는 장기적 이점을 가져올 수 있다. 또한, 테스트 코드를 작성하면 직접적인 수동 테스트를 할 필요가 없어지고 테스트 코드가 기능의 명세가 되기도 해서 새로 온 개발자에게도 도움이 된다. 코드 리팩토링, 패키지 업데이트, 언어 버전 업데이트 등을 안전하게 진행할 수 있다는 것도 큰 이점이다.


결론


두 회사 연속으로 테스트 코드 커버리지 96%를 달성했다.

주말에 마음 편히 등산을 갈 수 있다!


용문산에서 바라보는 한강


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari