카테고리 없음
Unit Testing 1장
eumjo_o
2023. 2. 27. 23:21
1장 단위 테스트의 목표
1.2 단위 테스트의 목표
💡 단위 테스트와 코드 설계의 관계
- 코드를 단위 테스트 하기 어렵다면 코드 개선이 필요하다는 것을 의미한다.
- 강결합(tight coupling) 제품 코드가 서로 충분히 분리되지 않아서 따로 테스트하기 어려움을 뜻함
- 코드 베이스(소스 코드 전체 집합)를 쉽게 단위 테스트할 수 있다고 해도 반드시 코드 품질이 좋은 것을 의미하지는 않는다.
- 낮은결합도를 보여도 좋은 프로젝트는 아닐 수 있음 </aside>
단위테스트의 목표
스프트웨어 프로젝트의 지속 가능한 성장을 가능하게 하는 것
단위테스트의 필요성
- 테스트가 없는 프로젝트의 경우 시작은 유리하지만, 이내 진척이 없을 정도로 느려진다.
- 지속적인 정리와 리팩터링 등 적절한 관리 없이 방치할 시, 시스템이 더 복잡해지고 무질서해진다. (도미노처럼 버그와 고장을 양산한다)
- 소프트웨어 엔트로피 (software entropy) - 개발 속도가 빠르게 감소하는 현상
- 가장 안좋은 것은 안정화가 어렵다는 점이고, 테스트는 안전망 역할을 하며 회귀(regression)에 대한 보험을 제공하는 도구이다.
- 회귀(regression) - 특정 사건(일반적으로 코드 수정) 후에 기능이 의도한 대로 작동하지 않는 경우이다. 소프트웨어 버그와 회귀라는 용어는 동의어이며 바꿔서 사용할 수 있다.
- 새로운 기능을 도입하거나 새로운 요구사항에 더 잘 맞게 리팩터링한 후 기존 기능이 잘 작동하는지도 확인하는데 도움이 된다.
단위테스트시 비용
- 초반에 (상당한) 노력이 필요하다. 그러나 프로젝트 후반을 생각하면 장기적으로 그 비용을 매울 수 있다.
- 코드베이스를 지속적으로 검증하는 테스트 없이는 소프트웨어 개발이 쉽게 확장되지 않는다.
따라서, 단위 테스트를 사용하면 지속성과 확장성을 통해서 장기적으로 개발 속도를 유지할 수 있다.