테스트 주도 개발 TDD 실천법과 도구 책을 참고했습니다.
바로 얍! 하고 하는 방법보다 테스트 주도 개발의 의의와 순서를 음미하고 싶어서 정리했습니다.
TDD란
1. TDD를 주도한 켄트 벡트벡이 말하길 "프로그램을 작성하기 전에 테스트를 먼저 작성할 것"이라는 의미는
"업무 코드를 작성하기 전에 테스트 코드를 먼저 만드는 것"입니다.
2. 최초에는 테스트 우선 개발(Test First Development)이었으나 테스트 주도 개발(Test Driven Development)로 불리고 있습니다.
3. 어떤 테크닉이나 테스트 프레임워크를 쓰지 않아도 TDD를 할 수 있습니다.
최대한 빨리 실패하고 자주 실패를 경험하는 방식입니다.
빨리 실패하면 실패 할수록 좀 더 성공에 가까워지는 묘한 개발 방식입니다.
TDD의 목표
잘 작동하는 깔끔한 코드
TDD의 기원
TDD의 단위 테스트 단위
기존 개발 진행 방식
TDD의 진행 방식
TDD를 이용한 개발은 '질문 -> 응답 -> 정제' 라는 세 단계가 반복적으로 이루어집니다.
실습 시작하기1
- 은행 계좌 클래스 만들기
질문 단계
테스트 케이스 작성 하는 방법
1. 구현 대상 클래스의 외형에 해당하는 메소드들을 먼저 만들고 테스트 케이스를 일괄적으로 만드는 방식
2. 테스트 케이스를 하나씩 추가해나가면서 구현 클래스를 점진적으로 만드는 방식
보통 2번을 권장합니다.
1. AccountTest 클래스 생성를 생성합니다.
패키지명은 test로 해서 main 코드와 구분합니다.
2. 계좌를 생성합니다.
3. 정상적으로 생성 되었는지 확인합니다.
4. main을 작성하고 테스트 합니다.
발생 한 에러에 짜증과 당황하지 않고 생성자에 대한 테스트 코드라고 생각해봅니다.
단지 시스템에게 개발자가 "코드가 예상대로 동작하는지 판단해줄래?" 라고 물어봤다고 생각해 봅니다.
시스템은 "아니!? 실패인데!?"라고 대답했을 뿐입니다.
응답 단계
1. Account 클래스를 생성합니다.
패키지를 main으로 변경하여 test 코드와 구분합니다.
2. 성공하는 코드로 변경합니다.
정제 단계
1. 최초의 정제
JUnit을 이용한 테스트
- @Test를 사용해 봅니다.
라리브러리가 추가됩니다.
성공!!
실습 시작하기2
질문 단계
실패(Failures)는 AssertEquals 등의테스트 조건식을 만족시키지 못했다는 의미입니다.
오류(Errors)는 테스트 케이스 수행 중 예상치 못한 예외가 발생해서 테스트 수행을 멈췄다는 의미입니다
응답 단계
1. getBalance 메소드 호출 시 1000을 돌려주는 하드코딩을 합니다.
성공입니다.
하드코딩하는 이유는 '첫 번째 녹색 막대는 신뢰하지 않기'로 하고 두 번째 테스트 케이스를 작성에 들어가기 위함입니다.
하드 코딩 값, 혹은 엉성하게 작성 된 테스트 케이스를 모두 통과하면, 찜찜하고 허탈 할 수 있지만 현재 가장 유력한 정답이 됩니다.
이렇게 만든 코드는 정제 단계에서 리팩토링하여 찜찜한 마음을 달랠 수 있습니다.
2. getBalance() 내용을 추가합니다.
정제 단계
실습 시작하기3
'개발(합니다) > 방법론' 카테고리의 다른 글
TDD 학습 및 실습 정리3(메소드작성법과한계) (0) | 2018.12.26 |
---|---|
TDD 학습 및 실습 정리2(JUnit에 대하여) (0) | 2018.12.22 |
Spring의 TDD 특징 및 사용법 정리 (3) | 2018.12.21 |
Stateless와 Stateful 그리고 JWT 특징 (0) | 2018.12.12 |
RESTful API 특징과 작성 시 지켜야 할 규칙 (0) | 2018.12.12 |