더북(TheBook)

2.1.2 테스트성을 감안하여 설계하기

테스트를 먼저 작성하란 건 코드의 테스트성(testability)을 차후에 두고 볼 문제가 아니라 우선적인 주요 관심사로 생각하는 것이다. 각계각층의 개발자와 함께 일했던 경험에 비추어보면 어떤 코드의 테스트 용이성과 그 코드의 테스트가 얼마나 잘 이루어졌는지는 직접적인 상관 관계가 있다. 또한, 테스트하기 쉬운 코드가 유지 보수성과 확장성이 월등히 우수하다는 사실을 알았다. 1장에서 일렀듯이 SOLID 개발 원칙을 준수하면 코드를 테스트할 때 도움이 많이 된다. 결국 테스트성을 설계 목표로 정하면 SOLID한 코드를 작성할 수 있다.

예를 들어 createReservation 함수로 생성한 모든 예약 데이터는 웹 서비스를 거쳐 데이터베이스에 저장해야 한다고 하자.

TDD 없이 그냥 개발하면 비동기 자바스크립트와 XML(AJAX)로 예약 데이터를 웹 서비스 종단점으로 전송하는 jQuery.ajax(...) 호출 코드를 createReservation에 보태면 그만이다. 하지만 단순한 함수 호출 하나가 더해지면서 작고 사소한 createReservation 함수의 할 일이 늘었고 단위 테스트를 하기가 제법 힘들어졌다.

TIP

웹 서비스 연동 테스트가 그리 쉬운 일은 아니지만, 올바른 코드베이스를 구축하는 데는 필요충분조건이다.

 

승현은 이미 jQuery.ajax(...) 호출부를 넣고 createReservation 함수 기능 몇 가지를 테스트한 터라 데이터베이스에 예약 데이터가 잘 쌓이는지 수동으로 한 차례 테스트하려 할 것이다. 기능 하나하나에 단위 테스트를 붙이는 건 너무 힘드니 빨리 다음 업무로 넘어가고픈 마음이 굴뚝같다. 이런 경우를 숱하게 봐왔고, 솔직히 우리 자신도 여러 번 그랬다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.