티스토리 뷰
오늘은..!
많이들 시도하고 싶지만, 시도하기 어려워하는
하지만 매우매우 좋은!!
TDD(Test-driven development)에 대해 정리해보려고 합니다!
🧪 테스트 주도 개발(Unit Test First)
Test-driven development 즉, 테스트가 개발을 주도해간다!
말 뜻 그대로, 매우 짧은 테스트 개발 사이클을 반복하는 소프트웨어 개발 프로세스를 의미합니다!
☝🏻 테스트 진행 과정
이 방법을 고안해낸 Kent Baeck은 TDD가 단순한 설계를 장려하고, 자신감을 불어넣어준다고 말했습니다.
동작하는 깨끗한 코드를 만들 수 있기 때문이라지요!
진행 싸이클
- 실패하는 경우의 테스트를 작성합니다.
- 단순히, 테스트가 통과할 수 있도록 만듭니다.
- 순수하게 코드를 정갈하게 변경합니다.
테스트를 통과하면, 해당 코드는 보증된 코드가 되는 것이에요
기능마다 이를 반복하면, 기능마다 모두 동작이 가능함을 보이는 것이겠죠?
👍🏻 TDD의 장점
큰 단위의 문제를 작은 단위로 나눠서 해결한다.
코드를 기능별로 잘 나누어야지만, 제대로된 테스트를 할 수 있습니다.
지속적인 피드백을 통해 목표를 개선한다.
TDD는 빠르게 실패❌하고 빠르게 피드백💡을 받고 빠르게 개선✅하는 형태를 가집니다.
작은 실패들을 통해, 성공으로 가는 과정이라고 볼 수 있지요!
해당 함수에 대한 스펙 정의 문서역할을 한다.
예를들어, 나눗셈
이라는 함수를 만들면
나누는 수가 0일때 fail
을 나타나게하는 테스트를 만들 수 있겠죠?
이를 통해, 이 함수를 처음보는 사람은 해당 테스트를통해 이 함수에대해 더 빠삭하게 알 수 있을거고요!
테스트를 진행하면, 코드 수정에 자신감이 붙는다.
테스트를 진행하면, 어느부분 때문에 실패했는지를 명확하게 알 수 있을 뿐더러
그리고 이를 수정할 때는 테스트를 통과한 보증된 코드니까 자신감이 붙겠죠?
개발 스펙에 대해 확실하게 이해할 수 있다.
테스트를 진행하기 위해서는, 어떤걸 만들어 낼지에 대한 충분한 이해가 필요해요.
그래서 "내가 어떤 작업을 하고있고, 작업의 결과는 어떻게 되어야 한다"를 명확히 알 수 있게되는 것이죠!
명확하고 구체적인 목표를 가진채로 개발하는 것이니까, 그만큼 코드의 퀄리티도 높아지겠죠~? 😲
😎 마무리
TDD는 Unit Test를 통해 이루어져요!
그래서, 다음 시간에는 Unit Test
에 대해 정리해볼까 합니다✍🏻
이해가 안되는 부분이나, 틀린 부분이 있으면 코멘트를 남겨주세요!
피드백은 정말정말 환영입니다🎉🎉
🙇🏻♂️ Reference
'TDD' 카테고리의 다른 글
[Swift] 테스트 주도 개발 (켄트 백) - 타락한 객체 (0) | 2022.01.27 |
---|---|
[Swift] 테스트 주도 개발 (켄트 백) - 다중 통화를 지원하는 Money 객체 (0) | 2022.01.23 |