4주차 인수 테스트와 리팩터링

0. [이론] 배운 사항들

  • 인수테스트 대상

    • 해피케이스 통과 위주로 검증

    • 사이드 케이스들은 유닛테스트에서 검증하는 것을 추천

  • 점진적 리팩터링

    • 명시적으로 중요한 테스트는 응답의 결과까지 검수 할 필요 있다.

    • 더 효율적인 방법들은 무엇일까?

      • 인수 테스트 통합

        • 하나의 테스트에서 생성, 조회, 삭제를 검증한다. ('즐겨 찾기를 관리한다')

      • Story Test

        • 흐름에 따라 검증하기

        • API 단위를 벗어나서 하나의 흐름을 단위로 설정

      • 통합시 장점

        • 테스트 비용 절감

        • 인수 테스트 스텝 중복 제거

        • 흐름 검증 및 사용자 스토리 검증 가능

  • 레거시 리팩토링

    • 구조 설계

    • 새로운 테스트 만들기 (기존 프로덕션 + 테스트 같이가져가기)

    • 기능 구현

1. [실습] 구현 단계들

1단계 - 경로 조회 타입 추가

2단계 - 요금 조회

3단계 - 요금 정책 추가

  • 테스트를 통합하여 테스트의 유지보수 비용을 줄인다.

  • 문서화를 ATDD 사이클에 도입한다.

2. [실습] 배운 사항

  • AsciiDoc 사용 원리 -> Gradle

  • 테스트들 통합

  • 정책같은 도메인 설계

3. [실습] 구현 사항들

추가고민거리

  1. 간접 참조

    1. 객체각 결합도 낮아짐

    2. 서비스 레이어의 로직 복잡도 증가

  2. 비회원 기능 구현

    1. Null Object 을 사용해서 구현

    2. Annotation 을 사용해서 구현

    3. Controller에서 분기처리 하지 않고 domain에서 비회원, 회원에 따라 할인 정책 적용

  3. 패키지 의존성

  4. 문서화 진행 방법

Last updated