코드를 삭제하면 버그가 해결되는지 테스트하기 위해 테스트를 작성해야합니까?


14

때때로 버그를 수정하려면 코드 섹션을 삭제 해야하는 상황에 처하게 됩니다. TDD 순수 주의자는 실패한 테스트 작성, 코드 삭제 및 테스트 통과 관찰을 옹호합니다.

이제 일부 코드가 제거되었다는 테스트를받는 것이 정말 이상해 보입니다. 물론, 아무도 소스 제어를 파고 그 코드를 다시 넣지 않을 것이라고 생각하지만 그만한 가치가 있습니까? 그것이 가치가 있다면, 추가 된 코드에 대한 테스트를 작성하는 것보다 확실히 가치가없는 것 같습니다 .


8
나는 어떤 회귀 테스트에 관계없이 버그가 수정 된 방법의 유용하다고 생각
이스마일 바다 위

1
테스트는 코드가 제거되었다고 주장하지 않는다 – 테스트는 버그가 수정되었다고 주장한다.
user253751

답변:


50

당신은 그것을 잘못보고 있습니다. 테스트는 코드가 제거되었다고 주장 하지 않습니다 . 테스트 특정 기능을 확인합니다.

테스트는 코드를 전달하는 데 필요한 코드 양에 대해서는 신경 쓰지 않으며 일부 코드를 제거했음을 인식하지도 않습니다. 이러한 테스트의 가치는 버그로 인해 생성 한 다른 테스트와 매우 동일합니다. 테스트가 통과 될 때 버그가 없을 것이라는 확신이 있고 빌드 프로세스에 테스트를 통합하면 버그가 발생할 것입니다. 다시 소개되지 않을 가능성이 높습니다.

아직 TDD 관점에서 그것을 보는 또 다른 방법은 다음과 같습니다 당신이 코드를 수정 버그 및 삭제하는 것을 알게되면 다음 테스트를 작성할지 여부를 궁금해을 이미 TDD의 잘못을했다. 버그 작업을 시작한 후에는 먼저 실패하여 버그가 있는지 확인하는 테스트를 작성 해야합니다 . 그 후에 만 ​​코드를 제거해야 할 수도있는 실제 버그를 수정하고 테스트를 통과하십시오. 당신이 묻는 질문은 그런 식으로도 일어나지 않습니다.


3
+1이지만 다음과 같은 상황을 상상할 수 있습니다. 제거 된 코드에는 문제 도메인을 올바르게 이해하지 못하는 사람이 추가 한 터무니없는 기능이 포함되어 있습니다. 이제 코드 검토 중에 다른 개발자가 전체 부분이 실제로 말도 안되고 코드가 제거된다는 것을 알게되었습니다. 그런 말도 안되는 행동에 대해 많은 테스트를하면 테스트 스위트가 부풀려 질 수 있습니다.
Doc Brown

2
분명히 제거 된 기능이 일부 입력 / 출력 오류를 처리했습니다. 분명히 누군가가 같은 방식으로 문제를 오해 할 수도 있습니다. 테스트 스위트 팽창을 두려워한다면 TDD가 당신을위한 것이라고 생각하지 않습니다. 어쨌든 시험 복 팽창이란 무엇입니까?
Dorus

3
@DocBrown : TDD를 수행하는 경우 부조리 한 기능 이 필요한 테스트가 있어야 합니다. 그렇지 않으면 처음에는 해당 코드를 작성할 수 없었습니다! 테스트 통과를 위해 절대 최소량의 코드 만 작성할 수 있습니다. 이 경우 없는 이러한 테스트, 다음 코드는 처음부터 작성되지 말았어야 그것은 단지 삭제 될 수 있습니다. 이 경우 입니다 테스트가 힘이 터무니없는 행동이, 그 시험이 제거되어야한다는 것을, 그리고 지금 우리는 내가 전에 설명한 것과 같은 경우에 있습니다 : 테스트가 사라 코드를 삭제합니다.
Jörg W Mittag

두 경우 모두 테스트 스위트에 테스트를 추가하지 않으며 두 번째 경우에는 테스트를 제거 할 수도 있습니다. 그러나 테스트가 실제로 의미가 있음이 밝혀지면 결국 기능이 그렇게 불분명하지 않았습니다.
Jörg W Mittag
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.