IT, 코딩/Spring

테스트 코드가 필요한 이유

우크박스_ 2024. 3. 30. 19:05

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

1. 내가 작성한 코드가 잘 돌아가는가?
2. 예상한 결과를 내놓는가?
3. 버그는 없는가?

테스트 코드는 위 3가지 질문에 대한 답변을 내놓는다.

 

한 예를 들어보자.

테스트 코드를 작성하기 이전에 A는 새로 만든 기능에 대한 테스트를 수동으로 진행하였다. 그리고 또 다른 기능이 추가되면서 이번에는 B가 테스트를 수동으로 진행하였다. 또 다른 기능을 추가로 개발하였는데 이번에는 기존의 코드와 겹치는 부분이 발생하게 되었다. 즉 테스트 영역이 겹치게 된 셈이다. 이 때, 기존 코드가 원래 동작하는대로 동작하는지를 다시 검증해야 하고, 새로운 코드에 대한 테스트도 진행해야 한다. 즉 새로운 코드와, 기존의 기능에 대한 검증을 진행해야 한다.

위와 같은 경우에는 서비스가 커질수록 투입되는 테스트 인력이 늘어나야 한다. 하지만 비용적인 측면에서 전혀 효율적이지도 않으며 사람이 수동으로 테스트를 진행하면서 누락되는 케이스가 발생하지 않을 것이라는 보장도 전혀 없다.

즉, 우리가 테스트를 통해 얻고자 하는 것은

1. 빠른 피드백
2. 자동화
3. 안정감
이다.

테스트 코드를 작성하지 않는다면
- 변화가 생기는 매순간마다 발생할 수 있는 모든 Case를 고려해야 한다.
- 변화가 생기는 매순간마다 모든 팀원이 동일한 고민을 해야 한다.
- 빠르게 변화하는 소프트웨어의 안정성을 보장할 수 없다.


테스트 코드가 병목이 된다면
- 프로덕션 코드의 안정성을 제공하기 힘들어진다.
- 테스트 코드 자체가 유지보수하기 어려운, 새로운 짐이 된다.
- 잘못된 검증이 이루어질 가능성이 생긴다.


올바르 테스트 코드는
- 자동화 테스트로 비교적 빠른 시간 안에 버그를 발견할 수 있고, 수동 테스트에 드는 비용을 크게 절약할 수 있다.
- 소프트웨어의 빠른 변화를 지원한다.
- 팀원들의 집단 지성을 팀 차원의 이익으로 승격시킨다.
- 가까이 보면 느리지만, 멀리 보면 가장 빠르다.

반응형

'IT, 코딩 > Spring' 카테고리의 다른 글

Service와 ServiceImpl, 반드 필요한가?  (0) 2024.03.19