[Spring] TDD

hyoreal·2022년 9월 13일
0

[Spring]

목록 보기
18/25
post-thumbnail

TDD (Test Driven Development)

  • 테스트를 먼저 하고 구현은 그 다음에 한다

전통 개발 방식

  • 개발 흐름

    1. 서비스 제작에 관여하는 사람들이 모여 서비스에 대한 컨셉과 해당 컨셉에 따른 요구 사항을 지속적 수집

    2. 수집된 요구 사항에 맞춰 서비스를 화면으로 제공하기 위한 UI(User Interface)를 설계하며 구체적 기능 요구 사항 정의

    3. Frontend 개발자는 기능 요구 사항과 UI를 통해 Frontend 측 개발 진행, 웹 디자이너는 화면을 디자인, Backend 개발자는 기능 요구 사항에 맞춰 Backend 애플리케이션 디자인

    • 백엔드 개발자의 3번과정 개발 흐름

      3-1. 백엔드 개발자들간에 수집된 요구 사항과 설계된 화면(UI 설계서 등)을 기반으로 도메인 모델 도출
      3-2. 도출된 도메인 모델을 통해 클라이언트 요청 받는 엔드포인트와 비즈니스 로직, 데이터엑세스 위한 클래스와 인터페이스 등의 큰 그림 설계
      3-3. 클래스 설계를 통해 애플리케이션의 큰 그림 설계 후 클래스와 인터페이스의 큰 틀 작성
      3-4. 클래스와 인터페이스의 큰 틀 작성 후, 클래스와 인터페이스 내 메서드 정의하며 세부동작 고민 및 코드 구현
      3-5. 해당 메서드 구현 끝냈다면 구현 기능이 잘 동작하는지 테스트
      3-6. 테스트 문제 발생 시 구현 코드 디버깅하며 문제 원인 파악

  • 선 구현, 후 테스트 방식

TDD 특성

  • TDD 개발 방식

    실패하는 테스트실패하는 테스트를 성공할 만큼의 기능 구현성공하는 테스트리팩토링실패하는 테스트와 성공하는 테스트 확인반복

  • TDD 장점

    • 한번에 많은 기능 구현할 필요 X
    • 테스트 코드가 추가되며 검증범위가 넓어질수록 기능구현도 점진적 완성되어감
      • 단순 기능 → 복잡 기능으로 확장되며 그때그때 검증 가능
    • 리팩토링할 부분이 보이면 그때그때 빠르게 진행하기때문에 리팩토링 비용 절감
    • 리팩토링을 통해 꾸준히 코드를 개선하므로 코드의 품질을 일정부분 유지 가능
    • 코드 수정 이 후, 바로 테스트 가능으로 빠른 피드백
  • TDD 단점

    • TDD 개발 방식이 익숙치않음
    • 팀단위로 개발이 이루어지기때문에 팀원들 간 사전에 협의가 되어야함
profile
좌충우돌 코린이 성장기

0개의 댓글