ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 테스트 코드의 필요성을 깨닫다
    개발/생각 2022. 5. 6. 16:53

    개발자가 되어 일을 하다가 나름의 경험이 생기고 나서 생긴 일이다.

     

    프로그램의 동작은 내가 생각한게 맞고, 내가 가정한 상황이 전부고, 내가 테스트한 환경이 전부라고 생각하는 오만방자한 순간이 오고, 그 어마무시한 자신감을 코드에 싣게되었다.

     

    어느 순간 깨달았을까, 내가 코드를 작성하면 절대적으로 버그를 생산하고, 의도한 기능에 맞지도 않을때가 많다는것을 깨닫고 코드를 작성하는것이 공포스러운 순간이 왔다. 이를 극복하기 위해 코드를 조심히(?) 작성한다는 정말 말도안되는 생각을 했지만 그 공포감에 휩싸인 사람이 코드를 조심히 작성해도 버그는 멈추지 못하는것은 당연했고, 더 깊은 공포에 사로잡히는 계기가 되었을 뿐이다.

     

    스스로의 오만방자했음을 깨닫고 공포감의 우물을 박차고 나가는데는 여러 글이 도움이 되었다.

     

    medium- [번역]소프트웨어 집단의 부패:Expert Beginner의 유산

     

    Expert Beginner 라는 단어는 학습에 큰 뜻을 가지지 않고 "난 지금으로 충분하다" 라는 생각을 깨지 못하는 나에게 머리가 얼얼할정도로 크나큰 충격을 주었고 정말 수도 없이 반복하며 읽어보았다.

     

    초보 전문가, 전문 초보자 정도로 해석할 수 있을까, 주니어를 벗어날 실력은 없으면서 스스로 인지하는 실력만 전문가가 되어버리는 개발자. 현재 개발하는 소스코드도 대부분 오래 된 코드다보니 스스로 발전을 찾지 않으면 발전하기 어려운 상황에 노력하지 않고 현재에 안주하게 되는 내 스스로를 깨닫게 되고, "상담이 필요한" 단계임을 깨달았다.

     

    결국 나는 회사의 상급자에게 고해성사를 하게 되었다.

     

    그날의 이야기는 생각보다 매끄럽게 진행되었다. 정말 짧게 줄이자면, 나는 내가 만드는 프로그램이 너무 버그가 많아서 만들기가 무섭다 였고, 그 문제를 해결할 방법은 테스트 코드를 작성하는것

     

    테스트코드.

     

    뒤늦게 알았지만, 개발은 테스트 코드가 중요하다. 심지어 실제 개발에 들어가기도 전에 이 함수는 이 결과가 나와야하는, 단위 당 테스트 코드를 먼저 작성해두고 개발을 시작하는 TDD(Test-Driven Development, 테스트 주도 개발) 라는 소프트웨어 개발론도 있는데 테스트 코드를 작성할 생각을 못했다니.

     

    오래된 프로그램이라 테스트 코드를 붙이기 어려워서 라는 핑계로 가볍게 넘어간적이 있다. 하지만, 여기서도 글이 하나 등장한다.

     

    medium-설마 아직도 테스트 코드를 작성 안 하시나요?

    (네 맞아요 안했어요..

     

    심지어 그럴싸한 변명도 없다. 그냥 코드가 옛날것이어서, 내가 테스트를 해보면 되니까, 내가 설계한것이 아니어서..

     

    물론 소스코드가 굉장히 오래전부터 이어 내려와서 테스트코드를 작성하기 어려운 구조인것은 맞다. 하지만 그것이 하지 않아도 될 이유는 안되었을뿐더러 내가 테스트코드를 한번 만들어두면 막았을 버그들을 떠올리면 아무리 해도 스스로가 용서가 안된다. 코드 구조가 마음에 안들면 이해를 해서 리팩토링을 하거나, 어떤 다른 방법이 있었을것인데 그냥 테스트 코드란게 있더라 하고 넘어간 과거를 떠올리며 후회한다.

     

    내가 지금 담당하고 있는 프로그램에 바로 테스트코드를 붙이려고 프로젝트 구조를 보았으나 너무도 막막했다. 그렇다고 이번에도 넘어가기엔 너무도 가슴아픈일들이 예견된다.

     

    마침 사내에 개인 프로젝트 형식으로 작성해둔 코드가 있다. 나름 객체지향적으로 작성하려고 노력했고. 이 프로그램을 시작으로 테스트 코드를 작성하고, 필요한 기능 하나씩 추가하면 될것이라는 생각.

     

    마침 시간을 죄던 일도 하나를 마쳤으니, 하루정도는 내가 맡은 프로그램들에게 관심을 아낌없이 줄 때가 되었다.

Designed by Tistory.