개발을 하고 있다면 ... 커밋하기 전 유닛테스트가 얼마나 중요한지 .. 당신은 알 것이다
며칠 전, 폴더 네이밍을 변경하면서 너무 바보같이 그 안에서 선언되어있는 파일은 수정하지 않는 .. 정말 기초적이고 바보같은 실수를 저질러버리고 마는데...
다행히 한 줄이었어서 바로 해결하긴 했지만, 실제 운영중인 서비스에 그런 짓을 했다고 생각하면 손이 떨리고 눈물이 나는 것이다 (울지마 어차피 해결해야한다)
python TDD 도입을 위해 가장 많이 사용 하는 것 같은 unittest
와 pytest
를 비교해봤는데, 결론적으로는 pytest
를 사용하려고 한다.
자, 일단 TDD가 뭐냐고?
TDD 란, Test Driven Dvelopment 의 약자로, 테스트 주도적인 개발.. 이라고 생각하면 된다.
비즈니스 코드를 먼저 작성하고 테스트 하는 것이 아니라, 테스트가 중심이 되어 전체 개발 방향을 이끌고 나간다. 라고 생각하자.
wikipedia 에는 TDD란
Test-driven development(TDD) is a software development process relying on software requirements being converted to test cases before software is fully developed, and tracking all software development by repeatedly testing the software against all test cases.
라고 정의하고 있다.
즉, 다시말해
TDD는 소프트웨어 개발 프로세스 중 하나인데, 먼저 요구사항을 검증하는 자동화된 테스트케이스를 먼저 작성하고, 그 테스트케이스를 통과하기위한 코드를 작성한다. 라고 생각하면 된다.
이제 이해가 좀 쉽게 되는가?
자, 그러면 TDD가 이제 뭔지는 알겠는데
어차피 비즈니스 코드를 먼저 작성하고, 테스트 후 에러가 난 부분에 대해서 코드를 수정하는 것과
테스트 코드를 먼저 작성한 뒤 수정과정을 거치고 개발에 들어가는것과 결국 순서의 차이가 아니냐 라는 의문점도 생길 것 같다.
그러면 TDD의 장점을 알아보자.
그럼 무조건 TDD를 도입해야하는 거 아니야?
라고 생각하는 사람도 있을테니 단점도 알려준다.
장기적으로 봤을 때에는 TDD 방식을 도입하는 것이 개발에 있어 전체적인 시간을 축소시키고, 품질 좋은 코드를 생산해낼 수 있는 것이 아닐까한다.
좋은 글이네요. 공유해주셔서 감사합니다.