단위 테스트
-
단위 테스트 정리 4 - 목과 테스트 취약성책책책 책을 읽읍시다/프로그래밍 2022. 7. 4. 23:18
단위 테스트 스타일 출력 기반(output-based), 상태 기반(state-based), 통신 기반(communication-based)이라는 세 가지 테스트 스타일이 있다. 출력 기반 스타일의 테스트가 가장 품질이 좋고, 상태 기반 테스트는 두 번째로 좋은 선택이며, 통신 기반 테스트는 간헐적으로만 사용해야 한다. 안타깝게도 출력 기반 테스트 스타일은 아무데서나 사용할 수 없으며, 순수 함수 방식으로 작성된 코드에만 적용된다. 이를 위해 함수형 프로그래밍 원칙을 사용해 기반 코드가 함수형 아키텍처를 지향하게끔 재구성해야 한다. 출력 기반 스타일 public class PriceEngine { public decimal CalculateDiscount(params Product[] products) ..
-
단위 테스트 정리 3 - 목과 테스트 취약성책책책 책을 읽읍시다/프로그래밍 2022. 7. 4. 23:17
목과 테스트 취약성 테스트 대역은 모든 유형의 비운영용 가짜 의존성을 설명하는 포괄적인 용어다. 주 용도는 테스트를 편리하게 하는 것이고, 테스트 대상 시스템으로 실제 의존성 대신 전달되므로 설정이나 유지 보수가 어려울 수 있다. 테스트 대역은 더미, 스텁, 스파이, 목 페이크 총 5가지가 있고, 크게 목과 스텁의 두 가지 유형으로 나눌 수 있다. 목은 외부로 나가는 상호 작용을 모방하고 검사하는 데 도움이 된다. 이러한 상호 작용은 SUT가 상태를 변경하기 위한 의존성을 호출하는 것에 해당한다. 스텁은 내부로 들어오는 상호 작용을 모방하는 데 도움이 된다. 이러한 상호 작용은 SUT가 입력 데이터를 얻기 위한 의존성을 호출하는 것에 해당한다. 목은 SUT와 관련 의존성 간의 상호 작용을 모방하고 검사하..
-
단위 테스트 정리 2 - 좋은 단위 테스트의 4대 요소책책책 책을 읽읍시다/프로그래밍 2022. 7. 4. 23:16
좋은 단위 테스트의 4대 요소 회귀 방지, 리팩터링 내성, 빠른 피드백, 유지 보수성 회귀 방지 회귀 발생 가능성이 높은 코드 측정 지표 테스트 중에 실행되는 코드의 양 코드 복잡도 코드의 도메인 유의성 단순한 코드를 테스트하는 것은 가치가 거의 없다. 이러한 코드는 짧고, 비즈니스 로직을 많이 담고 있지도 않다. 단순한 코드를 다루는 테스트는 실수할 여지가 많지 않기 때문에 회귀 오류가 많이 생기지 않는다. 우리가 작성하지 않은 코드(라이브러리, 프레임워크 그리고 프로젝트에서 쓰는 외부 시스템)도 중요하다. 이 코드는 작성한 코드만큼이나 소프트웨어 작동에 영향을 미친다. 최상의 보호를 위해서는 테스트가 해당 라이브러리, 프레임워크, 외부 시스템을 테스트 범주에 포함시켜서 소프트웨어가 이러한 의존성에 대..
-
단위 테스트 정리 1책책책 책을 읽읍시다/프로그래밍 2022. 6. 21. 22:55
들어가며 C# 코드 기반으로 테스트 스위트(test suite) 구축에 대해 설명한 책으로 저자는 블라디미르 코리코프(Vladimir Khorikov)다. 자바와 비슷한 컨셉의 C#으로 예제가 짜여져 있어 자바 개발자인 내가 코드를 읽기에 부담없었고, 한편으론 "대학교 다닐 때 배우던 C#이 아니구나, 자바에서 없는 기능(인스턴스 변수에 get; set;만 붙여도 getter/setter가 생성된다)들도 지원하네"하며 재미있게 읽었다. 회사 내부에 공유하기 위해 정리했는데, 저작권은 나에게 있으므로 재사용한다^^ 이번 글에서는 아래 차례에서 1부 '더 큰 그림'만 다뤄보자. 차례 더 큰 그림 단위 테스트의 목표 단위 테스트란 무엇인가 단위 테스트 구조 개발자에게 도움이 되는 테스트 만들기 좋은 단위 테스..