TDD란?
Test-Driven Development(TDD)는 매우 짧은 개발 사이클의 반복에 의존하는 소프트웨어 개발 프로세스이다. 우선 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스를 작성하고 해당 테스트를 통과하는 가장 간단한 코드를 작성하며 상황에 맞게 리팩토링 하는 과정을 거치게 된다. 즉, 테스트가 코드 작성을 주도하는 개발 방식이다.
https://builttoadapt.io/why-tdd-489fdcdda05e
Add a test
테스트 주도형 개발에선 새로운 기능을 추가하기 전 테스트를 먼저 작성한다. 이렇게 테스트를 먼저 작성 한 후 코드를 테스트에 맞게 개발하면 개발자는 요구사항에 보다 집중 할 수 있게 된다. 이러한 방식은 테스트 주도 개발이 주는 이점이다.
이러한 개발 방식중 JUnit 테스트라는 것이 있다.
Run all tests and see if new one fails
어떤 새로운 기능을 추가하면 잘 작동하던 기능이 제대로 작동하지 않는 경우가 생길 수 있다. 이러한 것은 개발자가 인지하지 못하는 경우도 생길 수 있는데 테스트 코드를 작성해두고 새로운 기능이 추가될 때 마다 이전의 테스트 코드와 새로운 기능이 추가된 테스트 코드를 함께 테스트해보며 기존 기능들이 잘 작동하는지 알 수 있다.
Refactor code
프로그래머가 코딩을 하고 새로운 기능이 계속 추가되면서 모든 부분을 신경쓰면서 코딩한다 해도 버그는 발견 될 수 있다.
이때 버그픽스를 하기위해 코드가 점차 늘어나게 되고 자연스럽게 코드가 지저분해 질 수 있다.
하지만 TDD를 이용하면 테스트에 맞게 코드를 작성하기 때문에 리팩토링 속도가 향상되며 코드의 퀄리티도 향상된다.
Disadvantages
테스트 코드까지 제작해야 하는 방식이기 때문에 빠른 생산이 요구되는 시점에서는 TDD가 걸림돌이 될 수 있다.
TDD라는 것을 적용하기 위해서는 어떻게 테스트해야할 지, 어떤 부분을 테스트해야할 지 등등 다양한 고려사항이 있기 때문에 진입장벽이 존재한다.
TDD를 통해 구현하더라도 버그는 존재 할 수 있다. 해당 테스트 케이스에서만 버그가 존재하지 않도록 퀄리티있는 코드이기 때문이다.
애초에 100% Coverage와 100% Integrity TDD는 존재하지 않는다.
https://sangwook.github.io/2014/04/25/tdd-is-dead-long-live-testing.html
'Programing Etc. > Coding Tip' 카테고리의 다른 글
Boolean 변수명 짓는 팁 (2) | 2020.01.13 |
---|---|
리팩토링 원칙 (0) | 2018.11.27 |
Error C4996 해결법 (1) | 2016.03.25 |
추가적인 참고사항 (0) | 2015.03.08 |
변수를 효율적으로 짓는 법 (0) | 2015.03.08 |