수석 개발자 및 단위 테스트 - 필수인가요?부족한 사람을 사용할 수 있습니까?[닫은]

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

  •  09-06-2019
  •  | 
  •  

문제

고위 개발자는 단위 테스트에서 면제되어야 합니까? 아니면 부족한 사람을 사용하여 이를 구현하도록 허용해야 합니까?단위 테스트 기술을 사용하는 데 익숙하지 않은 사람들이 이를 채택하도록 동기를 부여하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

나는 TDD 순수주의적 관점에서(즉,단위 테스트를 작성해야 한다고 생각하는 사람 ~ 전에 구현), 수석 개발자가 작성해야 합니다. 부족한 것보다 단위 테스트 더 적은.

그 이유는 단위 테스트가 먼저이기 때문에 이를 작성하려면 코드 기반에 대한 깊은 지식이 필요하기 때문입니다.부족한 사람들이 작성하도록 허용한다면 본질적으로 도메인에 대해 가장 잘 아는 사람들이 코드 기반의 구조를 지시하도록 하는 것입니다.그것은 나에게 나쁜 생각처럼 들립니다.

다른 팁

나는 부족한 사람이 다른 사람을 위해 단위 테스트를 하도록 하는 것은 처음부터 단위 테스트를 하는 요점을 파괴한다고 생각합니다.코드를 작성하는 프로그래머는 코드가 어떻게 중단되어야 하며 예상되는 동작이 무엇인지 알아야 합니다.다른 사람이 원래 프로그래머를 그 책임에서 해방시키지 않는다고 해서요.

(성 중립성 때문에 어색한 표현입니다.)

테스트를 작성하는 사람 = 시스템 작동 방식을 정의하는 사람 = "상사"

테스트를 수행하는 사람들은 소위 "부족한 사람들"입니다.

새로운 재주를 좋아하지 않는 늙은 개 사례처럼 들립니다.그리고 속담처럼, 그들을 바꾸게 하는 것은 어렵습니다...TFD(테스트 우선 개발)는 일단 시작하면 매우 재미있습니다. 전체 팀이 참여하는 TDD 또는 TFD에 대한 내부 1일 워크숍을 가질 수도 있습니다.

고위 개발자는 단위 테스트에서 면제되어야합니까?

절대적으로하지.그렇다면 그들은 전혀 수석 개발자가 되어서는 안 됩니다.선임 개발자는 길을 보여주는 리더가 되어야 합니다. 부족한 사람이 하는 아이디어는 터무니없는 것 같습니다. 그렇다면 굳이 테스트할 필요가 있을까요?

이러한 상황을 처리하는 한 가지 가능한 방법은 수석 개발자가 대부분의 단위 테스트를 작성할 수 있다고 생각합니다.이는 그들이 프로그램의 방식을 정의하고 설계하고 있음을 의미합니다. ~해야 한다 일하다.그런 다음 부족한 사람은 테스트에 맞는 코드를 작성하여 선배의 디자인 철학을 배울 수 있습니다.

1부 (선임 개발자 및 단위 테스트)

TDD 또는 테스트 주도 디자인을 생각할 때 단위 테스트는 진화적인 디자인 시스템을 지속적으로 개선할 수 있기를 바랍니다.
테스트를 작성하면 코드가 형성되거나 이미 결정된 문제가 강조되어 디자인 품질을 높이기 위한 리팩토링 프로세스가 이루어지기를 바랍니다.

내 경험에 따르면 선임 개발자는 일반적으로 가장 많은 경험과 능력을 가진 사람입니다. 즉, 이러한 리팩토링 기회를 포착하는 데 더 나은 위치에 있어야 한다는 의미입니다.(코드 냄새 감지)

내 머릿속에는 다른 사람이 당신을 위해 테스트를 작성하는 세 가지 상황이 있습니다. ~할 수 있었다 받아 들일 수 있습니다.

  1. 승인 테스트/고객 테스트/엔드 투 엔드 테스트.원하는 대로 부르세요. 그러나 데이터 입력 지점(웹 서비스, 웹 페이지, 애플리케이션 화면 입력)에서 시작하여 시스템의 전체 스택(데이터베이스, 다른 서비스 호출, 입력 결과 화면으로 돌아갑니다 등).이는 테스트에서 실행될 개별 단위의 세부 사항을 구현하지 않는 사람이 작성할 수 있습니다.
  2. 페어링 프로그래밍(탁구 패턴) -

    A는 새로운 테스트를 작성하고 실패한 것을 본다.
    B는 테스트를 통과하는 데 필요한 코드를 구현합니다.
    B는 다음 테스트를 씁니다.
    A가 이를 구현한다.

  3. 버그 수정 테스트 - 버그가 발견되면 결함을 노출하는 실패한 테스트를 작성하는 것이 좋은 습관입니다.이 테스트가 완료되면 누군가가 테스트를 통과하는 코드를 구현하는 것이 전적으로 가능합니다.결함으로 인해 실패한 테스트를 작성하는 행위는 수정 사항이 어떻게 생성될 수 있는지에 대한 통찰력을 제공하는 경우가 많기 때문에 이것이 그다지 좋은 아이디어라고 생각하지 않습니다.

간단히 말해서 귀하의 첫 번째 질문에 대한 제 대답은 '고급 개발자는 단위 테스트 작성에서 면제되어서는 안 됩니다'입니다.

2부 (사람들이 테스트를 작성하도록 동기 부여)

이것은 과거에 제가 겪었던 문제입니다.지금은 적절할 때마다 TDD를 자주 시도하고 수행하지만, 테스트 작성에 실질적인 이점이 있다는 것을 확인하는 데 몇 달이 걸렸습니다.
나는 다른 사람들에게 TDD와 단위 테스트의 이점을 보여주려는 노력이 꽤 어렵다고 생각합니다.TDD/단위 테스트가 코드의 미묘함을 강조한 '아하' 순간, 그렇지 않으면 놓쳤을 수도 있거나 짧은 시간 내에 버그를 수정하는 데 도움이 된 순간을 사람이 직접 경험할 때만 그렇습니다. 이점을 참조하십시오.그 지점까지 도달하는 것은 상당히 어려울 수 있습니다.
개인적으로 저는 앞서 언급한 핑퐁 패턴(Ping Pong Pattern)의 페어 프로그래밍을 통해 거기에 이르렀고, 숙련된 TDDer와 작업하면서 우리가 작성한 코드가 사소하지 않은 기능을 해결하기 위해 작성한 코드가 우아한 솔루션이라고 할 수 있는 것으로 발전하는 것을 보았습니다.그 다음에는 QA를 거쳐 어떤 결함도 없이 라이브 환경으로 만드는 작업이 이어집니다.

간단히 말해서, 단위 테스트 작성을 통해 얻을 수 있는 이점을 이미 확신하고 있는 숙련된 프로그래머와 짝을 이루는 것은 누군가가 단위 테스트 작성에 대한 동기를 갖도록 돕는 좋은 방법이라고 생각합니다.

절대적으로하지;적어도 자신이 개발한 코드에 대한 테스트를 작성하는 것이 훨씬 쉽기 때문입니다.그러나 연공서열에 관계없이 모든 개발자가 모든 코드를 단위 테스트하는 것이 중요합니다.자신의 코드가 테스트 가능해야 한다는 사실을 알게 되면 노동의 성과는 훨씬 더 커질 것입니다.

개발자에게 단위 테스트를 하도록 동기를 부여해야 한다면 장기적으로 절약할 수 있는 이점과 시간을 꼭 기억하세요.코드에 대한 단위 테스트를 작성하는 습관을 들이면 당연히 곧 이를 시작하게 될 것입니다.

선임 개발자가 자체 테스트를 수행하지 않으면 선임 개발자가 아닙니다.

테스트하려는 의지가 부족하다는 것은 거의 항상 게으름이나 무능함(또는 둘 다)의 징후이며, 둘 다 수석 개발자에게서 발견할 수 있는 특성이 아닙니다.

고위 개발자가 다른 사람에게 단위 테스트를 작성하도록 하는 것이 적절하다고 생각할 수 있는 유일한 시나리오는 후배 신입 사원이 작업 속도를 높이는 경우입니다.코드를 작성하는 동안 발을 젖게 하는 것은 좋은 작업이 될 수 있습니다.

단위 테스트의 가장 큰 이점 중 하나는 얼마나 잘 수행되고 있는지 알려주는 즉각적인 피드백입니다.테스트 구현을 아웃소싱하면 디자인이 작동하는지 여부에 대한 피드백을 받을 수 없습니다.그리고 잘못된 디자인으로 어려움을 겪는 사람들은 이를 수정할 방법이 없습니다.

당신이 시니어 개발자라면 단위 테스트가 도움이 되는 훌륭한 개발 방식이라는 것을 알 만큼 충분한 경험을 갖고 있기 때문일 것입니다. 더 나은 소프트웨어를 생산하다

나는 TDD라는 종교를 믿지 않지만 단위/기타 ​​테스트에서 많은 가치를 보고 코드를 작성하면서 이를 많이 수행합니다.

하지만 요점은 아무도 정말 코드를 작성한 사람 외에는 코드가 무엇을 해야 하는지 알고 있으며, 그들도 모르는 경우가 많습니다.

이를 염두에 두고 테스트를 작성하는 '부족한 사람'으로부터 많은 가치를 얻지 못할 것입니다.

  1. 그들은 모든 미묘한 코너 케이스를 깊이 이해하지 못할 것입니다.
  2. 그들은 코드에 아무것도 투자하지 않았기 때문에 코드에 신경 쓰지 않을 것입니다.
  3. 그들은 바보 취급을 받는 것처럼 느낄 것입니다.

바보라 할지라도, 바보처럼 대우받는 것을 좋아하는 사람은 아무도 없습니다.직원이 그만두기를 원한다면 이는 직원을 격려하는 좋은 방법입니다.

누구도 단위 테스트 작성에서 면제되어서는 안 됩니다.모든 개발자는 이를 작성할 수 있어야 하며, 단위 테스트도 코드 검토 프로세스의 일부로 검토되어야 합니다.단위 테스트의 복잡성은 일반적으로 개발자의 기술에 따라 결정됩니다. 더 복잡한 코드가 더 많은 고위 개발자에게 전달되므로 더 복잡하고 더 많은 단위 테스트가 진행됩니다.

적응할 수 없는 개발자가 한 명 이상인 경우 일대일 지원을 제공하고 개발자가 익숙해지기 시작할 때까지 단위 테스트를 쌍으로 연결해야 합니다.코드를 작성할 수 있는 사람이 단위 테스트를 생성할 수 없을 만큼 기술적으로 복잡한 것은 없습니다.만약 그렇다면, 그것은 아마도 그 사람의 기술에 더 큰 문제가 있다는 전조일 것입니다.

개인적으로 테스터가 프로젝트의 일부인 단위 테스트를 최소한 이해할 수 있으면 도움이 된다고 생각합니다.결함을 정확하게 진단하고 수정하려면 개발자와 테스터 간의 협업이 매우 중요합니다.나는 그들이 그것을 작성해야 한다고 기대하지는 않지만 개발자와 함께 앉아서 테스트가 실패하는 이유/방법에 대한 개념을 검토할 수 있어야 합니다.

글쎄요, 그렇다고 대답하고 싶습니다만, 부족한 사람이 발견된 버그를 선배에게 고치는 일을 맡길 수 있는 경우에만 가능합니다.그것이 그에게 가르쳐질 것입니다.

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