테스트15 6장 단위 테스트 스타일 – 함수형 아키텍처와 출력 기반 테스트로의 전환 단위테스트 (블라디미르 코리코프) 아래 내용에서 이어지는 글입니다. https://jonghoonpark.tistory.com/43 https://jonghoonpark.tistory.com/44 https://jonghoonpark.tistory.com/45 두 가지 리팩터링 단계를 거친다. - 프로세스 외부 의존성에서 목으로 변경 - 목에서 함수형 아키텍처로 변경 4.1 감사 시스템 소개 샘플로 사용할 프로젝트는 조직의 모든 방문자를 추적하는 감사 시스템이다. 텍스트 파일을 기반 저장소로 사용한다. 시스템은 가장 최근 파일의 마지막 줄에 방문자의 이름과 방문 시간을 추가한다. 파일당 최대 항목 수에 도달하면 인덱스를 증가시켜 새 파일을 작성한다. 초기 구현은 다음과 같다. 위 코드는 다음과 같은 작업.. 2023. 7. 15. 6장 단위 테스트 스타일 - 함수형 아키텍처 단위테스트 (블라디미르 코리코프) 아래 내용에서 이어지는 글입니다. https://jonghoonpark.tistory.com/43 https://jonghoonpark.tistory.com/44 3. 함수형 아키텍처 이해 함수형 아키텍처의 기본 원리에 대해서 설명한다. 3.1 함수형 프로그래밍이란 함수형 프로그래밍은 수학적 함수(mathematical function, 순수 함수 라고도 함)를 사용한 프로그래밍이다. [Note] 순수 함수는 다음 속성을 갖는 함수입니다. - 함수 반환 값은 동일한 인수에 대해 동일합니다 - 함수에는 사이드 이펙트가 없습니다 (로컬 정적 변수, 비로컬 변수, 가변 참조 인수 또는 입력/출력 스트림의 변형 없음). 출처 : https://en.wikipedia.org/wi.. 2023. 7. 13. 6장 단위 테스트 스타일 - 스타일 비교 단위테스트 (블라디미르 코리코프) 아래 내용에서 이어지는 글입니다. https://jonghoonpark.tistory.com/43 2. 단위 테스트 스타일 비교 좋은 단위 테스트의 4대 요소를 중심으로 각각의 단위 테스트 스타일 비교 [Note] 좋은 단위 테스트의 4대 요소 는 다음과 같다. - 회귀 방지 - 리팩터링 내성 - 빠른 피드백 - 유지 보수성 2.1 회귀 방지와 피드백 속도 지표로 스타일 비교하기 회귀 방지 지표는 특정 스타일에 따라 달라지지 않는다. 회귀 방지 지표는 다음 세 가지 특성으로 결정된다. - 테스트 중에 실행되는 코드의 양 - 코드 복잡도 - 도메인 유의성 어떤 스타일도 이 부분에서 도움이 되지는 않는다. 따라서 크게 연관이 없다. 다만 통신 기반 스타일의 경우에는 남용하면.. 2023. 7. 12. 6장 단위 테스트 스타일 단위테스트 (블라디미르 코리코프) 단위테스트에는 출력 기반, 상태 기반, 통신 기반이라는 세 가지 테스트 스타일이 있다. 출력 기반 스타일의 테스트가 가장 품질이 좋고, 상태 기반 테스트는 두 번째로 좋은 선택이며, 통신 기반 테스트는 간헐적으로만 사용해야 한다. 안타깝게도 출력 기반 테스트 스타일은 아무데서나 사용할 수 없으며, 순수 함수 방식으로 작성된 코드에만 적용된다. 그러나 걱정할 필요는 없다. 출력 기반 스타일로 변환하는 데 도움이 되는 기법이 있다. 이를 위해 함수형 프로그래밍 원칙을 사용해 기반 코드가 함수형 아키텍처를 지향하게끔 재구성해야 한다. [Note] 순수 함수는 다음 속성을 갖는 함수입니다. - 함수 반환 값은 동일한 인수에 대해 동일합니다 - 함수에는 사이드 이펙트가 없습니다 .. 2023. 7. 11. 5장 목과 테스트 취약성 (4) 3 목과 테스트 취약성과의 관계 이번 절에서 알아 볼 것 - 육각형 아키텍처 (hexagonal architecture) - 내부 통신과 외부 통신의 차이점 - 목과 테스트 취약성 관의 관계 3.1 육각형 아키텍처 정의 육각형 아키텍처는 앨리스터 코오번(Alistair Cockburn) 에 의해 처음 소개되었다. 전형적인 애플리케이션은 도메인(비지니스 로직)과 애플리케이션 서비스라는 두 계층으로 구성된다. 도메인 계층은 애플리케이션의 중심부이기 때문에 도표의 중앙에 위치한다. 도메인 계층은 필수 기능으로 비즈니스 로직이 포함되어 있다. 애플리케이션 서비스 계층은 도메인 계층 위에 있으며 외부 환경과의 통신을 조정한다. 애플리케이션의 API에 대한 모든 요청이 먼저 애플리케이션 서비스 계층에 도달한다. 애.. 2023. 7. 5. 테스트용 크롬 (Chrome for Testing) 원문 Chrome for Testing: reliable downloads for browser automation https://developer.chrome.com/blog/chrome-for-testing/ 23년 6월 12일 글 정리 크롬은 현시점 기준 사용자 점유율이 가장 높은 브라우저이다. 브라우저 테스트를 하면서 번거로웠던 점 중 하나는 브라우저 테스트 환경을 맞춰줘야 한다는 것인데 크롬의 경우에는 자동 업데이트를 권장한다. 이는 글에도 적혀있지만 사용자에게는 좋지만 테스트 개발자에게는 고통이다. 특히 크롬의 경우에는 특정 버전의 Chrome 바이너리 / 이에 맞는 Chrome Driver 를 찾기 어려운 부분이 있었는데 Google 에서는 의도적으로 사용자로 하여금 가능한 최신 버전으로 업.. 2023. 7. 2. 이전 1 2 3 다음