TIL 2021-05-19 (TDD)

nyongho·2021년 5월 19일
0

오늘 배운 내용

목록 보기
18/40

TIL


TIL List

  • TDD 란 무엇인가?
  • TDD 의 장점과 단점
  • TDD 에 대한 나의 생각

1) TDD 란 무엇인가?

TDD 는 테스트 주도 개발 (test-driven development) 이라는 소프트웨어 개발 방법론 중 하나로, 선 테스트 후 개발 방식의 프로그래밍 방법을 말한다.

한마디로 "테스트를 통과하기 위한 코드를 작성한다." 라는 의미로 보면 될 것 같다.

TDD 를 이용한 개발 방법은 다음과 같다.

  1. 테스트 케이스 작성

  2. 테스트 케이스를 통과하는 코드 작성

  3. 작성한 코드 리팩토링

테스트 코드가 개발을 주도하기 위해서는 반드시 실패를 포함한 테스트 코드의 작성이 먼저 되야 한다.

그 다음 테스트를 통과하는 코드를 작성하고 마지막으로 리팩토링 단계에서 이를 개선한다.


2) TDD 의 장점

2-1. 설계 수정시간의 단축

테스트 케이스를 먼저 작성하기 때문에 최초 설계에 들어가는 시간을 줄일 수 있으며 입출력 구조와 기능의 정의를 명확하게 하게 되므로 설계의 구조적 문제를 바로 찾아낼 수 있음

2-2. 유지보수가 용이함

단위 테스트 기반의 테스트 코드를 작성하기 때문에 추후 문제가 발생하여도 각각의 모듈별로 테스트를 진행하면 문제점을 쉽게 찾을 수 있다.

2-3. 객체지향적 코드 개발

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

3) TDD 의 단점

3-1. 사전준비 기간

프로젝트에 도입할 코드를 미리 테스트 케이스를 통해 짜야 하므로 꽤나 많은 사전지식을 요구하게 된다.

3-2. 생산성 저하

개발 기간이 타이트한 프로젝트의 경우, TDD 를 도입하는 방식은 비효율적일 것이다.


4) TDD 에 대한 나의 생각

회사의 우대사항이나 면접질문에 TDD 에 대한 것이 나올 수 있는 경우가 꽤 된다고 들었다.

그래서 내가 만약 프로젝트를 진행할 때 TDD 를 도입한다면 개인적으로는 장점보다는 단점이 더 부각될 것 같다.

일단 테스트 코드를 짜는 시간 또한 결국 비용적으로 많은 투자가 일어날 수 밖에 없는 부분이고 테스트에만 과도하게 몰두해 본 프로젝트를 진행하는 시간 낭비가 일어날 수도 있다는 생각이 든다.

결론은 TDD 가 필요한 분야에 도입된다면 이 만큼 좋은 성과를 내는 것도 없을 것이지만, 오히려 이것이 독이 될 수도 있다고 생각한다.

profile
두 줄 소개

0개의 댓글