테스트 코드는 왜 작성할까? 사실 백엔드 개발을 학습하면서 "테스트 코드가 중요하다. 실무에서 매우 중요하다." 이런 말을 정말 수도 없이 많이 들었었다.
하지만 이전까지 나의 프로젝트 경험을 돌아보았을 때 나 자신에게도 "중요하다. 중요하다." 되뇌기만 하였을 뿐 실질적으로 프로젝트 내에서 진행한 적은 없었다.
이런 상황에서 네이버 부스트캠프에서 곰터뷰 프로젝트를 진행하면서, 꼭 테스트 코드를 프로젝트에 적용해보고 싶다는 생각을 하였었다. 다행히도 함께 백엔드 파트를 진행하신 팀원분께서 테스트 코드를 사용하신 경험이 있으셨기에, 큰 부담 없이 테스트 작성을 학습해 가며 진행할 수 있었다.
학습을 통해 알게 된 테스트 코드를 작성하는 이유를 정리해보고, 또한 프로젝트를 통해 직접 테스트 코드 작성을 경험한 후 이를 사용하면서 느낀 장단점에 대해서 정리해 보겠다.
테스트 코드란?
테스트 코드(Test Code)는 소프트웨어 개발 과정에서 프로덕션 코드(Production Code)가 의도한 대로 동작하는지를 검증하기 위해 작성된 코드이다.
쉽게 말해서, 소프트웨어 개발 단계에서 흔히 우리가 개발이라고 부르는 코딩의 결과물인 프로덕션 코드가 잘 작동하는지 테스트할 때 사용하는 코드이다.
테스트 코드를 작성하는 이유
테스트 코드를 작성하는 이유는 크게 아래의 4가지로 정리할 수 있다.
- 신뢰성 향상: 테스트 코드를 통해 기능이나 모듈이 예상대로 동작하는지 확인할 수 있다.
- 유지보수 용이성: 테스트 코드가 있으면 기존 코드를 변경하거나 업데이트할 때 기존 기능들이 올바르게 동작하는지 쉽게 확인할 수 있다. 또한, 새로운 기능이나 수정된 기능에 대한 피드백을 빠르게 얻을 수 있다.
- 버그 식별: 테스트 코드를 통해 버그를 조기에 찾아내고 해결할 수 있다. 이는 개발자가 코드를 변경할 때마다 테스트를 실행하여 예기치 않은 문제를 미리 발견하는 데 도움이 된다.
- 문서화 역할: 테스트 코드는 코드의 예상 동작을 설명하며, 새로운 개발자나 팀원이 코드를 이해하고 사용하는 데 도움이 된다.
기존의 코드를 수정하거나 새로운 기능을 추가하는 경우에 원래의 기능이 계속해서 잘 작동하고, 개발한 새로운 기능과의 충돌을 일으키지 않는지 확인하는 역할을 한다고 볼 수 있겠다. 그렇기에 만약 소프트웨어 개발을 애자일 방식으로 진행한다면 더 필요할 것이라고 판단된다.
테스트 코드 작성의 장단점
위에서는 테스트 코드 작성의 필요성에 대해 간단하게 살펴보았다. 그럼 개발자 입장에서 경험할 수 있는 테스트 코드 작성 시의 장단점은 무엇일까?
장점
- 안정성 향상: 테스트 코드는 코드의 안정성을 향상하고 예상치 못한 오류를 방지하는 데 도움이 된다.
- 유연성 증가: 변경사항에 대한 피드백을 빠르게 얻을 수 있어 코드를 쉽게 수정하고 업데이트시킬 수 있다.
- 비용 절감: 버그를 초기에 찾아내어 수정 비용을 낮추고, 생산성을 향상한다.
- 개발자의 안정: 코드가 테스트를 통과하게 되면 개발한 기능에 대해 개발자 자신이 확신을 얻을 수 있으며, 코드 변경에 대한 두려움을 줄여준다.
단점
- 시간과 노력 소모: 테스트 코드를 작성하는 데 시간과 노력이 들며, 특히 초기에 생산성이 감소한다.
- 유지보수 필요: 테스트 코드도 코드가 변경될 때마다 업데이트되어야 하며, 이는 추가적인 유지보수 작업을 의미한다.
- 전체 커버리지 어려움: 발생할 수 있는 모든 시나리오를 테스트하는 것은 어렵기에 정말로 100% 완벽한 테스트 커버리지를 확보하는 것은 불가능하다.
- 테스트 코드의 버그 가능성: 테스트 코드 자체도 프로덕션 코드와 마찬가지로 버그를 포함할 수 있다.
지금까지 테스트 코드의 이론적인 설명에 대해 자세하게 블로깅을 해봤다. 정리하면서 더 테스트 코드의 중요성과 필요성을 실감할 수 있었다. 코드 퀄리티를 높이기 위해 필수적인 작업이라고 생각되니, 조금 귀찮더라도 나 포함 많은 초보 개발자들이 경험을 해본다면 좋겠다.
다음 블로깅에서는 실제 곰터뷰에서 어떤 종류의 테스트들을 진행하였는지에 대해 얘기해 보겠다.
'개발 > 곰터뷰🐻' 카테고리의 다른 글
단위 테스트(Unit Test)와 통합 테스트(Integration Test) (0) | 2024.01.27 |
---|---|
곰터뷰와 IDrive e2 (3) - AWS S3 SDK for JavaScript를 활용한 IDrive e2 사용법 (0) | 2023.12.13 |
곰터뷰와 IDrive e2 (2) - IDrive e2를 사용한 비디오 저장/조회 로직 (0) | 2023.12.06 |
곰터뷰와 IDrive e2 (1) - 왜 IDrive e2를 사용하게 되었나? (0) | 2023.11.18 |