안녕하세요. 인프랩 백엔드 개발자 하루입니다.

아마 좋은 소프트웨어 설계, 좋은 코드를 위해 테스트 코드를 작성해야 된다는 글을 많이 보셨을 겁니다.

하지만 몇몇 개발자분들은 테스트 코드를 작성하는 것에 공감을 못하기도 하면서 테스트를 막상 작성한다고 하더라도 효과를 보지 못하는 경우들이 있는데요.

그 몇몇 개발자 중 한명이 인프런에 합류하기 전 저이기도 했습니다.

그리고 제가 인프런에 왔을 때 인상 깊었던 것 중 하나는 테스트 코드 존재에 대한 부분이었고 지금 와서 느끼는 부분은 “내가 지금까지 테스트 코드를 작성해야 되는 이유와 잘 작성하는 방법을 몰랐구나.” 라는 것입니다.

이번 포스트에서는 테스트 코드를 왜 작성해야 되고 잘 작성하는 방법에 대해서 제가 조언 받았고 배웠던 내용들을 정리해 보려고 합니다.

테스트 코드를 왜 작성하는 것인가?

첫번째. 디버깅 비용 절감

개발자가 총 개발 소요 시간중 온전히 요구사항에 대한 기능 개발을 하는 시간이 전체의 비중에 어느정도를 차지할까?

위와 같은 물음에 자체 서비스 회사에서 서비스를 운영하고 유지 보수를 해본 경험이 있다면 생각보다 많은 비중을 차지 않는다는 점을 아실 겁니다.

애플리케이션은 항상 내결함성을 가지고 있고 좋은 코드와 설계를 갖추더라도 결함의 존재 자체를 부정할 수 없습니다.

그래서 기능에 대한 버그는 항시 발생하고 그것에 해결하기 위해 개발자는 디버깅을 꾸준히 할 수밖에 없는데요.

저도 이전 회사에서 버그와 이슈들을 리포트 받고 디버깅하고 해결하는데 많은 시간을 소비했습니다.

조금 더 그 시간을 쪼개보자면 문제를 해결하는 시간보다 문제를 찾기 위한 시간이 더 많았습니다.

어느 코드 블록에서 어떤 케이스에서 문제가 발생했는지 알기 너무 힘들었기 때문이었죠.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d0643c60-b6a4-42f4-acb5-f958da0cc9a8/hello.gif

<기존 코드들을 보면서 디버깅하는 내 모습>

그렇다면 테스트 코드가 있는 지금의 프로젝트는 어떨까요?

위에서도 언급했듯이 견고한 테스트를 작성하더라도 완벽하게 결함을 없앨 순 없습니다.

하지만 테스트 코드를 통해 오류를 줄일수 있었고 빠르게 대처할 수 있는 내성이 생기는데요.