testing 커버리지 테스트 기반 개발을 연습해야 하는 이유는 과 어떻게 시작해야 합니까?




자바스크립트 tdd (5)

은혜

  1. 코드를 분류하는 방법을 알아 냈습니다.
  2. 코드에서 수행 할 작업을 정확히 파악할 수 있습니다.
  3. 리팩토링이 어떤 일을 저지를지라도 어떻게 행동해야하는지 알 수 있습니다.
  4. 코드가 항상 무엇을해야하는지 알고 있는지 확인하는 습관을 갖습니다.

시작하기

그냥 해. 원하는 작업에 대한 테스트 사례를 작성한 다음 테스트를 통과해야하는 코드를 작성합니다. 테스트를 통과하면 코드가 항상 실패하는 사례 (예 : 2 + 2가 5와 같지 않아야 함)로 이동할 수 있습니다.

모든 테스트가 끝나면 원하는 비즈니스 수행을위한 실제 비즈니스 로직을 작성하십시오.

처음부터 시작한다면 사용하기 쉬운 훌륭한 테스트 스위트를 찾으십시오. 나는 PHP를 좋아해 PHPUnit이나 SimpleTest가 잘 작동한다. 거의 모든 인기있는 언어에는 테스트를 빌드하고 자동화하는 데 도움이되는 xUnit 테스트 스위트가 있습니다.

수많은 사람들이 코드 작성을 시작하기 전에 코드 테스트를 작성하는 것에 대해 이야기합니다. 이 연습은 Test Driven Development 또는 TDD라고도 알려져 있습니다. 이런 식으로 소프트웨어를 작성하면 어떤 이점이 있습니까? 이 연습을 시작하려면 어떻게해야합니까?


혜택 부분은 최근 어디서부터 시작해야할지에 관해서 다루었습니다 ... 너무 적은 미지가 없으므로 위험이 낮아지는 작은 기업 시스템에서. 테스트 프레임 워크 (NUnit과 같은)를 아직 모르는 경우이를 배우십시오. 그렇지 않으면 첫 번째 테스트를 작성하여 시작 :)


애자 일이나 폭포 환경에서 일할 수도 있습니다. 어쩌면 당신은 수년간의 노력을 통해 전투 테스트를 거친 잘 정의 된 절차를 가졌을 것인가 아니면 스스로 시작했을 것입니다. 상황이 어떠 했든 상관없이 다음과 같은 통증, 문제 또는 실패한 배달 원인에 대해 적어도 하나 이상은 직면했을 가능성이 큽니다.

  • 팀의 일부가 요구 사항, 사양 또는 사용자 스토리를 작성하는 동안 루프에서 빠져 나옵니다.
  • 대부분은 아니지만 대부분의 테스트가 수동이거나 전혀 테스트가 없습니다.
  • 자동 테스트가 있어도 실제 문제는 감지하지 못합니다.
  • 자동화 된 테스트는 프로젝트에 실제 가치를 제공하기에는 너무 늦었을 때 작성되고 실행됩니다.
  • 테스트에 시간을 할애하는 것보다 항상 더 긴급한 것이 있습니다.
  • 팀은 테스트, 개발 및 기능 분석 부서로 나뉘며 종종 동기화되지 않습니다.
  • 무언가가 망가질 것이라는 두려움 때문에 코드를 리팩터링 할 수 없다.
  • 유지 보수 비용이 너무 높습니다.
  • 출시 시간이 너무 깁니다.
  • 클라이언트는 전달 된 내용이 요청한 내용이라고 생각하지 않습니다.
  • 문서가 최신이 아닙니다.
  • 결과를 알 수 없으므로 프로덕션에 배포하는 것을 두려워합니다.
  • 회귀 테스트를 실행하는 데 너무 오래 걸리기 때문에 프로덕션에 배포 할 수없는 경우가 많습니다.
  • 팀은 어떤 방법이나 수업이 무엇인지 알아 내려고 너무 많은 시간을 보내고 있습니다.

테스트 주도 개발은 이러한 모든 문제를 마술처럼 해결하지 못합니다. 대신, 그것은 우리를 해결책으로 이끌고 있습니다. 은색 글 머리 기호는 없지만 많은 수준에서 차이를 만들 수있는 개발 연습이 하나 있다면 TDD입니다. 테스트 중심 개발은 출시 시간을 단축하고 리팩토링을 쉽게하며 더 나은 디자인을 만드는 데 도움이됩니다. 직접 결합하는 것의 꼭대기에, TDD는 많은 다른 관례 (그것의 한개 인 지속적인 납품 인 것)를위한 전제 조건이다. 더 나은 디자인, 잘 쓰여진 코드, 출시 시간 단축, 최신 문서 및 견고한 테스트 커버리지는 TDD를 적용하여 얻을 수있는 결과 중 일부입니다.


제 생각에 가장 큰 단 하나는 코드가 예상 한대로 작동하는지 명확하게 볼 수 있다는 것입니다. 이것은 분명해 보일지 모르겠지만, 과거에 발견 한 것처럼 원래 목표에서 벗어나기가 쉽습니다.






tdd