ATDD에 대한 오해

ATDD란?

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3b41b9c4-c6c7-483b-b22b-17f916d73b67/2020-05-04T14_56_14.415image.png

프로젝트에 참가하는 팀원들은 개발자만 있는것이 아니라 기획자, 테스터 등 각각 다른 배경지식과 관점을 가진 사람들이 함께하는데, 이런 다른 관점의 팀원들간에 협업을 위한 애자일 방법중 하나다.

하나의 주제를 가지고 팀원들이 생각을 한다고 하더라도 모두가 각각의 배경지식으로 결과물을 상상하기에 결과물은 네모, 세모, 동그라미로 각각 다를 수 있다. 그렇기에 이 프로젝트의 결과물이 나오는시점에서 각각 생각한것과 다른 결과물에 트러블이 생길 수 있다.

ATDD는 이러한 문제를 해결하기위해 기획 단계부터 인수 테스트를 통해 공통의 이해를 도모해 프로젝트를 진행하는 방법이다.

그렇기에 인수테스트(Acceptance Test)는 요구사항을 작성하는데에 집중한다.

ATDD 프로세스

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/07de2c68-6d2d-4277-b2b2-2ddd148af600/72506007-63d58e80-3884-11ea-80f5-8577876c2864.png

  1. User Story

  2. Discuss

    Feature: 최단 경로 구하기
    
      Scenario: 지하철 최단 경로 조회
        Given 지하철역들이 등록되어 있다.
        And 지하철노선이 등록되어 있다.
        And 지하철노선에 지하철역들이 등록되어 있다.
        When 사용자는 출발역과 도착역의 최단 경로 조회를 요청한다.
        Then 사용자는 최단 경로의 역 정보를 응답받는다.
    
  3. Distill

    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class LineAcceptanceTest {
     
        @DisplayName("최단 경로 구하기")
        @Test
        void findPath() {
        ...   
    }