많은 si 개발자들은 테스트 코드를 작성하지 않는다.
테스트 코드의 필요성을 느끼지 못하기 때문이다. 서버 로직과 클라이언트 로직을 전부 구현하는 입장이다보니, 구지 서버단만 떼놓고 테스트를 해야 할 이유가 없다고 생각한다.
테스트 코드 작성할 시간에 화면을 만들지 않겠니.
는 많은 si 개발자들이 흔히들 하는 생각이다. 그렇다보니 개발 환경을 구성할 때를 제외하고는 거의 테스트 코드를 작성하지 않는게 현실이다.
물론 모든 si 환경이 그렇지는 않겠지만 상당수는 화면에서의 사용자 테스트만 갖는다.
- 서버 단에서만 2개의 api와 그 외에 여러 개의 모듈이 사용되었다.
- 클라이언트 단에서도 2개의 js api가 사용되었다.
- 서버 로직도, 클라이언트 로직도 둘 다 구현이 상당히 복잡하다. 구현하려면 각각 시간이 필요하다.
이런 경우에는 어떻게 해야 할까?
프로젝트를 하다보면 흔히 마주하는 상황이다. 게시판 같은 간단한 CRUD만으로 구성된 프로젝트는 없으니 말이다. 특히 결제 기능이나 회원 기능 등에서 흔히 겪을 수 있는 문제다.
서버 단과 클라이언트 단의 복잡한 로직을 동시에 처리하는 것은 불가능하다. 물리적으로 불가능하다. 더군다나 결제 기능 같은 크리티컬한 부분은 고려해야 할 사항들이 상당히 많다. 그렇기 때문에, 1층이 제대로 지어졌는지 확인 후에 2층을 올리듯, 단위 테스트 등을 실시하여 단계 별로 제대로 구현되었는지 짚고 넘어가야 한다. 거듭 말씀 드리지만 한 번에 여러 단계를 처리할 수는 없다.
단순히 서버와 클라이언트를 나누는 것뿐만 아니라, 영속 계층과 서비스 계층. 모듈과 MVC 계층을 나눠서도 생각해 볼 수 있다.
- 서버 단은 구현 한지 오래지만 모종의 이유로 클라이언트 단이 구현되지 않았다. (디자인이 미완성이던, 프론트 개발자가 구현을 못했던.)
- 내가 구현해야 할 파트는 끝났지만 다른 모듈이 아직 구현되지 않았다.
- 모종의 이유로 기능이 미완성된 상태로 당분간 놔두다가 나중에 다시 작업해야 하는 경우.
이런 경우에는 어떻게 해야 할까
테스트 코드는 특히 협업에서도 빛을 발한다. 과거에 작성한 코드가 언제, 어떤 상황에서, 어떻게 작동하는지 일일이 다 기억하고 있을 수는 없다.
그렇다고, 책임 소재를 따지기 위해 테스트 코드를 작성하는 것은 아니다. 본인이 작성한 코드가 어떤 결과를 내는지 동료들이 확인해야 하는 경우도 적지 않게 생긴다. 이 때 테스트 코드가 있다면 누구든 쉽게 코드의 작동을 확인해볼 수 있다.
본인을 위해서, 그리고 동료를 위해서 테스트 코드는 꼭 작성하자.
(하)편으로 이어집니다...