테스트는 우리의 관심사를 확실히 드러내야 한다. 그러려면 부가적인 것들은 가려서 안 보이게 해야 한다. 코드가 읽기 어렵다면 코드의 의도를 파악하기 어려워진다. 테스트 또한 우리가 유지 보수해야 하는 또 다른 코드이기 때문에 신중하게 작성해야 하고 지속적으로 리팩토링을 해야 한다.
테스트를 작성할 때는 동작에 집중해야 하지 구현을 테스트하면 안 된다. 변화에 더 집중하여 어떤 동작을 왜 하고 했다면 어떤 일이 벌어지는가에 대해 더 집중해야 한다. 그래서 결국 가장 중요한 것은 의도다. 그런데 만약 내부 행위를 테스트하려는 충동이 든다면 설계에 문제가 있는 것이다. 나도 이러한 경험이 있다. 테스트 코드와 실제 테스트하려는 코드와 거의 일치했던 적이 있다. 이런 것보다는 변화에 집중하여 해당 코드를 실행했을 때 어떤 변화가 일어날지를 테스트하는 게 더 좋다.
우리가 작성한 코드는 동작하는, 실행할 수 있는 문서 역할을 한다.
좋은 테스트는
무엇을 테스트할 것인가?
목 객체를 사용하여 테스트하기 쉽게 만들고 의존성을 격리시키는 줄만 알았는데 입력한 값이 모두 정상인지를 여부를 검증하는 일도 한다는 것을 처음 알게 되었다.
이 모든 것들이 나만 실천하기보다는 다른 팀원들과 같이 실천하는 게 가장 좋은 것 같다. 팀원들이 이해하지 못한다면 더 안 좋은 코드가 생길 수 있을 것 같다. 짝 프로그래밍을 통해 다른 사람들과 지식을 나누고 빠른 피드백을 통해 더 좋은 코드를 만드는 것이 사후 처리보다 훨씬 시간과 비용이 적게 드는 것 같다.
자바스크립트로 직접 만들면서 배우는 - 자료구조와 알고리즘 강의 바로 가기
실습으로 마스터하는 OAuth 2.0: 기본부터 보안 위험까지 - OAuth 2.0 강의 바로 가기
기계인간 이종립, 소프트웨어 개발의 지혜 - Git 강의 바로 가기
코드숨에서 매주 스터디를 진행하고 있습니다. 메일을 등록하시면 새로운 스터디가 시작될 때 알려드릴게요!