❓ 테스트 코드를 왜 작성해야할까?

나는 학생 개발자이다.
팀원들과 실제 프로젝트 제작하여 학교 학생들에게 실제 서비스한 경험은 있지만, 아무래도 기업에서 진행하는 프로젝트와는 비교적 규모와, 에러 대응 태도 등에서 차이가 날 수 밖에 없다.
어차피 같은 학교 학생들, 선생님들을 대상으로만 진행한 프로젝트이다 보니, 사용에게 문제가 생기면 바로 옆에 있다 보니 불러서 빠르게 해결 할 수 있었고, 에러에 대한 경각심이 줄어들게 되었다 (굉장히 위험)
이러한 이유들로 그동안 테스트 코드의 필요성에 와닿지 못하였다.
그렇기에 새로운 프로젝트에서 공부하여 테스트 코드를 적용하며 느낀 점들을 작성하려 한다
🔎 코드의 변경에 따른 문제 방지를 위해
테스트 코드는 회귀 버그를 방지할 수 있다.
회귀 버그는 이전에 제대로 작동하던 소프트웨어 기능에 문제가 생기는 것을 가리킨다
애플리케이션에서 기능은 단일 요소만 사용하지 않고 서로 상호작용하며 협력한다.
기능을 수정한다면 결국, 다른 요소들에도 필수적으로 관여를 하게 된다. 이는 결국 회귀 버그로 이어지게 된다.
테스트 코드는 그때 당시의 기능을 만들기 위해서만 필요한 코드가 아니다.
그 이후에 요구사항의 변경으로 인한 코드 수정을 대비하여 서비스가 지속 가능하게 발전하기 위해 필요한 코드이다.
이는 지속적인 통합 단계와도 연결이 된다.
만일 기능이 수정되며 다른 기능들에게도 영향을 끼치게 되면 테스트 코드에 오류가 발생한다.
그렇다면 개발자는 기능을 수정하며 영향을 받은 다른 코드를 확인 할 수 있고, 변경된 부분을 다시 생각하게 된다.
🫠 좋은 코드 = 좋은 테스트 코드
좋은 코드를 짜면 당연히 테스트 코드를 짜기도 쉽다.
기능들이 분리되어 있고, 결합이 없는 코드가 작성에 용이한 것은 당연한 것이다.
하지만 결합되어있고, 좋지 않은 코드들은 테스트 코드를 작성하기 어렵다.
나는 테스트 코드로 간접적으로 코드 스멜을 체크할 수 있었다.
📑 코드에 대한 이해도 상승
테스트 코드는 작성자에게도, 코드를 보는 이에게도 그 기능에 대한 이해도를 증가 시킬 수 있다.
테스트 코드는 작성하면서 개발자에게 기능의 진행 로직을 다시 생각해보게 하며, 읽는 이들에게는 여러 바리에이션의 상황에서 이 기능이 어떻게 작동하는지 요약하여 보여준다.
때문에 입사자나 후배들이 인수인계를 받을 때 테스트 코드는 코드의 이해에 지대한 영향을 미친다.
또한, 꾸준히 문서화 하더라도, 수십 수백개의 문서들을 하나하나 읽을 수는 없기에 문서들을 쉽게 방치되기 쉽다.
이를 테스트 코드는 코드 속에 문서화 할 내용을 적어 그때그때 쉽게 읽을 수 있다.
해당 글은 인프랩 백엔드 개발자 하루님의 글을 보고 제가 느낀 점을 작성한 글입니다.
'Java & Kotlin' 카테고리의 다른 글
| JPA 기본 개념 알고 가기 (0) | 2024.10.25 |
|---|