공식화 된 단위 테스트를 요구하는 가장 설득력있는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/120460

  •  02-07-2019
  •  | 
  •  

문제

이것은 확실히 단위 테스트가 좋은 것임을 전제로합니다. 우리의 프로젝트에는 어느 정도의 단위 테스트가 있지만 기껏해야 일관성이 없습니다.

공식화 된 단위 테스트를 공식화 한 모든 사람들을 설득하기 위해 당신이 사용했거나 사용한 가장 설득력있는 방법은 무엇입니까? 저는 개발자가 아니지만 품질 보증을 받고 있으며 테스트 준비가되도록 전달 된 작업의 품질을 향상시키고 싶습니다.

공식화 된 단위 테스트를 통해 나는 단순히 이야기하고 있습니다

  • 작성할 단위 테스트를 식별합니다
  • 테스트 데이터 식별 (또는 설명)
  • 이 테스트를 작성합니다
  • 이러한 테스트 추적 (필요에 따라 재사용)
  • 결과를 사용할 수 있습니다
도움이 되었습니까?

해결책 13

그래서이 질문을 한 지 2 년 후, 예상치 못한 대답은 새로운 SDLC로 옮기는 것이 필요한 것이라는 것을 알았습니다. 5 년 전, 우리는 첫 번째 공식 SDLC를 설립했습니다. 그것은 우리의 상황을 개선했지만 자동화와 같은 중요한 것들을 제외했습니다. 우리는 현재 세입자 중 하나가 자동화 인 새로운 SDLC (새로운 관리하에)를 구축하는 과정에 있습니다. 자동화 된 단위 테스트뿐만 아니라 자동화 된 기능 테스트.

나는 교훈은 내가 너무 작게 생각하고 있다는 것입니다. 소프트웨어를 만드는 방법을 변경하려면 '전체 돼지'로 가서 익숙하지 않은 경우 점진적인 변화를 제안하기보다는 과감한 변화를하십시오.

다른 팁

매우 설득력있는 방법은 팀/회사가하는 일에 관계없이 공식화 된 단위 테스트를 직접 수행하는 것입니다. 특히 이런 종류의 연습을 경험하지 못한 경우에는 약간의 노력이 필요할 수 있습니다.

그러면 코드가 더 좋고 동료 개발자보다 생산성이 높다는 것을 보여줄 수 있으면 이유를 알고 싶어 할 것입니다. 그런 다음 좋아하는 단위 테스트 방법을 공급하십시오.

동료 개발자를 설득하면 관리를 함께 설득하십시오.

나는 사용한다 Maven 이랑 확실한 그리고 코베르 투라 내 빌드를위한 플러그인. 실제 테스트 케이스는 함께 작성됩니다 주니, DBUNIT 그리고 EasyMock.

단위 테스트 식별나는 테스트 중심의 개발을 따르려고 노력하지만 솔직히 말해서 나는 보통 소수의 테스트 사례를 위해 그렇게하고 다시 와서 나중에 에지 및 예외 사례에 대한 테스트를 만듭니다.

테스트 데이터 식별DBUNIT는 장치 테스트의 테스트 데이터를로드하는 데 적합합니다.

테스트 사례 작성Junit을 사용하여 테스트 케이스를 만듭니다. 나는 자체 문서화 테스트 사례를 작성하려고하지만 Javadocs를 사용하여 명백하지 않은 것을 언급합니다.

추적 및 결과를 사용할 수 있습니다SureFire 플러그인을 사용하여 장치 테스트를 Maven 빌드 사이클에 통합하고 Corbertura 플러그인을 사용하여 해당 테스트에서 달성 한 적용 범위를 측정합니다. 나는 항상 매일 빌드의 일부로 SureFire 및 Cobertura 보고서를 포함한 웹 사이트를 생성하고 게시하여 어떤 테스트가 실패했는지 확인할 수 있습니다.

저를 확신 한 사건은 우리가 3 번 연속 릴리스로 버그를 세 번 퇴보시킬 때였습니다. 그들이 고객에게 갔을 때 사소한 실수를 끊임없이 고치지 않았을 때 프로그래머로서 얼마나 생산적인 지 깨달았을 때 동료 코드가 주장한 일을 할 것이라는 따뜻한 퍼지 느낌을 가질 수있었습니다. 변환.

그 당시 나는 메인 프레임에서 COBOL 개발을했는데, 우리는 내가 일했던 여러 회사에서 종교적 으로이 작업을 수행했으며 환경이 시행 되었기 때문에 당신이 한 일을하는 방식으로 받아 들여졌습니다. 나는 그것이 시대의 매우 전형적인 계획이라고 생각하며 아마도 몇 가지 이유가 당신에게 적용 될 수 있습니다.

대부분의 메인 프레임 환경과 마찬가지로 우리는 세 가지 영역, 개발, 품질 보증 및 생산을 가졌습니다. 프로그래머는 개발 및 단위 테스트에서 개발되었으며 일단 사인을 받고 기뻐했을 때이 장치는 전용 QA 직원이 시스템 테스트 한 QA 환경 (테스트 및 결과 문서)으로 마이그레이션되었습니다. QA 마이그레이션에 대한 개발은 밤새 공식적인 단계였습니다. QA가 일단 코드가 생산으로 마이그레이션되었으며 버그가 거의 없었습니다.

단위 테스트를 완료하려는 동기는 당신이하지 않았고 QA 직원이 버그를 발견했다면 작업을 수행하지 않았다는 것이 분명했습니다. 결과적으로 당신의 명성은 당신이 얼마나 엄격했는지에 달려있었습니다. 물론 대부분의 사람들은 가끔 버그로 끝날 것이지만, 항상 견고한 테스트 코드를 생성 한 코더는 곧 스타 평판을 얻었고 버기 코드를 제작 한 사람들도 눈에 띄게 나타났습니다. 푸시는 항상 당신의 게임을 올리는 것이며, 결과적으로 생산 된 문화는 처음으로 버그없는 코드를 향한 문화였습니다.

관련 포인트 추출 -

  1. 버그 무료 테스트 코드의 전달과 관련된 코더 평판
  2. 이동 장치 이동과 관련된 상당한 오버 헤드를 다음 단계로 테스트 한 코드를 테스트하므로이를 반복하지 않고 처음으로 얻는 동기가 있습니다.
  3. 다른 사람들이 단위 테스트에 대한 시스템 테스트 - 이상적으로는 다른 팀입니다.

나는 당신의 환경이 다를 것이라고 확신하지만 교장은 번역 할 수 있습니다.

때로는 예를 들어 가장 좋은 방법입니다. 또한 사람들에게 일이 시험 중일 때 발생하지 않는다는 것을 사람들에게 상기시켜줍니다. 다음에 누군가가 당신에게 무언가를 쓰라고 요청할 때, 테스트와 관계없이 그것을하십시오. 결국 동료들은 코드를 변경하고 여전히 작동한다는 것을 알 수있는 편리함에 질투 할 것입니다.

관리는 테스트 중이 아닌 코드베이스 X를 변경해야 할 때 발생하는 핵 폭발로 인해 얼마나 많은 시간이 낭비되는지를 강조해야합니다.

많은 개발자들은 전체 시스템에서 동작을 보존하지 않고 얼마나 리팩터를 리팩터링하는지 알지 못합니다. 저에게 이것은 단위 테스트와 TDD의 가장 큰 이점입니다.

  1. 소프트웨어 요구 사항 변경
  2. 소프트웨어는 요구 사항에 맞게 변경됩니다

유일한 확실성은 변화입니다. 테스트 중이 아닌 코드를 변경하려면 개발자가 가능한 모든 행동 부작용을 알고 있어야합니다. 현실은 모든 순열을 읽을 수 있다고 생각하는 코더는 아무것도 깨지 않을 때까지 시행 착오의 고통 스테이 킹 과정으로 그렇게한다는 것입니다. 이 시점에서 그들은 체크인합니다.

실용적인 프로그래머는 자신이 완벽하지 않고 모든 것을 알고 있으며 테스트는 리팩토링 줄거리를 빠르고 안전하게 걸을 수있는 안전망과 같습니다.

Greenfield 코드에 테스트를 작성하는시기에 대해서는 가능한 한 많이 옹호해야합니다. 정의하는 데 시간을 보내십시오 행동 시스템에서 벗어나기를 원하고 처음에는 더 높은 수준의 구성을 표현하기 위해 테스트를 작성합니다. 단위 테스트는 생각이 결정화 될 수 있습니다.

도움이 되었기를 바랍니다.

교육 및/또는 인증.

팀원들에게 테스트 분야에서 공식 교육을 제공합니다 - 아마도 인증 시험 (팀원과 인증에 대한 자신의 태도에 따라 다름). 테스트를 더 높은 수준으로 끌어 올리면 팀 구성원이 테스트에 대한 전문적인 태도를 취할 가능성이 높습니다.

사이에는 큰 차이가 있습니다 설득력 있는 그리고 요구.

동료들이 글을 쓰도록 설득 할 수있는 방법을 찾으면 큰. 그러나 공식화 된 규칙을 작성하고 단위 테스트를 작성 해야하는 경우이를 극복 할 수있는 방법을 찾을 수 있습니다. 결과적으로 당신은 아무것도 가치가없는 많은 단위 테스트를받을 것입니다. 모든 단일 클래스에 대한 단위 테스트가 있으며 세터와 getter를 테스트합니다.

규칙을 만들고 시행하기 전에 두 번 생각하십시오. 개발자는 그들을 극복하는 데 능숙합니다.

처음에는 주변에 가서 계속해서 글을 쓰고 사람들에게 그만한 가치가 있음을 보여 주어야합니다. 세 가지 프로젝트에서 사람들을 설득하는 유일한 방법이라는 것을 알았습니다. 코딩하지 않는 일부 사람들 (예 : Junior Project Manager)은 얼굴을 바로 쳐다보기 전까지는 가치를 볼 수 없습니다.

내 소프트웨어 팀에서는 이러한 문제에 대해 소규모 비즈니스 사례를 작성하고 테스트를 만들고 추적 할 수있는 시간을 갖도록 경영진에게 제시하는 경향이 있습니다. 우리는 테스트 시간이 크런치 시간이오고 모든 것이 라인에있을 때 잘 구성되어 있다고 설명합니다. 또한 장치 테스트의 추적을 중앙 집중화하기 위해 Hudson 빌드 서버를 설정했습니다. 이를 통해 개발자가 실패한 테스트를 추적하고 반복되는 문제를 발견하는 것이 훨씬 쉬워집니다.

팀이나 다른 개발자에게 아마추어가 아닌 전문가를 상기시킵니다. 나를 위해 일했습니다!

또한 요즘 업계 표준입니다. 단위 테스트 경험이 없으면 잠재적 인 미래의 고용주에게 직원으로서 바람직하지 않고 가치가 떨어집니다.

팀 리드로서, 내 프로그래머가 작업하는 모든 모듈에 대해 단위 테스트를 수행하는 것이 저의 책임입니다. 이 시점에서 설득하는 방법에 대한 문제조차 아니라고 생각합니다. 때로는 큰 프로젝트가 아닌 경우가 항상 아닙니다. 단위 테스트는 당신이 유지해야 할 무언가를 생산에 넣는 것에 대한 첫 번째 방어선입니다. 완전히 단위가 아니고 시스템이 테스트되지 않은 생산에 무언가를 넣으면 다시 물러 나게됩니다. 우리가이를 뒷받침하는 정책 중 하나는 생산이 날아가거나 문제를 일으키는 경우, 모듈을 코딩하고 테스트하는 데 책임이있는 프로그래머가 문제를 처리 해야하는 모듈이 될 것이라는 것입니다. 등. 그것은 단독으로 상당히 좋은 동기 부여입니다.
다른 하나는 자부심에 관한 것입니다. 나는 약 75 명의 코더가있는 상점에서 일하지만, 일부 표준에 의해 크지 만, 우리 모두가 서로를 알기에 충분히 작습니다. 우리가 서로의 일을 알고있을 정도로 작고 생산으로 이동할 때 우리는 abends, 실패 등을 알고 있습니다. 조심스럽게, 단위와 시스템 테스트를 수행하면 무언가를 움직일 수있는 기회가 있습니다. 실패를 일으키지 않고 생산에 크게 증가합니다. 무언가를 생산으로 옮기고 그것을 깨닫지 못하는 데 시간이 걸릴 수 있지만, 엉망이되지 않는 것에 대한 큰 보상이 있습니다. 프로젝트를 옮길 때 복도에서 축하를 듣고 정말 기쁩니다.

많은 사람들을 쓰고 단위 테스트가 생산성과 코드의 품질을 향상 시켰음을 보여줍니다. 어떤 종류의 증거가 없으면 때때로 사람들은 그만한 가치가 있다고 믿지 않을 것입니다.

Google의 이니셔티브에서 영감을 얻을 수 있습니다. 그들의 시험 팀은 화장실 칸막이 내부에 예제, 팁 및 혜택을 작성하기 시작하여 테스트 자동화의 장점을 높이기 시작했습니다.

https://testing.googleblog.com/2007/01/introducing-testing-on-toilet.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top