ATDD란
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
댓글남기기