TDD는 작은 팀에서 최대 4 명까지 소규모 프로젝트와 짧은 프로젝트를 수행 할 수 있습니까? 그게 정말 수익성있는 노력입니까?TDD 및 소규모 팀과의 짧은 프로젝트 단원 테스트?
단위 테스트는 어떻게됩니까? TDD는 단위 테스트를 의미하지만 반대는 없습니다. 합리적인 코드 커버리지가 될 때까지 프로젝트 개발 수명주기 동안 수시로 완료되는 단위 테스팅이 아니 었습니까?
TDD는 작은 팀에서 최대 4 명까지 소규모 프로젝트와 짧은 프로젝트를 수행 할 수 있습니까? 그게 정말 수익성있는 노력입니까?TDD 및 소규모 팀과의 짧은 프로젝트 단원 테스트?
단위 테스트는 어떻게됩니까? TDD는 단위 테스트를 의미하지만 반대는 없습니다. 합리적인 코드 커버리지가 될 때까지 프로젝트 개발 수명주기 동안 수시로 완료되는 단위 테스팅이 아니 었습니까?
대답은 예입니다! 그리고 다음과 같은 이유로. 자신에게 다음 시나리오를 설명하십시오. 귀사와 귀사의 프로젝트 팀은 훌륭한 애플리케이션을 제작하여 제작에 적용하기로 결정했습니다. 잠시 후 사용자가 다음과 같이 말합니다. 애플리케이션에서 버그를 발견했습니다. 해결할 수 있습니까? 물론 예라고 말하면 사용자가 만족 스럽습니다. 잠시 후에 그는 당신이 문제를 고쳤다는 말을 듣고 다시 돌아 왔지만 지금은 효과가 있었던 것이 더 이상 수리 할 수 없습니까?
TDD를 사용하고 응용 프로그램에 대한 단위 테스트를 수행 한 경우 시나리오가 이와 같지 않을 수 있습니다. 이는 전체 응용 프로그램에 대한 테스트를 수행했기 때문입니다. 버그를 해결 한 후 단위 테스트를 다시 실행하여 "수정 사항"이 응용 프로그램의 다른 것들을 손상시키지 않는지 확인하십시오.
이 답변은 단위 테스트의 사용을 목표로합니다. 다음은 TDD 자체에 대한 설명입니다.
TDD가 당신을 개인으로 만드는 것은 무엇을 다음 (객체, 클래스, 함수 등)에서 코드하려고하는지 생각합니다. 또한 내 코드의 가장자리는 무엇입니까? if/else 문은 내가 무엇을 검사해야 하는지를 필요로합니다. 혼자 또는 20 명으로 구성된 프로젝트 팀에서 일하는 사람이라면 별 문제가되지 않습니다. TDD는 프로젝트의 다른 사람들이 아니라 사고 프로세스입니다.
UnitTesting을 수행하는 경우 TDD 채택의 작은 단계 만 수행하십시오. 그러나 당신은 그로부터 훨씬 많은 것을 얻게 될 것입니다.
예 : TDD는 먼저 테스트를 구현한다고 정의합니다. 이는 구현하기 전에 달성하고자하는 목표에 대해 생각한다는 것을 의미합니다. 이로 인해 더 나은 코드가 생성됩니다.
나를 위해, 그것은 프로젝트가 작거나 짧은지에 따라 달라지지 않습니다. TDD는 코드를 완벽하게 신뢰하는 일련의 테스트를 신속하게 실행할 수 있어야합니다. TDD에 관해서도 프로젝트에 적합한 디자인을 추진하는 데 많은 도움이되었습니다.
TDD는 테스트를 통과시키는 데 필요한 코드 만 작성하기 때문에 작고 짧은 프로젝트에 가장 적합하다고 주장 할 수 있습니다. 따라서 비용 절감. 그런 다음 나중에 변경 사항을 적용 할 때 테스트 및 코드에 자신감을 갖는 이점이 있습니다.
내가 할 수있는 다음 작은 점은 많은 프로젝트가 작고 짧게 시작한다는 것입니다. 이러한 중간 솔루션은 개발을위한 전략적 플랫폼이되는 방법을 제공합니다 (성공한 경우).
+1. 적어도 프로그래밍 방식으로 코드가 기대하는대로 수행한다는 확신에 TDD가 전적으로 동의합니다. 작은 프로젝트 시작에 대한 좋은 지적! 제가 작업 한 많은 프로젝트들이 버그와 끔찍한 아키텍처로 인해 작아지고 수정되거나 확장되는 절대적인 악몽이었습니다. TDD는 두 가지면에서 도움이됩니다. –
TDD 및 단위 테스트는 서로 대체 할 수 없습니다. 모든 프로젝트에서 코드를 테스트해야합니다. 여기에서 단위 테스트 및 통합 및 시스템 테스트를 수행합니다.
그러나 TDD는 개발 모델입니다. 폭포와 다른 개발 방법과 마찬가지로 TDD도 방법입니다. TDD에는 몇 가지 기본 요구 사항이 있으며 요구 사항이 구현되고 작동하는지 확인하기 위해 단위 테스트를 작성합니다. 그러나 단위 테스트를 작성할 때 주요 요구 사항을 달성하려면 더 많은 함수와 클래스를 구현해야한다는 것을 깨닫습니다. 따라서이 단원 테스트는 다른 요구 사항을 명확하게합니다.
응용 프로그램이 실행되고있는 컴퓨터의 이름을 인쇄하는 응용 프로그램을 작성해야한다고 가정합니다. 먼저 단위 테스트를 작성합니다.
[Test]
public void ProducedMessage_IsCorrect()
{
AreEqual(BusinessLibrary.ProduceMessage(), System.Environment.MachineName);
}
다음 ProduceMessage 함수를 구현해야한다는 것을 알게됩니다. 단위 테스트가 통과하도록 간단하게 구현합니다. 다음과 같이 메소드를 작성하십시오.
public string ProduceMessage()
{
return "MyComputer";
}
그런 다음 테스트를 실행하고 통과합니다. 코드를 제출하면 팀의 다른 구성원이 코드를 가져옵니다. 테스트를 실행할 때 코드에서 컴퓨터 이름을 하드 코드했기 때문에 테스트가 실패합니다.
팀원 중 일부가 코드를 올바른 형식으로 변경하면 계속 진행됩니다.
TDD 경험이있는 개발자를 선택하는 것이 전부입니다. 적어도 그들 중 일부는 경험 많은 TDD 개발자 여야한다고 생각합니다.
최근 Szymon Pobiega의 블로그 게시물 (If you are not doing TDD…)을 읽었습니다. 나는 이것에 대해 살펴보기를 정말로 권장한다. 저는 TDD에 대해 조금 회의적이어서 프로젝트의 성격과는 별도로 프로젝트 안전을위한 궁극적 인 해결책으로 개발 라이프 사이클의 큰 습관에 배치하기 때문입니다. 나는이 조각을 좋아한다 : 당신이 코드의 형태에 대해 절대적으로 아무 생각이 없을 때
TDD가 가장 유용합니다. 이 경우 코드를 해킹하지 않는 것이 더 좋습니다. 수 있습니다. 오히려 한 번에 하나씩 작은 단계를 수행하고 매번 의 결과를 확인하십시오. 이상적으로는 쌍으로하십시오. 각 단계를 통해 에 작성해야 할 테스트를 더 많이 찾을 수 있습니다. 나는 그의 발표에 사용 된 유추 Dan 을 좋아합니다 : 수영과 걷는 것과 같습니다. 1.50m 깊이의 수영장. 당신은 발이 땅에있을 때마다 항상 걸어 다닐 수 있습니다. 즉, 은 위험 할 수 있습니다 (땅에 닿지 않아야 함). 그러나 훨씬 더 빨리 움직일 수 있습니다. TDD는 걷는 것과 같습니다.
그는 Dan North session from NDC 2012을 참조하고 있습니다.
TDD 대 유닛 테스트에 대한 링크보기 : http://stackoverflow.com/questions/1742323/tdd-vs-unit-testing – dexametason
TDD는 설계에만 접근하기 때문에 좋은 설계가 될 수 있지만 다른 접근법 그렇게 할지도 모른다. 단위 테스트는 코드를 일관되고 쉽게 수정할 수있는 방법입니다. –
TDD는 독자적인 단위 테스트를 통해 개별 구성 요소의 논리를 검증 할 때 디자인 결정을 유도해야합니다. –