단위 테스트의 희망편, 절망편과 성공적인 단위 테스트를 위한 지침
단위 테스트 : 희망편, 절망편 단위 테스트의 목표는 소프트웨어 프로젝트의 지속 가능한 성장이다. 단위 테스트의 적용 여부는 논쟁거리가 아니며 늘 적용해야한다. 그러나, 모든 테스트 스위트가 프로젝트에 좋은 결과만 가져오는 것은 아니다. 희망편 테스트를 포함한 프로젝트는 초반에 작업 속도가 테스트가 없는 프로젝트보다 느리지만 시스템이 복잡해질 수록 소프트웨어 엔트로피 에서 이득을 본다. 소프트웨어 엔트로피는 시스템 내 무질서도를 말하는데, 테스트가 없는 프로젝트에서 소프트웨어 엔트로피는 저품질의 코드 형태로 나타나고 코드베이스를 신뢰할 수 없을 지경이 되면 그 소프트웨어는 안정적이라고 보기 어렵다. 코드베이스를 지속적으로 검증하는 테스트를 통해 회귀 현상(코드 수정 후 나타나는 버그)에 대한 안전망 역할을 하는 보험을 얻었다. 보험을 얻었으니 프로젝트 후반에도 개발 속도를 유지하며 소프트웨어를 확장할 수 있다. 부수 효과로 더 나은 설계 를 얻을 수도 있다. 예를 들어, 코드가 서로 충분히 분리되어있지 않은 강결합(tight-coupling)의 저품질 코드를 단위 테스트를 쉽게 하기 위해 리팩토링 하는 케이스가 있다. -> 그러나 낮은 결합도라고해서 프로젝트의 코드 품질이 좋다는 보장은 없다. 절망편 테스트가 포함된 프로젝트와 없는 프로젝트에 대한 차이는 얘기했으니 잘못된 테스트가 포함된 프로젝트에 대해서 얘기한다. 프로젝트 내에서 잘못된 테스트 스위트가 지속되면 테스트를 해도 원하는 결과를 얻지 못하는 경우와 상황을 악화시키는 경우가 발생한다. 테스트가 잘못 작성된 프로젝트는 결국 침체 단계 에 빠진다. 테스트 개수는 상당히 많지만 테스트 자체가 유지보수 되지 않고 버그를 유발한다면 잘못된 경고 가 발생하고 회귀 오류에 도움이 되지 않는 결과 를 보여준다. 테스트는 프로젝트에 도움이 돼야하는데 의미 없는 테스트만 양산한다면 , 소프트웨어의 잠재적인 버그에 노출되는 부분을 넓히는 것 에 불과하다. 고품질 테스트에만 집중해야하며, 고...