Test에 관하여 +(module, unit)

고명우
고명우
Sep 7, 2018 · 5 min read

이번 project를 하면서 pytest를 통해 unit test를 적용시켜 보았다. 이전의 javascrip를 통한 sprint의 mocha, chai test를 보면서 뭔가 단순히 목적을 달성하기 위해 통과해야만 하는 대상으로서만 생각해 왔던게 test였고, sprint 막바지 기간에는 많은 동료들도 구현이 중요하지 test통과는 그렇게 중요하지 않은 것 같다는 생각을 표현했었고 본인도 test는 그냥 피상적인 점수를 매기는 도구 정도로 생각했었던 것 같다. 협업 프로젝트를 처음 시작할 즈음 트루쇼트 송은우 이사님께서 test의 중요성을 알려주셨었는데 그때 처음 이론적으로나마 test의 중요성을 정리하고 인식 하게 되었던 것 같다.

unit test -각각의 부품들이 제 역할을 잘 하는지, 잘 동작하는지에 대해 각각의 test를 만든다.

  • 단일 객체 또는 함수 단위의 코드에 대한 테스트로서,각각의 테스트는 독립적으로 수행

tdd- 테스트가 개발을 이끈다. 개발 코드를 쓰기도 이전에 test코드를 먼저 만드는 개념.

  • Test Driven Development is the practice of writing a test for a piece of required functionality, before writing any implementation code. This test should fail when first run, and then, you write the code to get it to pass. It doesn’t have to be the most perfect code, just so long as the test passes. Once it does, you can then safely refactor your code

project를 마무리 해가는 이 시점에서 크게 느끼는 바는 실제 서비스에서 한 부분을 담당하고 만들어 보니 test가 정말 중요하다는 것이다.

어제 오늘 많은 상황들이 있었는데 어떠한 이슈들로 인해 print가 찍히지 않았었고, 해결이 되지 않는 상황에서 계속 그것만을 붙잡고 진행을 안시킬 수가 없어 다음스텝인 각 엔드포인트에 대한 모든 로직을 전개해 나갔었다. 오늘 오전부터 print문제를 해결하고 서버를 돌려가며 post man으로 작동시키며 뜨는 error message를 보고 추론하고 추적하여, print 대신 return을 이용해가며 계속 문제들을 고치고 또 고쳐 나갔었다.하루 종일 그것을 반복하다 보니 문득 이런 생각이 들었다.

error메세지야 진짜 너무 고맙다!!! ㅜㅜ

만약 error message가 없었다면…물론 집요하게 파고파서 어떻게든 해결 해야했겠지만

그게 정말 엄두가 나지 않았을 것이다. 근데 이 error message들은 이 막막한 상황에 얼마나 고마운 존재인가! 어느 위치에서 무슨 error가 났는지까지 정확하게 짚어주고

바로 이런 것이 다 test가 해주는 것이 아닌가 하는 생각이 든다.

나의 선에서의 코드 수정에 있어서도 그렇지만 merge를 하고 수정을 하고 맞춰나가고 발전시켜가는 그 무수한 과정들 속에서 test가 잡아주고 전해주는 error message와 error의 위치들은 우리의 debugging을 정말 용이하게 해준다. 예를 들어서 merge완료하면 일단 test돌려보면 바로 알 수 있다. 어디서 문제가 났는지 바로 알수 있다.

하나하나의 부품에 대해 세밀하게 test를 만들어 놓을 수록 debugging도 쉬워질 것이고 문제가 일어날 확률도 줄어들 것이다. 무엇보다도 지금의 나야 개발을 배우고 개발자가 되어가는 입장으로서 이 error들을 마주해가며 바로 잡는 것이 해야하는 것을 하는 것이 라고 해도 돈을 내고 서비스를 사용하는 사용자가 이런 에러 메세지와 에러를 마주해야 한다면 그것은 정말 열받는 일일 것이다.

그리고 문제는 늦게 발견할 수록 그 비용이 큰 법이다.

우리는 그때가서 후회한들 아무 소용도 없을 것이고, 그냥 더 많이 잃었을 뿐일 것이다. 인생과 마찬가지다 준비를 철저히 해야 낭비와 소모를 줄일 수 있다. 유비무환

그리고 규모가 작을땐 오히려 모를수 있다. 하지만 규모가 커지면 커질수록 module화와 test의 가치는 빛을 발할 것이다. unit test가 가능했던것은 module화가 있었기 때문이다.

Module화->unit structure-> unit test

이 연결라인은 우리에게 엄청난 편리함을 주는 것 같다.

그러니 잘 이용하자.

test는 정말 중요하다. 그 가치를 절감했으니 test에 대해 더욱 많이 고민하고 더욱 많은 시간을 들이도록 하자. +module, unit

자료

tdd 출처: https://www.madetech.com/blog/9-benefits-of-test-driven-development

이미지 자료 출처: https://feel5ny.github.io/2017/12/08/TDD_01/

Inspired by 송은우 이사님

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade