“Connecting the dots”

TDD 본문

7주차

TDD

kims1997 2022. 12. 20. 09:41
반응형

TDD이란


TDD 란 Test Driven Development  약자로 테스트 주도 개발이라고 한다

TDD는 작가가 책을 쓰는 과정과 유사 하다  책을 쓸 떄는 목차를 처음 구성한다 이 후 각 목차에 맞는 내용을 구상하여 초안을 작성 후 고쳐 쓰기를 반복한다 이 과장을 TDD에 비유하면 목차구성은 "테스트코드 작성" 초안작성은 "코드개발", 고쳐쓰기는 "코드수정" 에 해당 반복적인 고쳐쓰기는 좋은글이 완성 되는 것처럼 소프트웨어도 반복적인 테스트와 수정을 통해서 고품질의 소프트웨어를 만들수 있다-

TDD를 왜 해야할까?
애자일에서 설명한 것과 같이 불확실성이 높을 때 “피드백”과 “협력”이 중요하기 때문에 피드백과 협력이 자주 이루어진다면 더 좋은 결과가 나올 수 있다.

- TDD는 어떤 상황에서 해야할까
만약 어떤 부분에 대한 코딩을 여러번 해봤고 결과가 어떻게 나올지 뻔하다면 TDD를 하지 않아도 된다. 그렇다면 TDD는 어떤 상황에서 해야할까?

1. 처음해보는 프로그램 주제
-나에 대한 불확실성이 높은 경우
2. 고객의 요구조건이 바뀔 수 있는 프로젝트
- 외부적인 불확실성이 높은 경우
3. 개발하는 중에 코드를 많이 바꿔야 된다고 생각하는 경우
4. 내가 개발하고 나서 이 코드를 누가 유지보수할지 모르는 경우
- 외부적인 불확실성이 즉, 불확실성이 높을 때 TDD를 하면 된다.
- TDD의 효과
모든 애자일의 실천법은 피드백과 협력을 동시에 증진시킨다.


1피드백: TDD를 하면 피드백이 증가 테스트 코드 통해서 Green인지 red인지 자주 확인할 수 있다 

2협력(핵심)


TDD 개발 방식의 장점

튼튼한 객체 지향적인 코드 생산 가능

-TDD는 코드의 재사용 보장을 명시하므로 TDD를 통한 소프트웨어 개발 시 기능 별 철저한 모듈화가 이뤄진다 종속성과 의존성이 낮은 모듈로 낮은 모듈로 조합된 소프트웨어 개발을 가능 하고 모듈을 추가 하거나 제가해도 소프트웨어 전체 구조 에 영향을 미치지 않는다 

 

-재설계 시간의 단축

테스트 코드를먼저 작성하기 때문에 개발자가 지금 무엇을 해야하는지 분명히 정의하고 개발을 시작하게 된다 또한 테스트 시나리오를 작성하면서  다양한 예외사항에 대해 생각해볼 수 있다 개발진행중 소프트웨어의 전반적인 설계가 변경되는 일을 방지 

 

디버깅 시간의 단축

-이는 유닛 테스팅을 하는 이점이다 에를 들면 사용자의 데이터가 잘못 나온다면 DB의 문제인지 , 비즈니스 레이어의 문제인지 UI의 문제인지 실제 모든 레이어들을 전부 디버깅 해야 하지만 TDD의 경우 자동화 유닛테스팅을 전재하므로 특정 버그를 쉽게 찾아낸다

반응형

'7주차' 카테고리의 다른 글

SSL, HTTPS  (0) 2022.12.21
Firewall(DMZ) / VPC  (0) 2022.12.21
DNS / Load Balancer  (0) 2022.12.20