ATDD란

1 분 소요

ATDD(Acceptance Test Driven Development)란?

ATTD(Acceptance Test Driven Development)란 추상적으로 작성되는 요구사항을 인수테스트를 이용하여 클라이언트, 프로그래머, 테스터, 설계자 등이 명확하게 요구사항을 이해할 수 있도록 하는 개발 방법론입니다.

요구사항을 아무리 정교하게 작성한다고 해도 요구사항 자체는 추상적으로 작성할 수 밖에 없기 때문에 개인에 따라서 다르게 해석할 수 있습니다.

개발자와 테스터 간에 요구사항을 서로 다르게 이해 할 수 있다.

기존에는 요구사항 정의 -> 설계 -> 구현 -> 인수테스트 설계 -> 인수테스트 수행 순으로 프로젝트를 관리 했다면, 요구사항 정의 -> 인수테스트 설계 -> 인수테스트 구현 -> 설계 -> 구현 순으로 프로젝트 진행 과정을 변경합니다.

기존의 문제점

버그가 발견된 이후에야 테스터와 개발자가 소통한다.

프로그래머가 결함을 수정한 후에 회귀결함이 발생하여 주기마다 모든 테스트를 수행해야 한다.

인수테스트

  • 단위 테스트

    • Unit에서 결함을 찾는다.
  • 인수 테스트

    • 요구사항이 충족되는지 검증한다.
    • 스코프가 모두 완료되었는지 검증한다.

개발과정

  • 예제로 명세를 작성
    • 고객, 프로그래머, 테스터가 협력하여 명세를 작성합니다.
    • 추상적인 요구사항을 동일하게 이해하기 위해서 객관적이고 구체적인 예제를 이용합니다.
  • 예제를 정제
    • 예제가 과도하게 많이 작성된 경우 관련성이 적은 정보를 제거하고 개발과 테스트에 필요한 정보만을 남긴다.
    • 명세를 정제할 때 도메인 용어가 있다면 도메인 용어를 이용하여 예제를 기술합니다.
  • 실행 가능한 명세 만들기
    • 테스트 자동화 프레임워크를 작성한다.
  • 프로그래머가 할 일
    • 실패하는 인수테스트를 구현
    • 인수 테스트가 성공하면
      • 다음 인수테스트를 구현

개발진척도: 전체 인수테스트 중 테스트를 통과하는 인수테스트로 측정

개발 진척도를 명확하게 파악할 수 있음.

ATDD(Acceptance TDD)는 테스트로부터 시작해서 구현을 마무리 짓는 TDD의 범위를 코드 수준에서 기능 테스트 수준까지 확장한 것이다. 필자 개인적인 생각으로 클래스 수준의 TDD로 시작해도 좋지만, ATDD를 최대한 많이 할 때, TDD의 힘이 배가된다고 믿고 있다.

  • https://www.youtube.com/watch?v=dijE5LwF45k
  • http://www.nethru.co.kr/bbs/board.php?bo_table=notice&wr_id=49
  • https://medium.com/@sryu99/%EB%8B%A8%EC%9C%84-%ED%85%8C%EC%8A%A4%ED%8A%B8-tdd-bdd%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90-3d25fab5ccb2
  • https://www.slipp.net/wiki/pages/viewpage.action?pageId=28279242
  • http://javacan.tistory.com/entry/TDD-ATDD
  • https://medium.com/@sryu99/%EB%8B%A8%EC%9C%84-%ED%85%8C%EC%8A%A4%ED%8A%B8-tdd-bdd%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90-3d25fab5ccb2
  • http://www.itworld.co.kr/news/109011
  • http://www.zdnet.co.kr/news/news_view.asp?artice_id=00000039170212
  • https://github.com/msbaek/atdd-example

태그:

카테고리:

업데이트:

댓글남기기