코드 검토 중 단위 테스트는 개발 중 단위 테스트를 대체 할 수 없습니다.
당신이 제안하는 것은 직관적으로 많은 의미가 있습니다. 에 대한 리뷰는 무엇입니까? 코드가 좋은지 확인하십시오. 테스트 란 무엇입니까? 코드가 좋은지 확인하십시오. 그렇다면 왜 두 가지를 결합하지 않습니까?
이유는 다음과 같습니다.
테스트중인 코드를 가져 오는 것은 어려운 일입니다. 의도 된 것 중 하나에서 작동 하는 코드 작성 은 하나의 것입니다. 효과적이고 효율적으로 테스트 할 수있는 코드를 작성하는 것도 또 다른 방법입니다. 이제 코드가 "실제 작업"과 "테스트"라는 두 가지 시나리오에서 실행된다는 사실은 훨씬 더 큰 유연성을 요구하고 해당 코드가 의미있는 방식으로 자체적으로 작동 할 수 있어야합니다.
테스트 할 수 있도록 코드를 작성하는 것은 추가 작업과 기술입니다. 테스트 가능성을 염두에두고 작성되지 않았을 때 테스트 가능성에 대한 다른 사람의 코드를 리팩터링 하는 것은 중요한 작업이 될 수 있습니다.
개발자와 검토 자 간의 노력이 중복됩니다. 아마도, 개발자는 이상없이 검토를 위해 자신의 코드를 전달하지 않는 일부 가 작동하고 있다는 자신감의 수준. 그는 이미 코드를 테스트해야합니다. 이제 다양한 수준과 테스트 범위가 있습니다. QA는 개발자 와 검토 자 후에 코드를 테스트합니다 . 그러나 개발자와 검토 자에게 적합하다고 생각되는 범위에 관계없이 개발자는 코드를 해당 수준으로 한 번 테스트하는 방법을 알아낼 수는 없지만 테스트 를 버리고 재현하기가 어려워 검토 자를 가져옵니다. 다시 테스트를 개발이번에는 자동화되고 재현 가능한 것들입니다. 당신은 데있어 모두 한 번 제대로 한 번 잘 - 그들의이 같은 테스트를 작성에 시간을 투자합니다.
검토를 훨씬 더 길고 힘든 단계로 바꾸고 있습니다. 테스트가 검토 프로세스의 주요 부분 인 경우 일부 테스트가 실패하면 어떻게됩니까 ? 검토자가 테스트를 모두 실행해야하므로 코드도 디버깅해야합니까? 아니면 한 번의 필기 시험과 다른 시험에 합격 할 수 있는가?
때로는 서로 직교하는 전체 테스트를 작성할 수 있으므로 탁구를 불필요합니다. Reviewer는 12 개의 테스트를 작성하고 그 중 절반은 실패하고 개발자는 버그를 수정하고 모든 테스트는 계속 유효합니다. 그러나 ... 많은 시간에 차단기 버그, 재 설계 및 API 변경이 필요한 버그 등이 있습니다. 검토 자와 개발자간에 테스트를 전달하는 책임을 맡고 있다면 실제로는 검토 단계에 있지 않습니다. 아직 개발 중입니다.
테스트를 작성해야한다고해서 더 철저한 검토가 이루어지지는 않습니다. 기본적으로 더 깊게 갈수록 더 많은 테스트를 작성 해야하며 시스템에 깊숙히 들어가야하는 어려운 테스트 일 것입니다 .
인센티브가있는 테스트를 작성하는 개발자와 비교해보십시오. 중요한 테스트를 작성하지 않으면 검토자가이를 검토에서 지적합니다.
리뷰어 조차도 코드의 철저한 테스트 를 거쳐야하는 경우 시스템에 대해 더 잘 이해할 것입니다. 그러면 심층 테스트 작성을 중단하고 코드 검토를 확인하는 시간을 스스로 결정할 필요가있는 경우 시스템을 더 잘 이해할 수 있습니다.
개발자가 단위 테스트를 작성하지 않으면 검토 자도 작성하지 않습니다. 테스트를 일반적인 관행으로 채택하는 데 많은 장애물이 있습니다. 압력이 너무 높을 수 있으며 코드 기반을 테스트하기가 어렵습니다. 어쩌면 당신은 테스트 경험이 많지 않고 학습 곡선을 감당할 수 없다고 생각할 것입니다. 어쩌면 테스트를 작성하는 사람들에게 위협 메모를 보내는 도끼 살인자가있을 수 있습니다. 몰라요!
그러나 원인이 무엇이든 상관없이 검토 자와 개발자에게 똑같이 적용되는 것이 좋습니다. 팀이 스트레스를받는 경우 검토자는 개발자보다 더 많은 시간을 갖지 못합니다 (그렇다면 개발자가 스트레스를받지 않도록 작업을 재배포하십시오 ). 아무도 단위 테스트를 잘 작성하는 방법을 모른다면, 검토자는 아마 그렇게하지 않을 것입니다 (그렇다면 그녀는 앉아서 팀원들에게 가르쳐야합니다 ).
이 제안은 한 동료에서 다른 동료에게 벅을 전달하려는 것처럼 들립니다. 그리고 한 사람이 테스트를 수행 할 수있는 유일한 사람이고 다른 사람이 할 수없는 상황을 만드는 것은 실제로 어렵고 건강하지 않기 때문에 가장 잘 작동하는 방법을 보지 못하고 있습니다. 모든 테스트.
무엇 합니까 작업 것은 물론 검토 커버 테스트를 가진. 개발자가 이미 10 개의 테스트를 작성했다면 개발자가 작성하지 않은 경우보다 검토자가 다른 10 개를 제안하는 데 도움이 될 수 있습니다.
그리고 코너 케이스 테스트가 중요한 작업이라면, 팀 전체에 더 널리 배포하는 것이 합리적 일 수 있습니다. ** 코드를 처음에 테스트 할 수있게되면 더 많은 테스트를 작성 하는 것이 훨씬 쉬워집니다. **
검토는 코너 사건 을 발견 하기에 좋은 시간 입니다. 그리고 리뷰어가 뛰어 들어 코너 케이스에 대한 테스트를 작성할 수 있다면, 이봐-더 나아! 그러나 일반적으로, 리뷰어가 개발자 가 생각하기에 좋지 않은 것으로 테스트를 작성할 수 있다고 가정합니다 .