본문 바로가기

4

5장 목과 테스트 취약성 (4) 3 목과 테스트 취약성과의 관계 이번 절에서 알아 볼 것 - 육각형 아키텍처 (hexagonal architecture) - 내부 통신과 외부 통신의 차이점 - 목과 테스트 취약성 관의 관계 3.1 육각형 아키텍처 정의 육각형 아키텍처는 앨리스터 코오번(Alistair Cockburn) 에 의해 처음 소개되었다. 전형적인 애플리케이션은 도메인(비지니스 로직)과 애플리케이션 서비스라는 두 계층으로 구성된다. 도메인 계층은 애플리케이션의 중심부이기 때문에 도표의 중앙에 위치한다. 도메인 계층은 필수 기능으로 비즈니스 로직이 포함되어 있다. 애플리케이션 서비스 계층은 도메인 계층 위에 있으며 외부 환경과의 통신을 조정한다. 애플리케이션의 API에 대한 모든 요청이 먼저 애플리케이션 서비스 계층에 도달한다. 애.. 2023. 7. 5.
5장 목과 테스트 취약성 (3) 단위테스트 (블라디미르 코리코프) 5장 목과 테스트 취약성 (1) 5장 목과 테스트 취약성 (2) 에서 이어지는 글입니다. 2. 식별할 수 있는 동작과 구현 세부 사항 테스트에 거짓 양성이 있는 (리팩터링 내성에 실패하는) 주요 이유는 코드의 구현 세부 사항과 결합돼 있기 때문이다. 이러한 강 결합을 피하기 위해서는 최종 결과(식별할 수 있는 동작)를 검증하고 구현 세부 사항과 테스트를 가능한 한 떨어뜨려야 한다. 테스트는 “어떻게”가 아니라 “무엇”에 중점을 둬야한다. 2.1 식별할 수 있는 동작은 공개 API와 다르다 모든 제품 코드는 2차원으로 분류할 수 있다. - 공개 API 또는 비공개 API - 식별할 수 있는 동작 또는 구현 세부 사항 코드의 공개성은 private, public, inter.. 2023. 5. 12.
5장 목과 테스트 취약성 (2) 단위테스트 (블라디미르 코리코프) 5장 목과 테스트 취약성 (1) 에서 이어지는 글입니다. 1.2 도구로서의 목과 테스트 대역으로서의 목 Mock은 두가지 의미가 있다. 목 라이브러리(mocking library)의 클래스도 목으로 부르며 테스트 대역으로서의 목 도 있다. 1.3 스텁으로 상호 작용을 검증하지 말라 테스트에서 거짓 양성을 피하고 리팩터링 내성을 향상시키는 방법은 구현 세부 사항이 아니라 최종 결과(이상적으로 비개발자들에게 의미가 있어야 함)를 검증하는 것 뿐이다. 최종결과가 아닌 사항을 검증하는 것을 과잉 명세(overspecification)이라고 부른다. 1.4 목과 스텁 함께 쓰기 같이 사용할 수 있다. 1.5 목과 스텁은 명령과 조회에 어떻게 관련돼 있는가? 명령 조회 분리 (CQ.. 2023. 5. 12.
5장 목과 테스트 취약성 (1) 단위테스트 (블라디미르 코리코프) 0. 개요 런던파 : 테스트 대상 코드 조각을 서로 분리하고 불변 의존성을 제외한 모든 의존성에 테스트 대역을 써서 격리하자. 고전파 : 단위 테스트를 분리해서 병렬로 실행할 수 있게 하자. 테스트 간에 공유하는 의존성에 대해서만 테스트 대역을 사용하자. 테스트 대역 모든 유형의 비운영 가짜 의존성을 설명하는 포괄적인 단어 * 영화의 스턴트 대역 이라는 개념에서 비롯되었음. double에 대역 이라는 뜻이 있음. 목(mock) 테스트 대상 시스템(SUT)과 그 협력자 사이의 상호 작용을 검사할 수 있는 테스트 대역 목은 리팩토링 내성이 부족한 테스트를 초래할 수도 있지만 목을 사용하는게 바람직한 경우도 있다. 목과 테스트 취약성 사이에는 깊고 불가피한 관련이 있다. 어떻.. 2023. 5. 11.