12장 레거시 코드 다루기

3/12/2025

 Timothy @ Daangn Frontend Core

Software Engineer, Frontend @Daangn Frontend Core Team

ex) Senior Lead Software Engineer @NHN Dooray (2021 ~ 2023)

ex) Lead Software Engineer @ProtoPie (2016 ~ 2021)

ex) Microsoft MVP

Timothy Lee

이 웅재

12.1 어디에서부터 테스트를 시작해야 할까

테스트가 가장 필요하거나 시작하기 좋은 컴포넌트부터 우선순위를 정해야 한다.

우선순위를 결정할 때 고려해야할 항목

  • 논리적 복잡도 : 순환 복잡도, 도구 이용해서 측정 가능

  • 의존성 수준 : 외부 요소

  • 우선순위 : 프로젝트 내에서의 중요도

"복잡하지만 테스트하기 쉬운 것부터 할래?
아님 복잡하고 테스트하기 어려운 것부터 할래?"

12.2 무엇을 선택할지 결정

쉬운 것부터?

 

  • 초기 테스트 작성이 훨씬 빠르고 수월

  • 시간이 지날수록 점점 더 테스트하기 어려운 컴포넌트만 남는다.

  • 제품 출시를 앞두고 있어서 스트레스 받는다

  • 팀이 단위 테스트에 익숙하지 않다면 간단한 것부터 하는 것이 좋다.

어려운 것부터?

 

  • 팀원들이 이미 단위 테스트 경험이 있다면 이 방식을 선택하는 것에도 장점이 있다.

  • 가장 간단한 테스트를 작성하는 데만 하루 이상 걸릴 수 있다.

  • 하지만 시간이 급격히 줄어드는 시기가 온다.

  • 더 테스트하기 쉽게 리팩터링할 때마다 그 컴포넌트가 사용하는 의존성이나 다른 컴포넌트의 테스트 관련 문제도 해결할 수 있다.

12.3 리팩터링 전에 통합 테스트 작성

과정

  • 원래 시스템이 정상 작동하는지 확인하기 위해 통합 테스트(목이나 스텁 없이)를 추가 한다.

  • 시스템에 추가하려는 기능에 대해 실패하는 테스트를 작성하거나 리팩터링을 시작한다.

  • 시스템을 작은 단위로 리팩터링하고 통합 테스트를 자주 실행해서 무언가 잘못된 부분은 없는지 확인한다.

핵심

  • 로컬 환경에서 통합 테스트를 실행하려면 시스템에 필요한 모든 요소를 준비해야 하므로 과정이 번거럽고 시간이 오래 걸린다.

  • 핵심은 수정하거나 기능을 추가해야 할 부분에만 집중하는 것이다.

  • 테스트를 계속 추가하면서 시스템을 리팩터링하고 더 많은 단위 테스트를 작성하다 보면, 시스템이 점점 더 유지 보수하기 쉽고 테스트가 용이한 구조로 바뀐다. 시간이 오래 걸리기는 하지만 충분히 그럴 만한 가치가 있다.

Copy of 9장 가독성

By Woongjae Lee

Copy of 9장 가독성

  • 42