더북(TheBook)

혹자는 레거시 코드를 ‘작동하는 코드’라고도 하는데, 대다수는 레거시 코드를 ‘테스트가 없는 코드’로 생각한다. 마이클 페더스가 쓴 <레거시 코드 활용 전략>(에이콘출판사, 2018)13에서는 ‘테스트가 없는 코드’를 레거시 코드의 공식 정의로 사용하며, 이 정의를 염두에 두고 이 책을 읽어 보면 도움이 될 것이다.

내가 만든 테스트가 수분 내로 전부 실행되는가?

단 몇 초 빨라진다고 하더라도 테스트는 빨라야 한다. 테스트를 빠르게 실행할 수 없다면 결국 자주 돌려 보지 않게 된다. 주기적으로 해야 하는 일인데도 말이다. 문제는 코드를 변경할 때 최대한 빨리 무언가 잘못되었는지 알고 싶다는 것이다. 실시간으로 알 수 있다면 더 좋다. 각 테스트 사이에 발생하는 시간이 길어질수록 시스템에 더 많은 변경을 가하게 되고, 무언가 잘못되었을 때 버그를 찾아야 할 곳도 더 많아진다.
다시 강조하자면 좋은 테스트는 결국 빨라야 한다.

버튼 하나만 눌러서 내가 작성한 모든 테스트를 실행할 수 있는가?
환경 설정을 잘못하면 모든 테스트가 한 번에 실행되지 않을 수 있다. 도커(Docker)를 사용하여 테스트 환경을 분리하거나 데이터베이스 연결 문자열을 올바르게 설정하는 등 기초 설정을 한 번 확인해 볼 필요가 있다. 아니면 단위 테스트가 완전히 자동화되지 않아 테스트가 제대로 동작하지 않을 수 있다.

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