단위 테스트 1장 정리
단위 테스트 1장 정리 내용입니다.
단위 테스트에 시간을 투자할 때는 항상 최대한 이득을 얻도록 노력해야하며, 테스트에 드는 노력을 가능한 줄이고 그에 따르는 이득을 최대화해야 한다.
이 책에서 다루는 내용은 비용 편익 분석 방법을 배우고 특정 상황에서 적절한 테스트 기술을 적용할 수 있다. 또한 공통적인 안티 패턴을 피하는 방법도 배운다.
단위 테스트의 목표
단위 테스트의 목표는 무엇인가? 프로젝트의 지속 가능한 성장을 가능하게 하는 것이다.
테스트는 안전망 역할을 하며, 대부분의 회귀에 대한 보험을 제공하는 도구라 할 수 있다. 새로운 기능을 도입하거나 새로운 요구 사항에 더 잘 맞게 리팩터링한 후에도 기존 기능이 잘 작동하는지 확인하는데 도움이 된다.
회귀란? 특정 사건(일반적으로 코드 수정) 후에 기능이 의도한 대로 작동하지 않는 경우다. 소프트웨어 버그와 회귀라는 용어는 동의어이며 바꿔서 사용할 수 있다.
커버리지 지표에 관한 문제점
외부 라이브러리의 코드 경로를 고려할 수 없음
public static int Parse(string input)
{
return int.Parse(input);
}
public void Test()
{
int result = Parse("5");
Assert.Equal(5, result);
}
분기 커버리지 지표는 100%로 표시되며, 테스트는 메서드 결과의 모든 구성 요소를 검증한다. 하지만 .NET 프레임워크의 int.Parse 메서드가 수행하는 코드 경로는 고려하지 않는다.
성공적인 테스트 스위트(테스트 케이스들의 집합) 특성
개발 주기에 통합돼 있다
코드베이스에서 가장 중요한 부분만을 대상으로 한다
최소한의 유지비로 최대의 가치를 끌어낸다
개발 주기에 통합돼 있음
모든 테스트는 개발 주기에 통합돼야 한다.
코드베이스에서 가장 중요한 부분만을 대상으로 함
시스템의 가장 중요한 부분(비즈니스 로직 - 도메인 모델)에 단위 테스트 노력을 기울이고, 다른 부분은 간략하게 또는 간접적으로 검증하는 것이 좋다.
다른 부분은 세 가지로 나눌 수 있다.
인프라 코드
데이터베이스나 서드파티 시스템과 같은 외부 서비스 및 종속성
모든 것을 하나로 묶는 코드
최소 유지비로 최대 가치를 끌어냄
단위 테스트에서 가장 어려운 부분은 최소 유지비로 최대 가치를 달성하는 것이다.
이는 이 책에서 말하려는 핵심이다.
가치가 유지비를 상회하는 테스트만 스위트(집합)에 유지하는 것이 중요하다.
이 책을 통해 배우는 것
테스트를 분석하는 데 사용할 수 있는 기준틀
기존 단위 테스트 기술과 실천
프로덕션 코드와 관련 테스트 스위트 리팩토링 방법
단위 테스트를 다양한 스타일로 적용하는 방법
통합 테스트
단위 테스트 안티 패턴

![[Android] Compose 수명 주기, 부수효과](https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/jpkfc5_d-DI/upload/afc85e4ef91c4d68e8e6b903c93f3f39.jpeg)
![[Android] rememberUpdatedState 완벽 이해](https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/ktpymCAIvGc/upload/18f6ae11634822646df7c0a9b1e62e0f.jpeg)