Hayden's Archive

2021.03.16 [3월 우아한테크세미나] 우아한 ATDD 본문

Seminar

2021.03.16 [3월 우아한테크세미나] 우아한 ATDD

_hayden 2021. 3. 16. 19:06
  • 페어 프로그래밍
    • 즉각적인 피드백을 받을 수 있음
    • 네비게이터와 드라이버
  • 테스트
    • 테스트 코드로부터 받는 피드백
    • 인수 테스트
      • 시나리오(사용자 스토리) 기반으로 기능 테스트
      • 인수(= 물건을 받는다)
      • 배포 없이 받는 빠른 피드백 -> 배포없이 테스트로 대부분 검증 가능
      • 기존 기능을 망가뜨리지 않고 새 기능을 추가할 수 있음
      • 인수 테스트 하나하나를 실행시키면서 도메인 정보와 비즈니스 관련 플로우를 쌓아갈 수 있음
  • 빠른 피드백
    • 든든한 지원군
    • 자신감을 주는 자동화된 테스트
  • 피드백을 받는 방법
    • 페어 프로그래밍
    • 테스트 / 인수 테스트
    • 코드 리뷰
    • 배포
    • 출시
  • 테스트 주도 개발(TDD)
    • 빠른 피드백을 받기 좋은 개발 방법론
    • 테스트를 설계 활동으로 바꾸는 효과
    • 설계 품질에 관한 피드백을 빠르게 받을 수 있음
    • 관련 책 : 테스트 주도 개발로 배우는 객체 지향 설계와 실천
  • TDD 수행시 아쉬운 부분
    • 시작해보기 막막한 부분
    • 나도 모르게 테스트 케이스를 짜기 전에 프로덕트 코드를 먼저 짜는 일이 생김
    • 불필요한 코드와 정리 안 된 코드가 있는 레거시 코드들을 어떻게 적용할 것인가
  • 그러므로 인수 테스트를 기반으로 개발하기
    • 인수 테스트 장점을 포함
    • 어디서부터 어디까지 작업해야 할지 뚜렷한 부분들이 생김 
  • ATDD 관련 기본 개념
    • 테스트
      • 내가 구현한 코드를 검증하는 용도로 테스트를 사용
      • 하루를 끝내고 정리하는 일기와 같음
    • TDD
      • 내가 구현할 내용을 명세화하기 위해서 테스트를 사용
      • 하루를 시작할 때 작성하는 to-do 리스트와 같음
    • BDD
      • TDD의 Test를 Behavior로 대체함
    • ATDD
      • 요구사항을 명세화하는 방법으로 인수 테스트를 활용함
      • TDD처럼 개발이랑만 관련된 것은 아니고, 기획 개발 QA 등 공통적으로 관련된 개발 방법
      • 여러 직군이 다 같이 인수 조건을 정의한다(커뮤니케이션 비용 절약을 위함)
    •  ATDD 개발 프로세스
      • 인수 조건 정의
        • 인수 조건 
          • 인수 테스트가 충족해야 하는 조건
          • 인수 조건을 표현하는 여러가지 포맷이 있음
            • Given(사전 조건)/When(검증 대상)/Then(기대 결과)
      • 인수 테스트 작성
        • 인수 조건을 검증하는 테스트
        • 실제 요청/응답하는 환경과 유사하게 테스트 환경 구성
      • 기능 구현
        • 인수테스트를 충족하기 위한 코드 구현
        • 기능 구현은 TDD로 진행