제럴드 와인버그의 고전적인 책 "The Psychology of Computer Programming" 테스트에 대한 좋은 이야기를 많이 가지고있다. 내가 특히 좋아 하나는 제 4 장에"Programming as a Social Activity "는"빌 "자신의 코드를 검토하는 동료를 요청하고 그들은 단지 열세 문에서 열일곱 개 버그를 발견 코드 리뷰는 버그를 찾는 데 도움이되는 추가 눈을 제공합니다. 눈이 많을수록 너무나 미묘한 버그를 발견 할 가능성이 커집니다. Linus와 마찬가지로 "눈알이 충분하면 모든 버그가 얕습니다."테스트는 기본적으로 로봇 눈입니다. 누구나 주간이나 야간에 원하는 시간에 원하는만큼 여러 번 코드를 살펴보고 모든 것이 정결한지 알려줍니다.
처음부터 개발 중이거나 유지 보수 중인지 여부에 따라 테스트 할 수있는 테스트의 수는 충분합니다. 기존 시스템.
처음부터 테스트를 시작할 때 테스트 작성에 모든 시간을 소비하고 코드 작성 기능의 10 %가 철저한 테스트를 거치기 때문에 제공하지 못하게됩니다. 우선 순위 결정이 어느 정도 될 것입니다. 한 가지 예가 개인적인 방법입니다. 개인적인 방법은 어떤 형태 (공개/패키지/보호)로 볼 수있는 코드에 의해 사용되어야하므로 개인적인 방법은 더 눈에 잘 보이는 방법에 대한 테스트의 적용을받는 것으로 간주 될 수 있습니다. 개인 코드에 중요하거나 모호한 동작이나 엣지 케이스가있는 경우 화이트 박스 테스트를 포함시켜야합니다.
테스트를 통해 1) 요구 사항을 이해하고, 2) 테스트 가능성을 코딩하여 올바른 디자인을 고수하고, 3) 기존 코드가 작동을 멈출 때를 파악하는 데 도움이됩니다. 일부 기능에 대한 테스트를 설명 할 수 없다면 필자는 코드를 완벽하게 코드화 할 수있을 정도로 기능을 잘 이해하지 못했을 것입니다. 단위 테스트 코드를 사용하면 수업 자체를 너무 많이하고 '신'객체로 변모시키는 유혹에 굴하지 않고 데이터베이스 연결이나 인스턴스 팩토리와 같은 중요한 것들을 인수로 전달하는 것과 같은 일을해야합니다. 코드를 카나리아라고하면 더 많은 코드를 자유롭게 작성할 수 있습니다. 이전에 통과 한 테스트가 실패하면 두 가지 중 하나를 의미합니다. 코드가 더 이상 기대하지 않았거나 기능 요구 사항이 변경되어 새로운 요구 사항에 맞게 테스트를 간단하게 업데이트해야합니다.
기존 코드로 작업 할 때 알려진 모든 시나리오가 포함되어 있다는 것을 보여줄 수 있어야 다음 변경 요청 또는 버그 수정이있을 때 해당 모듈이없는 모듈을 자유롭게 파고들 수 있습니다. 잔소리하는 걱정, "만약 내가 뭔가를 깨면"작은 수정을 테스트하는 데 더 많은 시간을 소비하게 만드는 코드가 실제로 변경되었습니다.
우리는 당신에게 어렵고 빠른 테스트를 줄 수는 없지만 일정 수준의 보상 범위로 촬영하면 변경 사항을 유지하거나 기능을 추가하는 능력에 대한 자신감이 높아집니다. 감소 된 수익률.
과거 시제에서 '나는 시험 했어'라고 쓰거나 '현재 시제로'나는 모든 것을 시험해 본다 '는 뜻인지 알 수가 없습니다. – ripper234
영어로 죄송합니다. "나는 모든 것을 시험해보고 싶다. "라고 Lars A. Brekken이 말했듯이 우선 순위를 정하는 것이 매우 중요 함 – Jonathan