ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TDD 실천법과 도구 - TDD ( Test Driven Development )
    Knowledge/TDD 2019. 10. 15. 16:02
    반응형

    이 포스팅은 아래 링크에서 확인할 수 있는 "TDD 실천법과 도구" 책을 읽고 정리한 내용입니다. 

     

     

    "TDD 실천법과 도구" 책 전체를 PDF 공개합니다.

    2010년 6월에 출간되었던 "TDD 실천법과 도구" 책 전체를 PDF로 공개합니다. 책소개: http://naver.me/GaYZCDjD Updated --- - [1장 - 테스트주도개발 Test Driven Development](https://repo.yona.io/doortts/blog/issue/2) - 18.07.18 - [2장 - doortts/blog

    repo.yona.io

    • TDD의 정의

    TDD는 제품 코드를 작성하기 전에 테스트 코드를 먼저 만드는 것이다

     

    • TDD의 목표

    잘 동작하는 깔끔한 코드를 만들기 위해 사용한다

     

    • 개발에 있어 TDD의 위치

    개발에 있어 TDD는 개발자가 처음으로 수행하는 메소드 단위 테스트다

     

    • TDD의 진행 방식

    진행할 수 있는 방법은 두가지다.

     

          case 1. 구현 대상 클래스의 외형에 해당하는 메소드들을 먼저 만들고 테스트 케이스를 일괄적으로 만드는 방식

          case 2. 테스트 케이스를 하나씩 추가해나가면서 구현 클래스를 점진적으로 만드는 방식

     

         둘 중 어느 것이 특별히 좋다고 하긴 어려우나 대부분의 TDD 책에서 권장하는 건 2의 방식이다

     

    후자의 방식은 크게 세단계의 과정을 거친다.

     

       1. 질문 ( 테스트 코드 작성을 통해 시스템에 질문한다 - 테스트 수행 결과는 실패 )

     

          - 하나의 테스트 케이스는 하나의 기능만 테스트 해야 한다. 하나의 테스트 케이스는 하나의 메소드로 표현한다.

     

       2. 응답 ( 테스트를 통과하는 코드를 작성해 질문에 대답한다 - 테스트 성공 )

     

       3. 정제 ( 아이디어를 통합하고, 불필요한 것은 제거하고, 모호한 것은 명확히 하며 대답을 정제한다 )

     

    위의 과정을 주기적으로 반복한다

     

    이 때 반드시 따르길 권장하는 원칙은 아래와 같다.

     

       1. 실패하는 테스트를 작성하기 전에는 절대로 제품 코드를 작성하지 않는다

     

       2. 실패하는 테스트 코드를 한 번에 하나 이상 작성하지 않는다.

     

       3. 현재 실패하고 있는 테스트를 통과하기에 충분한 정도를 넘어서는 제품 코드를 작성하지 않는다.

     

    • TDD의 장점

    TDD는 개발자가 목표를 세워 개발을 진행해나가고, 설계에 대해 지속적으로 고민할 수 있게 도와준다. 또한 그 와중에 정형화된 형태의 테스트 케이스들을 작성함으로써 테스트 과정을 자동화하고, 테스트의 수행 결과와 개발의 목표 달성 여부를 즉각적으 로 알 수 있게 된다. 그리고 개발 완료 시점 이후로도 TDD의 부산물인 자동화된 단위 테스트 케이스를 이용한 지속적인 테스트가 가능해진다. 결과적으로 TDD는 개발에 좀 더 집중할 수 있게 도와주고, 프로그램의 안정성에 크게 기여한다

     

    이 장의 실습 코드는 아래 링크에서 확인 가능합니다

     

    nomelancholy/TDD

    Contribute to nomelancholy/TDD development by creating an account on GitHub.

    github.com

     

    반응형

    'Knowledge > TDD' 카테고리의 다른 글

    TDD 실천법과 도구 - JUnit과 Hamcrest ( + Junit 5 )  (0) 2019.10.16

    댓글

Designed by Tistory.