개발을 시작한 이래로 지겹게 들었던 TDD..
오늘은 TDD가 무엇이고, TDD의 장단점에 대해서 살펴보겠다.
TDD란?
TDD란 테스트 주도 개발(Test Drvien Development)을 뜻한다.
소프트웨어를 개발하는 여러 방법론 중의 하나로써, 제품이 오류 없이 정상 작동하는지 확인하기 위해 모든 코드는 테스트를 거치게 된다.
TDD에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 움직이는지 검증하기 위한 테스트 코드를 작성한다.
테스트가 실패할 경우 테스트 통과를 위해 코드를 수정하고, 테스트가 성공할 경우 성공한 코드를 리팩토링하는 과정을 거친다.
이를 그림으로 표현하면 다음과 같다.

그렇다면 이 TDD의 장점이 무엇이길래 많은 곳에서 이를 활용하려고 하는것일까?
해당 블로그 글 참조:
https://itsowavy.oopy.io/develop-knowledge/tdd
TDD의 장점
1. 코드 품질 향상
TDD를 활용함으로써 코드를 철저히 테스트할 수 있고 오류를 발견할 수 있다.
반복적인 테스트가 용이해지므로 개발자는 간단하고 유지 관리 가능한 코드를 작성할 수 있게 된다. 따라서 결과적으로 유지 관리와 확장이 용이한 고품질의 코드를 생산할 수 있다.
2. 개발 속도 향상 -> 살짝 애매하지 않을까라는 생각
단기적으로 보면 테스트를 작성하기 위한 초기 투자 시간 때문에 기존 개발 속도보다 느릴 수 있다.
또한 테스트 코드 작성이 능숙하지 않은 경우 테스트 코드 작성 시간에 오랜 시간을 투자해야 한다.
그러나 어느 정도 숙달된 경우에 한해서는 테스트를 먼저 작성함으로써 오류를 먼저 발견하고 이를 초기에 수정할 수 있다.
3. 협업에 용이
TDD로 개발을 할 경우 개발 단계에서도 요구사항에 대한 테스트 코드가 존재하므로 개발에 참여한 모든 구성원이 코드에 대해 잘 이해할 수 있다
TDD에 대한 개인적인 의견:
디자인 패턴, 소프트웨어 개발 방법론 등에 대해 공부하면 할수록 완벽한 개발 방법론은 없다는 걸 점차 깨닫게 되는 것 같다. 각각의 방법론들은 명확한 장단점을 가지고 있고, TDD도 마찬가지인 것 같다.
따라서 TDD 또한 무조건 도입해야돼!! 라는 생각은 들지 않았고 상황에 따라서 적절하게 사용하는 것이 좋겠다 라는 생각이 들었다.
가령, 테스트 코드 작성에 어느 정도 숙달된 사람이라면 TDD를 도입함으로써 생산성을 높일 수도? 있지만, 만약 그렇지 못한 사람이라면 TDD가 오히려 생산성을 감소시키는 안하느니만 못하는 개발방법론이 되지 않을까 싶다.
그렇지만..! 아직 도입해본 경험이 없기 때문에 이렇게 말하는 것이고, 실제 적용을 하면서 느끼는 점은 분명 더 많을 것이라고 생각하기 때문에 이번에 진행되는 프로젝트에서 한번 도입을 해보려고 한다.
예전에는 트렌드이거나 신기술이면 무조건 좋을거야!! 라는 생각이었다면 요즘 들어서는 아무리 트렌드이거나 최신 기술이라 하더라도 이걸 그래서 왜 써야 되는데..?를 생각하게 되는 것 같다.
이게 좋은 습관인지 아닌지는 잘 모르겠지만 그래도 이 덕분에 도입 전 먼저 자세히 조사하게 되는 것 같아서 나쁘지는 않은 것 같다!
그리고 조사에 멈추지 않고 직접 다양한 기술들을 사용해본 경험을 바탕으로 각각의 장단점에 대해 명확히 파악할 수 있도록 발전해나갈 것이다.
참고링크:
https://media.fastcampus.co.kr/knowledge/dev/tdd/
TDD란? 테스트주도개발에 대한 편견과 실상, 방법론
TDD, 즉 테스트 주도 개발(Test Driven Development)에 대한 프로그래머들의 의견은 늘 엇갈린다. TDD의 실효성을 업무로 경험한 사람들은 TDD를 더 효과적으로 실무에 적용하기 위해 고민한다. 반면, 회사
media.fastcampus.co.kr
[회고] TDD를 해보았는데요
나를 괴롭게 한 TDD
velog.io
'iOS 개발' 카테고리의 다른 글
[iOS 개발] Tuist Static Framework vs Dynamic Framework (0) | 2023.10.26 |
---|---|
[iOS 개발] Library not loaded: @rpath/Swinject-Dynamic.framework/Swinject-Dynamic 오류 해결 (0) | 2023.10.25 |
[Git] commit template 만들기 (0) | 2023.09.26 |
[iOS개발] Fastlane Match 적용하기 (0) | 2023.09.06 |
[iOS 개발] Fastlane 적용해보기 (0) | 2023.09.05 |
개발을 시작한 이래로 지겹게 들었던 TDD..
오늘은 TDD가 무엇이고, TDD의 장단점에 대해서 살펴보겠다.
TDD란?
TDD란 테스트 주도 개발(Test Drvien Development)을 뜻한다.
소프트웨어를 개발하는 여러 방법론 중의 하나로써, 제품이 오류 없이 정상 작동하는지 확인하기 위해 모든 코드는 테스트를 거치게 된다.
TDD에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 움직이는지 검증하기 위한 테스트 코드를 작성한다.
테스트가 실패할 경우 테스트 통과를 위해 코드를 수정하고, 테스트가 성공할 경우 성공한 코드를 리팩토링하는 과정을 거친다.
이를 그림으로 표현하면 다음과 같다.

그렇다면 이 TDD의 장점이 무엇이길래 많은 곳에서 이를 활용하려고 하는것일까?
해당 블로그 글 참조:
https://itsowavy.oopy.io/develop-knowledge/tdd
TDD의 장점
1. 코드 품질 향상
TDD를 활용함으로써 코드를 철저히 테스트할 수 있고 오류를 발견할 수 있다.
반복적인 테스트가 용이해지므로 개발자는 간단하고 유지 관리 가능한 코드를 작성할 수 있게 된다. 따라서 결과적으로 유지 관리와 확장이 용이한 고품질의 코드를 생산할 수 있다.
2. 개발 속도 향상 -> 살짝 애매하지 않을까라는 생각
단기적으로 보면 테스트를 작성하기 위한 초기 투자 시간 때문에 기존 개발 속도보다 느릴 수 있다.
또한 테스트 코드 작성이 능숙하지 않은 경우 테스트 코드 작성 시간에 오랜 시간을 투자해야 한다.
그러나 어느 정도 숙달된 경우에 한해서는 테스트를 먼저 작성함으로써 오류를 먼저 발견하고 이를 초기에 수정할 수 있다.
3. 협업에 용이
TDD로 개발을 할 경우 개발 단계에서도 요구사항에 대한 테스트 코드가 존재하므로 개발에 참여한 모든 구성원이 코드에 대해 잘 이해할 수 있다
TDD에 대한 개인적인 의견:
디자인 패턴, 소프트웨어 개발 방법론 등에 대해 공부하면 할수록 완벽한 개발 방법론은 없다는 걸 점차 깨닫게 되는 것 같다. 각각의 방법론들은 명확한 장단점을 가지고 있고, TDD도 마찬가지인 것 같다.
따라서 TDD 또한 무조건 도입해야돼!! 라는 생각은 들지 않았고 상황에 따라서 적절하게 사용하는 것이 좋겠다 라는 생각이 들었다.
가령, 테스트 코드 작성에 어느 정도 숙달된 사람이라면 TDD를 도입함으로써 생산성을 높일 수도? 있지만, 만약 그렇지 못한 사람이라면 TDD가 오히려 생산성을 감소시키는 안하느니만 못하는 개발방법론이 되지 않을까 싶다.
그렇지만..! 아직 도입해본 경험이 없기 때문에 이렇게 말하는 것이고, 실제 적용을 하면서 느끼는 점은 분명 더 많을 것이라고 생각하기 때문에 이번에 진행되는 프로젝트에서 한번 도입을 해보려고 한다.
예전에는 트렌드이거나 신기술이면 무조건 좋을거야!! 라는 생각이었다면 요즘 들어서는 아무리 트렌드이거나 최신 기술이라 하더라도 이걸 그래서 왜 써야 되는데..?를 생각하게 되는 것 같다.
이게 좋은 습관인지 아닌지는 잘 모르겠지만 그래도 이 덕분에 도입 전 먼저 자세히 조사하게 되는 것 같아서 나쁘지는 않은 것 같다!
그리고 조사에 멈추지 않고 직접 다양한 기술들을 사용해본 경험을 바탕으로 각각의 장단점에 대해 명확히 파악할 수 있도록 발전해나갈 것이다.
참고링크:
https://media.fastcampus.co.kr/knowledge/dev/tdd/
TDD란? 테스트주도개발에 대한 편견과 실상, 방법론
TDD, 즉 테스트 주도 개발(Test Driven Development)에 대한 프로그래머들의 의견은 늘 엇갈린다. TDD의 실효성을 업무로 경험한 사람들은 TDD를 더 효과적으로 실무에 적용하기 위해 고민한다. 반면, 회사
media.fastcampus.co.kr
[회고] TDD를 해보았는데요
나를 괴롭게 한 TDD
velog.io
'iOS 개발' 카테고리의 다른 글
[iOS 개발] Tuist Static Framework vs Dynamic Framework (0) | 2023.10.26 |
---|---|
[iOS 개발] Library not loaded: @rpath/Swinject-Dynamic.framework/Swinject-Dynamic 오류 해결 (0) | 2023.10.25 |
[Git] commit template 만들기 (0) | 2023.09.26 |
[iOS개발] Fastlane Match 적용하기 (0) | 2023.09.06 |
[iOS 개발] Fastlane 적용해보기 (0) | 2023.09.05 |