2010-08-13 7 views
6

우리는 애플리케이션의 테스트 코드 적용 범위를 추적하기 위해 Part Cover를 사용하기 시작했습니다. IMO는 테스트에 대한 전반적인 점수를 얻고 테스트를 통해 조금 게으른 테스트 영역을 강조 표시하기위한 훌륭한 도구이지만, 오늘 테스트를 작성하여 실제로 유용한 것은 테스트하지 않았다는 것을 깨달았습니다. 내 취재!테스트 코드 커버리지 툴의 가치

TDD 인 경우 테스트를 통과하는 코드 만 작성하고 테스트는 응용 프로그램에 필요한 모든 기능을 풍부하게 설명합니다. 따라서이 시나리오에서 여전히 범위 분석을하는 것이 매우 중요합니다.

범위 도구를 사용하는 사람들에게 종교적으로 100 % 적용 범위를 유지하는 방법을 알고 이 아닌 테스트를 작성하는 방법을 찾지 만 범위를 계속 유지해야합니다. ? 이건 이 아닌가요??

답변

8

커버리지 도구는 이 아닌이 무엇인지 테스트 한 후에 사용해야합니다. 여러분이 지적한 시나리오는 테스트를 거친 코드를 보여줄 수없는 이유를 설명합니다. 테스트를 작성하면 100 % 커버리지가 무의미합니다 (의심 스러우며). 게임을하기가 너무 쉬워서 이것이 유용한 통계는 아닙니다. 나는 100 % 또는 그 근처에서 머물려고 노력했지만, 나는 당신이 한 것과 같은 결론에 도달했다. 나는 숫자가 옳았 기 때문에 아무 것도 테스트하지 않은 테스트를 작성했다. 이 도구를 사용하여 아직 테스트하지 않은 부분을 찾아내어 좋은 테스트를 작성하거나 코드의 해당 부분이 중요하지 않다는 사실을 받아들입니다.

1

좋은 합리화;) 그러나 우리는 결국 인간이며, 밤에는 잘 못된 방법이나 경로가 생산에 들어간 적이 없다는 것을 알고 더 잘 수면을 취합니다.

2

순수한 TDD를 수행하는 경우 테스트에서 코드를 작성하기 때문에 코드 적용 범위가 줄어들 기 때문에 어쨌든 100 %가되어야합니다. 하지만 순전히 그렇게하는 것은 매우 드뭅니다 (때때로 불가능합니다).

순수 TDD를 쓰지 않는다면 100 %는 꽤 비현실적인 목표입니다. 나는 대개 Roy Osherove의 방법을 시도하고 논리 (예 : 직선 게터/세터 또는 패스 스루가 아닌) 만 사용하여 테스트합니다. 하지만 그보다 높을수록 항상 좋습니다. 그리고 그 범위를 넓히기 위해 거기에 몇 가지 테스트를 추가하는 것이 유혹적 일 수 있습니다 ..!

7

나는 악마의 옹호자 역할을 할 것입니다. "유용성을 테스트하지 못했습니다"라는 테스트를 작성한 것이 아니라면 그 코드가 왜 있었습니까? 나에게 이것은 일부 주요 코드를 제거하는 논증이 될 것이다.

또는 유용한 것을 수행하는 테스트를 개발하십시오. 예를 들어, setter 및 getter를 테스트하는 것은 유용하지 않다고 생각할 수 있습니다. 그러나 나도 마찬가지입니다. 그러나 어떤 다른 것을 테스트하는 동안이 방법들은 을 시험해야합니다.. 그렇지 않으면 다시, 왜 거기에 있습니까?

그러나 범위 확장 도구가 그 자체로 끝나면 안된다는 좋은 지적을 제기합니다. 특히 어떤 코드를 작성해야 하는지를 알 수 없으므로 특히 그렇습니다.

나는 여기에서 더 자세히 설명했다 : http://www.kdgregory.com/index.php?page=junit.coverage

+1

좋은 블로그 게시물. 부끄러운 진실은 내가 일부 POCO 클래스에서 getter/setters를 excersising했다는 것입니다. 당신이 말한 것처럼 이것이 의미있는 시험에 의해 운동을하지 않았다는 것이 밝혀졌습니다. 그 이유는 테스트하기가 너무 어렵습니다. 이 오래된 코드는 모든 것의 덩어리에 있었고 너무 강하게 결합되었습니다. 진짜 해결책은 약간의 리팩토링 세션입니다. –

관련 문제