2012-03-30 2 views
3

TDD는 작은 팀에서 최대 4 명까지 소규모 프로젝트와 짧은 프로젝트를 수행 할 수 있습니까? 그게 정말 수익성있는 노력입니까?TDD 및 소규모 팀과의 짧은 프로젝트 단원 테스트?

단위 테스트는 어떻게됩니까? TDD는 단위 테스트를 의미하지만 반대는 없습니다. 합리적인 코드 커버리지가 될 때까지 프로젝트 개발 수명주기 동안 수시로 완료되는 단위 테스팅이 아니 었습니까?

+2

TDD 대 유닛 테스트에 대한 링크보기 : http://stackoverflow.com/questions/1742323/tdd-vs-unit-testing – dexametason

+0

TDD는 설계에만 접근하기 때문에 좋은 설계가 될 수 있지만 다른 접근법 그렇게 할지도 모른다. 단위 테스트는 코드를 일관되고 쉽게 수정할 수있는 방법입니다. –

+0

TDD는 독자적인 단위 테스트를 통해 개별 구성 요소의 논리를 검증 할 때 디자인 결정을 유도해야합니다. –

답변

0

대답은 예입니다! 그리고 다음과 같은 이유로. 자신에게 다음 시나리오를 설명하십시오. 귀사와 귀사의 프로젝트 팀은 훌륭한 애플리케이션을 제작하여 제작에 적용하기로 결정했습니다. 잠시 후 사용자가 다음과 같이 말합니다. 애플리케이션에서 버그를 발견했습니다. 해결할 수 있습니까? 물론 예라고 말하면 사용자가 만족 스럽습니다. 잠시 후에 그는 당신이 문제를 고쳤다는 말을 듣고 다시 돌아 왔지만 지금은 효과가 있었던 것이 더 이상 수리 할 수 ​​없습니까?

TDD를 사용하고 응용 프로그램에 대한 단위 테스트를 수행 한 경우 시나리오가 이와 같지 않을 수 있습니다. 이는 전체 응용 프로그램에 대한 테스트를 수행했기 때문입니다. 버그를 해결 한 후 단위 테스트를 다시 실행하여 "수정 사항"이 응용 프로그램의 다른 것들을 손상시키지 않는지 확인하십시오.

이 답변은 단위 테스트의 사용을 목표로합니다. 다음은 TDD 자체에 대한 설명입니다.

TDD가 당신을 개인으로 만드는 것은 무엇을 다음 (객체, 클래스, 함수 등)에서 코드하려고하는지 생각합니다. 또한 내 코드의 가장자리는 무엇입니까? if/else 문은 내가 무엇을 검사해야 하는지를 필요로합니다. 혼자 또는 20 명으로 구성된 프로젝트 팀에서 일하는 사람이라면 별 문제가되지 않습니다. TDD는 프로젝트의 다른 사람들이 아니라 사고 프로세스입니다.

0

UnitTesting을 수행하는 경우 TDD 채택의 작은 단계 만 수행하십시오. 그러나 당신은 그로부터 훨씬 많은 것을 얻게 될 것입니다.

예 : TDD는 먼저 테스트를 구현한다고 정의합니다. 이는 구현하기 전에 달성하고자하는 목표에 대해 생각한다는 것을 의미합니다. 이로 인해 더 나은 코드가 생성됩니다.

2

나를 위해, 그것은 프로젝트가 작거나 짧은지에 따라 달라지지 않습니다. TDD는 코드를 완벽하게 신뢰하는 일련의 테스트를 신속하게 실행할 수 있어야합니다. TDD에 관해서도 프로젝트에 적합한 디자인을 추진하는 데 많은 도움이되었습니다.

TDD는 테스트를 통과시키는 데 필요한 코드 만 작성하기 때문에 작고 짧은 프로젝트에 가장 적합하다고 주장 할 수 있습니다. 따라서 비용 절감. 그런 다음 나중에 변경 사항을 적용 할 때 테스트 및 코드에 자신감을 갖는 이점이 있습니다.

내가 할 수있는 다음 작은 점은 많은 프로젝트가 작고 짧게 시작한다는 것입니다. 이러한 중간 솔루션은 개발을위한 전략적 플랫폼이되는 방법을 제공합니다 (성공한 경우).

+0

+1. 적어도 프로그래밍 방식으로 코드가 기대하는대로 수행한다는 확신에 TDD가 전적으로 동의합니다. 작은 프로젝트 시작에 대한 좋은 지적! 제가 작업 한 많은 프로젝트들이 버그와 끔찍한 아키텍처로 인해 작아지고 수정되거나 확장되는 절대적인 악몽이었습니다. TDD는 두 가지면에서 도움이됩니다. –

0

TDD 및 단위 테스트는 서로 대체 할 수 없습니다. 모든 프로젝트에서 코드를 테스트해야합니다. 여기에서 단위 테스트 및 통합 및 시스템 테스트를 수행합니다.

그러나 TDD는 개발 모델입니다. 폭포와 다른 개발 방법과 마찬가지로 TDD도 방법입니다. TDD에는 몇 가지 기본 요구 사항이 있으며 요구 사항이 구현되고 작동하는지 확인하기 위해 단위 테스트를 작성합니다. 그러나 단위 테스트를 작성할 때 주요 요구 사항을 달성하려면 더 많은 함수와 클래스를 구현해야한다는 것을 깨닫습니다. 따라서이 단원 테스트는 다른 요구 사항을 명확하게합니다.

응용 프로그램이 실행되고있는 컴퓨터의 이름을 인쇄하는 응용 프로그램을 작성해야한다고 가정합니다. 먼저 단위 테스트를 작성합니다.

[Test] 
public void ProducedMessage_IsCorrect() 
{ 
    AreEqual(BusinessLibrary.ProduceMessage(), System.Environment.MachineName); 
} 

다음 ProduceMessage 함수를 구현해야한다는 것을 알게됩니다. 단위 테스트가 통과하도록 간단하게 구현합니다. 다음과 같이 메소드를 작성하십시오.

public string ProduceMessage() 
{ 
    return "MyComputer"; 
} 

그런 다음 테스트를 실행하고 통과합니다. 코드를 제출하면 팀의 다른 구성원이 코드를 가져옵니다. 테스트를 실행할 때 코드에서 컴퓨터 이름을 하드 코드했기 때문에 테스트가 실패합니다.

팀원 중 일부가 코드를 올바른 형식으로 변경하면 계속 진행됩니다.

TDD 경험이있는 개발자를 선택하는 것이 전부입니다. 적어도 그들 중 일부는 경험 많은 TDD 개발자 여야한다고 생각합니다.

1

최근 Szymon Pobiega의 블로그 게시물 (If you are not doing TDD…)을 읽었습니다. 나는 이것에 대해 살펴보기를 정말로 권장한다. 저는 TDD에 대해 조금 회의적이어서 프로젝트의 성격과는 별도로 프로젝트 안전을위한 궁극적 인 해결책으로 개발 라이프 사이클의 큰 습관에 배치하기 때문입니다. 나는이 조각을 좋아한다 : 당신이 코드의 형태에 대해 절대적으로 아무 생각이 없을 때

TDD가 가장 유용합니다. 이 경우 코드를 해킹하지 않는 것이 더 좋습니다. 수 있습니다. 오히려 한 번에 하나씩 작은 단계를 수행하고 매번 의 결과를 확인하십시오. 이상적으로는 쌍으로하십시오. 각 단계를 통해 에 작성해야 할 테스트를 더 많이 찾을 수 있습니다. 나는 그의 발표에 사용 된 유추 Dan 을 좋아합니다 : 수영과 걷는 것과 같습니다. 1.50m 깊이의 수영장. 당신은 발이 땅에있을 때마다 항상 걸어 다닐 수 있습니다. 즉, 은 위험 할 수 있습니다 (땅에 닿지 않아야 함). 그러나 훨씬 더 빨리 움직일 수 있습니다. TDD는 걷는 것과 같습니다.

그는 Dan North session from NDC 2012을 참조하고 있습니다.