반응형

 

TDD란?

 

Test-Driven Development(TDD)는 매우 짧은 개발 사이클의 반복에 의존하는 소프트웨어 개발 프로세스이다. 우선 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스를 작성하고 해당 테스트를 통과하는 가장 간단한 코드를 작성하며 상황에 맞게 리팩토링 하는 과정을 거치게 된다. 즉, 테스트가 코드 작성을 주도하는 개발 방식이다.

 

https://builttoadapt.io/why-tdd-489fdcdda05e 

 

Why TDD

Pivot Matthew Parker elaborates on the benefits of practicing test-driven development, and also why you shouldn’t be afraid of refactoring.

builttoadapt.io

 

Add a test

 

테스트 주도형 개발에선 새로운 기능을 추가하기 전 테스트를 먼저 작성한다. 이렇게 테스트를 먼저 작성 한 후 코드를 테스트에 맞게 개발하면 개발자는 요구사항에 보다 집중 할 수 있게 된다. 이러한 방식은 테스트 주도 개발이 주는 이점이다.

 

이러한 개발 방식중 JUnit 테스트라는 것이 있다. 

https://www.crocus.co.kr/1544

 

Android UnitTest, JUnit을 이용한 유닛 테스트

1. JUnit이란? 어느 정도 개발이 진행되면 프로그램에 대한 단위 테스트는 반드시 수행해야 하는데, JUnit은 보이지 않고 숨겨진 단위 테스트를 끌어내어 정형화시켜 단위 테스트를 쉽게 해주는 테스트용 Framewor..

www.crocus.co.kr

 

 

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

 

"TDD는 죽었다" - Rails를 만든 DHH의 글

Test-first fundamentalism(테스트 우선 근본주의)는 마치 금욕을 하라고만 하는 성교육과 같다. 자기 혐오에 빠져있는 사람을 위한 비현실적이고 실효성없는 도덕교육 같은 것이다. 처음부터 이렇게 생각한건 아니다. 내가 처음 TDD를 발견했을때는, 더 나은 소프트웨어...

sangwook.github.io

 

 

 

 

 

 

 

반응형

'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