제가 생각 했던 테스트 코드들에 대해 생각했던 내용을 생각해보고 Kent Beck이 생각하는 테스트 코드에 대해서 찾아보고 정리 해보았습니다. 제가 지금까지 개발을 하면서 겪었던 경험을 토대로 한 저의 테스트 코드 필요성 Kent Beck이 생각하는 테스트 코드의 필요성을 접목하고 다음과 같이 정리해 보았습니다.

Kent Beck이 생각하는 테스트 코드

Kent Beck은 테스트 코드를 검증 도구보다는 두려움을 관리하는 도구라고 말합니다.

Kent Beck이 『Test-Driven Development: By Example』 도서에서 이러한 내용들이 언급되었습니다.

TDD는 애플리케이션 개발에서 두려움을 제거하기 위한 것이고,

테스트가 푸는 문제는 기계의 문제가 아니라, 사람의 두려움 문제라고 말하였습니다.

테스트 코드의 필요성 정리

1. 두려움은 개발자를 망가뜨린다.

두려움은 코드가 아니라 개발자의 행동을 먼저 망친다고 생각합니다.

두려움의 부산물들로 개발자가, 소심해지고, 신경질적이고, 소통을 안하고, 비판을 받아들이지 않고,

즉 여러가지 수반되는 문제점들이 발생합니다.

그래서 Beck이 한 말 중에서 많이 와닫는 점은 두려움이 지루함으로 바뀔 때까지 테스트를 작성하라는 말입니다.

테스트는 막연한 불안을 구체적이고 다룰 수 있는 작업으로 바꿈으로써,

까다롭고 모호한 요구사항 앞에서 테스트를 작성하는 행위가

명확하고, 강제적이고, 구체적인 과제로 전환되는 거라고 생각합니다.

즉, 첫번째 이유는 겁먹지 않고 일하기 위해서라고 생각합니다.

2. 구현에 대한 빠른 피드백 제공

내가 결정하고 설계한 내용을 코드로 옮겼다면 테스트 코드는 그 기능 구현한 것에 대한 피드백을 제공해준다고 생각합니다.

불확실한 사실들과 결과를 테스트 코드로써 증명해주고

즉각적이고 객관적인 근거로 대체된다고 생각합니다.

머리로 생각하고 수동으로 검증하는 시간을 줄여서 빠른 피드백을 통해 구현 검증 받을 수도 있다고 생각합니다.

3. 코드에 대한 변경 보호

내가 이 기능 구현에 대한 테스트 코드를 작성을 했다면 내가 보호해야 할 기능들에 대해 테스트가 보호하고 있기 때문에

리팩터링이나 변경이 이루어 지더라도, 두렵지 않고 확인있게 진행할 수 있게 해준다고 생각합니다.

4. 문서로써 명세화의 효과

코딩 개발은 혼자 진행하는 것이 아니라고 생각합니다.

다른 사람들이 같이 개발을 하면서 내가 구현한 기능에 대한 테스트 코드를 통해 나의 구현 의도와 명세들을 명확히 표현할 수 있게 해준다고 생각합니다.

즉, 같이 일하는 사람들에게 내가 구현한 기능들에 대한 명세의 효과가 있다고 생각합니다.