본문 바로가기

전체 글78

7장 가치 있는 단위 테스트를 위한 리팩터링 - 리팩터링할 코드 식별하기 단위테스트 (블라디미르 코리코프) 7장에서 다루는 내용 - 네 가지 코드 유형 알아보기 - 험블 객체 패턴 이해 - 가치 있는 테스트 작성 1. 리팩터링할 코드 식별하기 기반 코드를 리팩토링 하지 않고서는 테스트 스위트를 크게 개선할 수 없다. * 테스트 스위트(test suite) 소프트웨어 프로그램을 테스트하여 특정 동작 집합이 있음을 보여주기 위한 테스트 케이스 모음 a collection of test cases that are intended to be used to test a software program to show that it has some specified set of behaviors. 테스트 코드와 제품 코드는 본질적으로 관련돼 있기 때문에 다른 방도는 없다. 1.1 코드의 네.. 2023. 7. 18.
6장 단위 테스트 스타일 – 함수형 아키텍처의 단점 이해 + 6장 요약 단위테스트 (블라디미르 코리코프) 아래 내용에서 이어지는 글입니다. https://jonghoonpark.tistory.com/43 https://jonghoonpark.tistory.com/44 https://jonghoonpark.tistory.com/45 https://jonghoonpark.tistory.com/47 안타깝게도 항상 함수형 아키텍처를 이룰 수 있는 것은 아니다. 또한 함수형 아키텍처라고해도, 코드베이스가 커지고 성능에 영향을 미치면서 유지 보수성의 이점이 상쇄된다. 5.1 함수형 아키텍처 적용 가능성 감사 시스템은 결정을 내리기 전에 입력을 모두 미리 수집할 수 있으므로 함수형 아키텍처가 잘 동작했다. 그러나 종종 실행 흐름이 간단하지 않을 수 있다. 의사 결정 절차의 중간 결과에.. 2023. 7. 15.
6장 단위 테스트 스타일 – 함수형 아키텍처와 출력 기반 테스트로의 전환 단위테스트 (블라디미르 코리코프) 아래 내용에서 이어지는 글입니다. https://jonghoonpark.tistory.com/43 https://jonghoonpark.tistory.com/44 https://jonghoonpark.tistory.com/45 두 가지 리팩터링 단계를 거친다. - 프로세스 외부 의존성에서 목으로 변경 - 목에서 함수형 아키텍처로 변경 4.1 감사 시스템 소개 샘플로 사용할 프로젝트는 조직의 모든 방문자를 추적하는 감사 시스템이다. 텍스트 파일을 기반 저장소로 사용한다. 시스템은 가장 최근 파일의 마지막 줄에 방문자의 이름과 방문 시간을 추가한다. 파일당 최대 항목 수에 도달하면 인덱스를 증가시켜 새 파일을 작성한다. 초기 구현은 다음과 같다. 위 코드는 다음과 같은 작업.. 2023. 7. 15.
12장 채팅 시스템 설계 가상 면접 사례로 배우는 대규모 시스템 설계 기초 – System Design Interview 이번 장에서는 채팅 시스템을 설계해 볼 것이다. 채팅 앱이라고 했을 때 사람들이 떠올리는 것은 제각각이다. 그러니 요구사항을 확실하게 해 두는 것이 아주 중요하다. 1단계 문제 이해 및 설계 범위 확정 질문 예시 - 1:1 채팅 앱입니까? 아니면 그룹 채팅 앱입니까? - 모바일 앱인가요? 아니면 웹 앱인가요? - 처리해야 하는 트래픽 규모는 어느 정도입니까? - 그룹 채팅의 경우에 인원 제한이 있습니까? - 중요 기능으로는 어떤게 있을까요? - 첨부파일도 지원할 수 있어야 하나요? - 사용자 접속상태 표시도 필요한가요? - 메시지 길이에 제한이 있나요? - 종단 간 암호화(end-to-end encryptio.. 2023. 7. 14.
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.