
1. 리팩터링할 코드 식별하기기반 코드를 리팩터링하지 않고서는 테스트 스위트를 크게 새선할 수 없다. 이 절에서는 리팩터링의 방향을 설명하고자 코드를 네 가지 유형으로 분류하는 방법을 소개한다.1.1 코드의 네 가지 유형모든 제품 코드는 2차원으로 분류할 수 있다.복잡도 또는 도메인 유의성협력자 수코드 복잡도는 코드 내 의사 결정(분기) 지정 수로 정의한다. 이 숫자가 클수록 복잡도는 더 높아진다. 도메인 유의성은 코드가 프로젝트의 문제 도메인에 대해 얼마나 의미 있는지를 나타낸다. 일반적으로 도메인 계층의 모든 코드는 최종 사용자의 목표와 직접적인 연관성이 있으므로 도메인 유의성이 높다. 반면에 유틸리티 코드는 그런 연관성이 없다. 복잡한 코드와 도메인 유의성을 갖는 코드가 단위 테스트에서 가장 이롭다..

1. 단위 테스트 현황단위 테스트를 적용해야 하는지는 더 이상 논쟁거리가 아니다. 그냥 쓰고 버리는 프로젝트가 아니면, 단위 테스트는 늘 적용해야 한다.논쟁은 단위 테스트를 작성해야하는가? 에서 좋은 단위 테스트를 작성하는 것은 어떤 의미인가로 바뀜2. 단위 테스트의 목표코드베이스(code base)에 대해 단위 테스트 작성이 필요하면 일반적으로 더 나은 설계로 이어진다. 하지만 단위 테스트의 주목표는 아니다.그럼 주 목표는?⇒ 소프트웨어 프로젝트의 지속 가능한 성장을 가능하게 하는 것테스트가 없는 프로젝트의 경우 시작은 유리하지만, 이내 진척이 없을 정도로 느려진다.테스트가 없다면?코드베이스에서 무언가를 변경할 때마다 무질서도(엔트로피)는 증가한다. 하나의 버그를 수정하면 더 많은 버그를 양산하고, 소..