나는 TDD 접근 방식에 익숙하지 않으며 첫 번째 실험에서 1 줄의 기능 코드를 작성한다는 것은 2-3 줄의 테스트 코드를 작성한다는 것을 의미합니다. 따라서 1000 LOC를 작성하려는 경우 테스트를 포함한 전체 코드베이스는 ~ 3500 LOC와 같습니다.
이것이 정상으로 간주됩니까? 작성한 코드의 비율은 무엇입니까?
나는 TDD 접근 방식에 익숙하지 않으며 첫 번째 실험에서 1 줄의 기능 코드를 작성한다는 것은 2-3 줄의 테스트 코드를 작성한다는 것을 의미합니다. 따라서 1000 LOC를 작성하려는 경우 테스트를 포함한 전체 코드베이스는 ~ 3500 LOC와 같습니다.
이것이 정상으로 간주됩니까? 작성한 코드의 비율은 무엇입니까?
답변:
TDD에서는 1 : 3이 정상입니다.
내 경험과 다른 인용에서도 기억합니다.
다른 코딩 스타일과 언어에 따라 변형이 있습니다. 그러나 사용하는 언어에 관계없이 가장 큰 변형이 있습니다.
로버트 마틴은 한 번 말했다 :
"테스트가 구체화 될수록 코드가보다 포괄적이됩니다."
그렇게 생각했습니다. 더 구체적인 테스트는 더 많은 테스트 코드를 의미합니다. 보다 일반적인 생산 코드는 코드가 적기 때문에 코드가 발전함에 따라 테스트 / 코드 비율이 높아져야합니다.
그러나 잠깐, 그것도 좋지 않습니다. 예를 들어 특정 알고리즘을 정의 할 때와 같은 특정 경우에는 몇 개의 "if", 잠시 동안 그리고 2-3 회 재귀를 포함하는 6-10 줄의 코드 만있을 수 있습니다. 그 코드에는 아마도 100 줄 이상의 테스트 코드가있을 것입니다.
실제 프로젝트에서 단지 몇 개의 알고리즘보다 큰 테스트 / 코드 비율은 1 : 1과 2 : 1 사이 여야합니다. 2 : 1을 초과하면 리팩토링 또는 삭제해야하는 테스트 (또는 테스트하기 어려운 코드)가 있습니다. 생산 코드와 동일한 테스트에 항상주의를 기울여야합니다.
어쨌든 귀하의 질문에 가장 적합한 답변은 "Cyclomatic Complexity" 입니다. 분석법의 순환 복잡성이 높을수록 모든 경우를 다루기 위해 기하 급수적으로 더 많은 테스트를 작성해야합니다.
방법의 크기에 따라 비율이 달라집니다. 분석법의 크기는 프로그래밍 스타일, 언어 및 문제 영역에 따라 다릅니다.
방법이 짧으면 3 : 1이 합리적입니다. 방법이 길면 3 : 1이 높은 편입니다.
따라서 귀하의 질문에 대답하려면 달려 있습니다. :-)
내 테스트 코드의 크기는 실제 코드의 절반 정도입니다. 그렇지 않으면 테스트가 너무 복잡하거나 코드를 테스트하기가 너무 어렵거나 코드가 너무 조밀하거나 복잡하다는 것을 나타냅니다.
또는 단순히 너무 많은 테스트를하고 있고, 수익을 줄이는 데 시간을 낭비하고 있습니다.
"단위 테스트가 부적절하거나 불필요 할 때" 도 참조하십시오.