Lewis's Tech Keep

[우아한 테크캠프][PRO][3기] 3주차 정리 - 1 본문

Java/우아한 테크캠프 정리

[우아한 테크캠프][PRO][3기] 3주차 정리 - 1

Lewis Seo 2021. 12. 2. 15:14

ATDD 프로젝트


 

ATDD?

ATDD = 인수테스트 주도 개발

실패하는 인수 테스트 작성 -> TDD 사이클 (유닛 테스트 실패 -> 유닛 테스트 성공 -> 리팩토링)

-> 성공하는 인수테스트 작성 -> 리팩토링 -> 실패하는 인수 테스트 작성

 

 

ATDD 시 고려사항
  • 개발자만이 참여하는 테스트가 아니다.
    • 기획, 개발 및 다른 관점을 가진 팀원들이 같이 참여하는 테스트라 생각하고
      시나리오를 작성, 코드를 작성할 것
  • 인수 조건 (인수 테스트가 충족해야하는 조건)
    • 여러 포맷이 존재함 (이번 시도는 시나리오 기반 표현 방식)
    • 시나리오의 단위 고려할 것 (나누는 단위에 따라 달라짐)
  • 인수 테스트
    • 인수 조건을 검증하는 테스트
    • 실제환경과 유사하게 테스트 환경을 구성
  • 문서화
    • Spring Rest Docs 활용해 API 문서화
    • 문서화를 위해서 Mock 서버 & DTO 정의가 필요

 

레거시 코드 리팩터링

  • 리팩터링 방법
    • 인수 테스트를 작성하여 기존에 구현된 기능 보호
    • 파악 가능한 부분부터 단위테스트를 만들어 기능 검증
    • 인수 테스트로 보호하고 이후 리팩터링을 진행
  • 메서드 분리
    • 인수 테스트 작성 후 메서드 분리 시 사이트 이펙트에 대한 피드백을 바로 받을 수 있음
    • 기능 구현하다가 꼬여도 이전 테스트 성공 시점으로 바로 리셋 가능
    • 작은 단위로 메서드 분리
  • 단위 테스트 작성
    • 단위가 작아짐 -> 역할이 줄어듬 -> 검증 대상 명확하게 보이게 됨
    • 단위 테스트 하기 쉬운 코드로 변경됨

 

인수 테스트
  • 사용자의 관점(비개발자)에서 설계 및 작동을 생각해야 함
  • 인수 조건에 기술용어 사용하지 않고 개발자가 아닌 사용자들이 이해할 수 있는 단어 사용
  • 요청 응답 기준 모든 부분 검증 전구간 테스트
  • 세부 구현에 영향 받지 않는 Black Box 테스트

 

 

인수 테스트 팁

  • Feature 기준으로 테스트 클래스 나누기
  • Scenario 기준으로 테스트 메서드 나누기
  • 하나의 Feature 내부에 있는 Scenario는 같은 테스트 픽스쳐를 공유하는 것을 추천
  • 다른 인수 테스트에서 재사용 가능

 


추가로 해 볼 것

- BDD (Cucumber)

Comments