SW 그리고 아빠 엔지니어링 중...

아는 만큼 보이고, 경험해봐야 알 수 있고, 자꾸 써야 내 것이 된다.

개발/TDD

[개념] TDD 란?

보리남편 김 주부 2022. 12. 22. 17:47

Agile 은 방법론이 아니라 하나의 철학이다. 

더보기

. 업무를 작은 공략 단위로 정하고, 이를 자주 반복하는 방식으로 개발하는 접근 방식

 

Agile의 철학아래 여러 방법론이 존재한다. (Scrum, XP, LEAN)

L 전 세계적으로 Scrum이 유행이고 한국은 거의 Scrum만 쓰는 것 같다. 이 Scrum은 개발에서만 쓰는 것이 아니라 이런 프로세스가 적합한 곳에서 두루 쓰이고 있다.

출처 : https://velog.io/@katanazero86/%EC%95%A0%EC%9E%90%EC%9D%BCagile%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
왜 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을 반복

TDD 개발주기 Red-Green-Refactor 그림

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가 문화로 자리를 잡혀있다.

728x90

'개발 > TDD' 카테고리의 다른 글

개발 환경 없이 TDD(test driven development) 연습 해보기  (0) 2022.12.14