ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 우아한 ATDD
    세미나, 영상 요약정리 2022. 10. 15. 00:01
    728x90

    https://www.youtube.com/watch?v=ITVpmjM4mUE&t=4s 

     

    우아한테크코스 코치님의 류성현님의 영상을 요약한 글입니다.

     

    개요

    TDD는 알고 있었지만 ATDD는 얼핏 들어보기만 하였는데 ATDD에 대해 궁금해져서 알아보는 시간을 가지겠습니다.

     

    인수 테스트 첫 만남

    새로운 팀, 새로운 개발 문화에서부터 인수 테스트를 시작하게 되었습니다.

    페어 프로그래밍을 통해 즉각적인 피드백을 받고, 혼자 개발할 때는 테스트 코드로부터 안정감을 얻고 이때 인수 테스트를 진행하였습니다.

     

    인수 테스트란? 

    시나리오(사용자 스토리) 기반으로 진행되는 기능 테스트

     

    인수 테스트를 통해 도메인과 서비스 흐름에 대해 파악할 수 있게 되는 장점이 있습니다.

    또한 배포없이 테스트로 대부분 기능 검증이 가능합니다.

     

     

    피드백을 받는 방법

    - 페어 프로그래밍

    - 테스트 / 인수 테스트

    - 코드 리뷰

    - 배포 및 출시

     

    이때 TDD와 함께한다면 피드백을 빠르게 받을 수 있습니다.

     

    ATDD란?

    테스트 vs TDD

    테스트는 구현을 하고 검증을 하기 위해 테스트 코드를 작성합니다.

    반면 TDD는 요구 사항을 먼저 테스트로 작성하고 구현하는 방식으로 진행됩니다.

     

    TDD vs BDD vs ATDD

    BDD는 테스트 대신에 행위로 대체하여 하는 것을 의미합니다.

    ATDD는 테스트 대신에 인수테스트로 대체하여 하는 것을 의미합니다.

     

    다 같이 인수 테스트 요구사항을 정의하게 되면 기획자 개발자 QA 모두 같은 생각으로 프로젝트가 진행되지만 그렇지 않다면 서로 다른 생각을 가지고 있을 확률이 존재합니다.

     

     

    ATDD 개발 프로세스 예시

    - 인수 조건 정의(given / when / then 활용)

    - 인수 테스트 작성(실제와 같은 input ,ouput 으로 작성)

    - 기능 구현(TDD로 진행)

     

    인수 테스트의 특징

    - 실제 사용자는 내부 구조에 대해 알지 못함

    - 내부 구조나 작동과 연관이 없는 테스트

    - UI 레벨 대신 API 레벨로 인수 테스트

     

    테스트 도구

    - @SpringBootTest

    - MockMvc

     

     

    Given에서 수많은 중복이 발생하는 문제점 해결

    - 반복되는 부분들을 메서드로 추출하여 다른 인수 테스트에서도 재사용합니다.

    - 이때 테스트 코드의 가독성을 올리기 위해 메서드의 이름에 한글을 활용하기도 합니다.

     

    외부 API 호출시 어떻게 할 것 인가?

    - Mocking도 하고 실제로 호출도 하는 방식을 혼합(가짜 Controller를 만들어서 진행하기도 함)

     

    동작 가능한 가장 간단한 성공 케이스로 시작하기

     

    같은 테스트 픽스처를 공유하는 인수 테스트를 클래스 단위로 묶음

    코드의 응집도를 높이는 느낌

     

    댓글

Designed by Tistory.