본문 바로가기

개발관련 서적 정리/Unit Testing8

4. 좋은 단위 테스트의 4대 요소 4.1 좋은 단위 테스트의 4대 요소 자세히 살펴보기 회귀 방지 리팩터링 내성 빠른 피드백 유지 보수성4.1.1 첫 번째 요소: 회귀방지 회귀는 소프트웨어 버그다. 코드를 수정한 후 (일반적으로 새 기능을 출시한 후) 기능이 의도한 대로 작동하지 않는 경우다. 회귀 방지 지표에 대한 테스트 점수가 얼마나 잘 나오는지 평가하려면 다음 사항을 고려해야한다. 테스트 중에 실행되는 코드의양 코드 복잡도 코드의 도메인 유의성 최상의 보호를 위해서는 테스트가 해당 라이브러리, 프레임워크, 외부 시스템을 테스트 범주에 포함시켜서 소프트웨어가 이러한 의존성에 대해 검증이 올바른지 확인한다. 4.1.2 두 번째 요소: 리팩터링 내성 리팩터링 내성은 테스트를 '빨간색(실패)'으로 바꾸지 않고 기본 애플리케이.. 2023. 2. 5.
3. 단위 테스트 구조 3.1 단위 테스트를 구성하는 방법 AAA (Given - When - Then) 패턴 사용 준비 구절에서는 테스트 대상 시스템(SUT, System Under Test)과 해당 의존성을 원하는 상태로 만든다. 실행 구절에서는 SUT에서 메서드를 호출하고 준비된 의존성을 전달하며(출력이 있으면) 출력 값을 캡처한다. 검증 구절에서는 결과를 검증한다. 결과는 반환 값이나 SUT와 협력자의 최종 상태, SUT가 협력자에 호출한 메서드 등으로 표시될 수 있다.각 구절은 얼마나 커야 하는가? 준비 구절이 크다면 같은 테스트 클래스 내 비공개 메서드 또는 별도의 팩토리 클래스로 도출하는 것이 좋다. 실행 궂걸이 한 줄 이상인 경우를 경계하라검증 구절에는 검증문이 얼마나 있어야 하는가 검증 구절이 너무 커지는 것을.. 2023. 2. 5.
2. 단위 테스트란 무엇인가 2.1 '단위 테스트'의 정의 런던파 작은 코드 조각을 검증 빠르게 수행 격리된 방식으로 처리고전파 단일 동작 단위를 검증 빠르게 수행 다른 테스트와 별도로 처리 2.2 단위 테스트의 고전파와 런던파 세번째 속성인 격리 문제의 차이가 고전파와 런던파를 구분할 수 있게 해주는 근원 격리 주체 단위의 크기 테스트 대역 사용 대상 런던파 단위 단일 클래스 불변 의존성 외 모든 의존성 고전파 단위 테스트 단일 크랠스 또는 클래스 세트 공유 의존성 2.3 고전파와 런던파의 비교 2.3.1 런던파의 특징 입자성이 좋다. 테스트가 세밀해서 한 번에 한 클래스만 확인한다. 서로 연결된 클래스의 그래프가 커져도 테스트하기 쉽다. 모든 협력자는 테스트 대역으로 대체되기 때문에 테스트 작성 시 걱정할 필요가 없다. 테스트가.. 2023. 2. 5.
1. 단위 테스트의 목표 단위 테스트의 목표 단위 테스트의 목표는 소프트웨어 프로젝트의 지속 가능한 성장을 가능하게 하는것이다. 지속성과 확장성이 핵심이며, 이를 통해 장기적으로 개발 속도를 유지할 수 있다. 코드를 단위 테스트하기 어렵다면 코드 개선이 반드시 필요하다는것을 의미한다. 테스트는 안전망 역할을 하며, 대부분의 회귀(regression)에 대한 보험을 제공한느 도구라 할 수 있다. 회귀는 특정 사건(일반적으로 코드 수정) 후에 기능이 의도한 대로 작동하지 않는 경우다. 소프트웨어 버그와 회귀라는 용어는 동의어이며 바꿔서 사용할 수 있다. 테스트의 가치와 유지 비용을 모두 고려해야 한다. 기반 코드를 리팩터링할 때 테스트도 리팩터링하라. 각 코드 변경 시 테스트를 실행하라. 테스트가 잘못된 경고를 발생시킬 경우 처리하.. 2023. 2. 5.