훌륭한 개발자는 코드를 테스트해야 한다는 것을 알고 있습니다. 하지만 테스트를 건너뛰거나, 서두르거나, 시작하지 않는 경우가 너무 많습니다. 사람들이 빠지는 것을 본 몇 가지 정말 일반적인 함정이 있으며 매번 테스트하려는 동기를 죽일 것입니다.
1. RSpec을 사용해야 합니까? 오이? 카피바라? 미니테스트?
새 프로젝트를 시작할 때 방법 최고의 도구를 선택하는 데 많은 시간을 할애하기가 너무 쉽습니다. 이런 종류의 미루는 것은 어디부터 시작해야 할지 모른다는 사실을 숨깁니다. , 그리고 도구를 선택할 때까지 느끼 실제로 존재하지 않는 생산적인 생산적입니다.
대신 가장 잘 알고 있는 스택을 선택하십시오. 특정 테스트 스택에 대한 경험이 없다면 기본적으로 Rails가 제공하는 것으로 시작하십시오. 나중에 언제든지 추가할 수 있습니다. 새로운 도구를 시도하는 데는 아무런 문제가 없지만 많이 프로젝트와 워크플로에 대해 더 잘 알게 되면 시간이 지남에 따라 소개하는 것이 좋습니다.
2. 단위 테스트부터 시작합니까? 기능 테스트? 통합 테스트?
프로젝트를 시작할 때 어떤 기능이나 화면을 먼저 구축해야 하는지에 대한 아이디어가 있어야 합니다. 이것은 시작하기에 좋은 장소입니다! 기능 목록에서 첫 번째 항목을 선택하고 이에 대한 실패한 통합 테스트를 작성하십시오. 이것은 어떤 종류의 컨트롤러와 경로가 누락되었는지 알려줄 것입니다. 즉, 실패한 기능 테스트를 작성해야 함을 의미합니다. 컨트롤러는 작업을 수행하기 위해 데이터와 논리가 필요하므로 다음에 단위 테스트와 모델을 작성합니다. 그런 다음 단위 테스트를 통과하면 기능 테스트도 통과해야 하고 통합 테스트도 통과해야 합니다. 이제 다음 기능으로 이동할 수 있습니다.
항상 다음 단계가 정의된 테스트 프로세스가 있다면 동기 부여를 유지하는 것이 훨씬 쉽습니다. 결정을 내릴 필요가 없다면 미루는 일이 조금씩 생길 수 있습니다.
3. 이 네트워크 코드, 명령줄 유틸리티 또는 레이크 작업을 테스트하는 방법을 모르겠습니다!
여기서 가장 쉬운 일은 테스트하기 어려운 파일이나 클래스에서 테스트하기 쉬운 새 객체로 많은 코드를 옮기는 것입니다. 그렇게 하면 테스트하기 어려운 것이 매개변수를 생성하고 새 개체에 전달합니다.
물론, 당신은 아직 테스트하기 어려운 원본을 가지고 있습니다. 하지만 이제 코드 몇 줄이면 더 쉽게 스텁하거나 가짜로 만들 수 있습니다.
4. "프로젝트가 거의 완료되었습니다. 이제 테스트를 작성하기만 하면 됩니다!"
내가 만난 모든 개발자는 갈망합니다. 배송 코드. 테스트가 배송 전에 마지막으로 하는 일이라면 코드가 제대로 작동하는지 확신하는 데 필요한 최소한의 테스트를 작성하게 될 것입니다. 이 습관에 빠지면 테스트가 도움이 되기보다는 성가시게 느껴지기 시작하고 테스트를 작성하도록 동기를 부여하는 것이 훨씬 더 어려워질 것입니다.
TDD에서 내가 가장 좋아하는 점 중 하나는 테스트와 디자인 및 코딩을 혼합한다는 것입니다. 즉, 테스트를 다음과 같이 코딩을 훨씬 더 재미있게 만듭니다. 테스트를 많이 이전).
5. 내가 잘못하고 있다면?
Ruby 커뮤니티는 코드 품질, 단위 테스트 및 객체 지향 설계 원칙을 실제로 추진하는 것으로 유명합니다. 이것은 좋은 일입니다! 불행히도 첫 번째 시도에서 100% 테스트 적용 범위로 완벽한 코드를 제공해야 한다는 엄청난 압박감을 느끼는 것이 일반적이라는 의미입니다.
이것은 다른 사람들이 코드를 볼 것이라는 것을 알고 있는 프로젝트, 특히 오픈 소스를 시작하는 것을 정말 어렵게 만듭니다. SOLID 원칙을 모두 따르지 않는 것을 보면 사람들이 뭐라고 할까요? 하지만 이러한 압박감을 극복하는 데 도움이 된 몇 가지를 배웠습니다.
- 모든 훌륭한 개발자 나중에 부끄러워지는 코드를 작성합니다.
- 좋은 코드를 제공하는 것이 그렇지 않은 완벽한 코드보다 훨씬 낫습니다.
- 일부 사람들은 멍청해서 귀하의 코드를 비웃습니다. 정말 짜증나네요. 그것은 내 모든 주를 망쳤습니다. 하지만 훌륭한 개발자는 도움을 원합니다. 당신을 비난하는 대신. 그리고 당신의 프로그래밍 영웅에게 그 코드를 보여주면 그들은 그것을 조롱하지 않을 것입니다. 그들은 당신이 그것을 더 잘 만드는 데 도움을 줄 것입니다.
또 무엇을 발견하셨습니까?
다음 중 어떤 함정에 빠졌습니까? 자신을 꺼내는 데 무엇이 도움이 되었습니까? 그리고 제가 언급하지 않은 것 중에 당신이 알아차린 것이 있습니까?
이러한 함정에 빠진 자신을 알게 된다면 어떻게 하시겠습니까?