Agile 은 방법론이 아니라 하나의 철학이다.
. 업무를 작은 공략 단위로 정하고, 이를 자주 반복하는 방식으로 개발하는 접근 방식
Agile의 철학아래 여러 방법론이 존재한다. (Scrum, XP, LEAN)
L 전 세계적으로 Scrum이 유행이고 한국은 거의 Scrum만 쓰는 것 같다. 이 Scrum은 개발에서만 쓰는 것이 아니라 이런 프로세스가 적합한 곳에서 두루 쓰이고 있다.

왜 Agile을 언급하는가?
Agile의 행동 "실천" 방법론으로 XP를 발표했는데 이 XP 내용중 하나가 TDD 이기 때문이다.
TMI : 이 TDD가 개발자 사이에서 각광받기 시작해서 따로 켄트백이 TDD를 더 자세히 책을 썼다고한다.
TDD를 영접하기 전에 TDD 창시자는 켄트 백이다.
켄트 백
. XP 개념을 저서에서 발표(1999)
. Refactoring 개념 등장(애자일, TDD, pair coding, daily 미팅 개념이 여기서 나옴)
마틴파울러 + 켄트백
. 마틴파울러은 켄트백의 리팩토링을 보고, 반했음
. Refactoring의 개념을 정리하여 책을 냈음(2000)
https://ko.wikipedia.org/wiki/%EC%BC%84%ED%8A%B8_%EB%B2%A1
켄트 벡 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전.
ko.wikipedia.org
TDD에 refactoring이 존재하는 이유
TDD(Test Driven Devlopment) 방법론 자체가 Refactoring 과정이 포함되어 있다.
Unit Test + 구현 + Refactoring
TDD의 방법 : 테스트 코드를 먼저 만든 후, 구현을 시작한다.
<개발 순서>
1. 요구사항 파악
2. 테스트 코드 개발 : 테스트 케이스
3. Production 코드 개발 : 실제 코드 개발
4. 리팩토링 과정을 거쳐, 간결하고 읽기 쉽게 만든다.
5. 1~4번 과정을 반복
TDD Cycle 4단계
1. Red : fail 되는 테스트 작성 (아직 코드 작성 전 이므로 Fail)
2. Green : 동작하는 코드 작성
3. Refator : clean code 작성
4. 1~3을 반복
Write Failing Test : 비어있는 함수를 만들어 두면 fail이 발생
Make Test Pass : production code 작성 - 생산 중인 코드(code in production), 만들고 있는 코드
Refactor : 테스트하는 코드를 작동시키고 그 코드를 조금 더 다듬는 과정 (clean code)
TDD 장점
테스트 코드를 우선 작성함으로써 무엇을 테스트할지 결정하고, 프로그래밍의 목적을 명확히 할 수 있다.
부수적인 장점
. 요구사항이 명확해야 한다.(아~주), 정확한 요구사항 분석 및 설계를 하게 만든다.
모듈화
. 개발 시 Unit 테스트가 가능하도록 모듈 단위로 개발한다.
. 모듈화로 인해, 유지보수성이 좋아진다.
버그율 감소
. 작은 테스트 코드를 더 많이 생성하고, 돌리기에 쉬운 버그를 초기에 잡을 수 있다. 팀 전체 버그율이 감소
Code Coverage 확보
. TDD를 통해 약 80% 이상의 코드 커버리지 확보 가능하다.
Code Coverage : 테스트 프로그램을 돌렸을 때, 코드 라인 별, 몇 % 정도 테스트가 되었는가?
TDD를 안 한다면 해외 및 오픈소스 프로젝트에 참여를 할 수 없다.
오픈소스 컨트리뷰터 참여 어려움
. 오픈소스 내부에 테스트코드가 존재한다.
. 테스트코드를 이해하고, Production 코드 추가 후 존재하는 Unit Test를 수행해야 한다.
해외 업무 어려움
. 미국은 TDD가 문화로 자리를 잡혀있다.
'개발 > TDD' 카테고리의 다른 글
개발 환경 없이 TDD(test driven development) 연습 해보기 (0) | 2022.12.14 |
---|