BDD 개념을 채택하기를 꺼려하는 팀에 BDD 개념을“판매”하기 위해 어떤 주장을 사용할 수 있습니까?


11

나는 행동 주도 개발 방법론 (일명 BDD)의 보컬 지지자입니다. 저는 2 년 동안 BDD를 적용 해 왔으며 DotNet 애플리케이션을 개발할 때 StoryQ 를 선택한 프레임 워크로 채택 했습니다 . 몇 년 동안 단위 테스트를 해왔고 이전에 테스트 우선 접근 방식으로 전환했지만, 테스트에서 요구 사항의 의도를 상대적으로 파악하기 때문에 BDD 프레임 워크를 사용하면 훨씬 더 많은 가치를 얻을 수 있습니다. 내 코드 내에서 명확한 영어를 사용하고 내 테스트에서 테스트를 중간에 끝내지 않고 여러 개의 어설 션을 실행할 수 있기 때문에 디버깅하지 않고도 특정 어설 션이 한 번에 통과 / 실패하는 것을 확인할 수 있습니다.

테스트와 구현 코드를보다 목표 된 방식으로 디버깅 할 수 있으며 결과적으로 생산성이 크게 향상되었으며 더 많은 것을 할 수 있음을 알았으므로 이것은 빙산의 일각이었습니다. 빌드 로그로 들어가는 출력으로 인해 통합 빌드에 문제가 발생하는 경우 장애가 발생하는 위치를 쉽게 판별 할 수 있습니다. 또한 StoryQ API는 배우기 쉽고 유창한 구문을 사용하여 특별한 방법으로 적용 할 수 있으며 외부 의존성이 없어도 사용할 수 있습니다.

따라서 이러한 모든 이점을 통해 나머지 팀에 개념을 쉽게 도입 할 수 있다고 생각할 것입니다. 불행하게도, 다른 팀원들은 StoryQ를보고 그것을 제대로 평가하기를 꺼려하고 (BDD를 적용한다는 아이디어는 물론) 서로의 핵심 테스트 프레임 워크에서 많은 StoryQ 요소를 제거하려고 시도했습니다. 원래 StoryQ 사용을 지원했지만 제거하려는 코드가 테스트 시스템의 다른 부분에는 영향을 미치지 않더라도 말입니다. 그렇게하면 실제 업무 경험을 통해 특정 작업 환경에서 테스트 우선 방식으로 작업하는 것이 더 좋은 방법이며 더 큰 결과를 가져올 수 있다는 사실을 확신 할 수 있기 때문에 전반적인 작업량이 전체적으로 크게 증가하고 실제로 결정에 반대하게됩니다. 다음과 같은 경우 소프트웨어 품질 개선 ve는 BDD를 사용하여 테스트를 먼저 수행하는 것이 더 쉽다는 것을 알았습니다. 더 명확하게 설명하자면, 우리가 수행 한 단위 테스트의 대부분은 상당히 취약하고 유지하기 어려운 경향이 있으며, 테스트 중심 프로세스를 고수하지 않는 몇 년 동안의 잘못 적용 된 테스트에서 개발자가 오래된 습관에 빠지는 것을 보았습니다. 프로젝트가 끝날 때 모든 테스트를 수행하십시오 (이러한 사람들은 민첩하다고 주장합니다!).

따라서 질문은 실제로 다음과 같습니다.

  1. 이 팀이 StoryQ를 사용하는 것이 좋거나 최소한 BDD 방법론을 채택하는 것이 더 나을 것이라는 점을 실제로 추진하기 위해 어떤 주장을 사용할 수 있습니까?
  2. BDD를 표준 선택 방법으로 채택하겠다는 주장을지지하는 데 사용할 수있는 일화적인 증거를 말씀해 주시겠습니까?
  3. 팀이 BDD를 채택하도록 장려하려는 나의 소망이 잘못되었을 수 있다고 생각할 수있는 반론은 무엇입니까? 그렇습니다. 나는 그 주장이 건전한 것이 아니라면 잘못 입증되어 기쁘다.

참고 : 테스트를 완전히 다시 작성하는 것이 아니라 향후 모든 테스트 작업을 위해 다른 방식으로 작업을 시작하는 것이 바람직하며 고객과의 관계를 유지하는 것이 좋습니다.

BDD에 대해 더 배우고 자하는 사람들에게는 다음 링크가 유용 할 수 있습니다.


자세한 내용에 관심이있는 사람들을 위해 우리는 약 5 개의 큰 프로젝트를 수행하는 4 명의 소규모 팀입니다. BDD에 대한 "파일럿 시험"은 초기에 약 2 개월 동안 실행되었으며, 또 다른 약 4 개월이 뒤따 랐습니다. 팀은 내가 계속 이런 식으로 일해야하고 그들 자신의 시련을해야한다는 것을 받아 들였다. 나는 재판이 끝난 후 약 2 년 동안 BDD를 해왔으며, 다른 사람들은이 문제를 다루는 데 능숙 해졌습니다. 이 문제에 대해 "대결"을 강요하기보다는 팀을 부드럽게 설득하여 집단적인 배후에서 벗어나 시간을내는 방법을 찾고 있습니다.


2
"THEM"에 대해 생각해 봅시다. 왜 그들이 제거되기를 원합니까? 그들에게 이익이되어야합니다. – 먼저 자신의 혜택을 찾아보고 혜택을 제안하기 전에 어떤 중간 단계에 도달 할 수 있는지 보셨습니까?
PhD

2
판매량을 줄이고 교육을 많이 받으십시오. 내 경험상 사람들은 무언가를 팔고 싶지 않지만 항상 새로운 것을 배우려고합니다. 그런 다음 카드를 제자리에 놓으십시오. 그들이 여전히 반대한다면 교육자로서 실패했거나 bdd가 당신이 말하는 전부는 아닙니다.
Kevin

1
@ 케빈 나는 당신이 Nupal에 대한 나의 이전의 의견과 아마도 내 질문의 요점을 완전히 놓친 것으로 생각합니다. 내 질문에서 한 단어를 가져 와서 문맥에서 벗어난 것으로 해석했습니다. 저는 실제로 교육하려고 노력하고 있으며 단순히 "판매"하지 않습니다. 나는 다른 일을하려는 불필요한 꺼림을 극복하는 데 도움이되는 구체적인 요점을 찾고 있습니다. 본인의 결정에 도움이되지 않는 나의 능력이나 기술에 대한 도발적인 진술 만 제공하는 것이 아니라 주제에 대해 잘 알고 있다면 대답하십시오.
S.Robins

2
이진 결정 다이어그램? Knuth의 TAoCP vol 4 사본을 구입하여 빌려주십시오.
피터 테일러

2
팀이 가진 문제는 BDD 자체가 아니라 개발 방법론 피로의 문제라고 생각합니다. 나는 이것으로 고통 받고 있습니다. 개발에 혁명을 가져 오기위한 약속이 너무 많습니다. 불행히도 몇 개월 후에는 항상 또 다른 새로운 방법론과 툴셋이 있습니다. 나는 그것을 개선 할 기회가 아니라 성가신 산만으로 보았습니다. BDD를 도입하려면이 문제를 극복해야합니다.
Antonio2011a

답변:


5

StoryQ를 사용하는 것이 더 좋거나 최소한 BDD 방법론을 적용하는 것이 더 나을 것이라는 점을 실제로 추진하기 위해 어떤 주장을 사용할 수 있습니까?

"고객이 원합니다."

IMO 귀하는 최소한 개발 팀만큼 고객 / 도메인 전문가에게 BDD를 판매하려고합니다.

BDD는 여러 이해 관계자가 참여하는 협업 외부 프로세스입니다. BDD의 이점은 개발자가 승인 테스트에서 테스트 코드를 자동으로 유추하는 것뿐만 아니라 기술 및 비즈니스 사람들 사이에서 창의적 협력을 통해 시스템의 의도 된 동작에 대한 귀중하고 잘 정의 된 사양을 생성합니다.

고객 / 비즈니스 분석가가 각 실행 사양을 실행하고 상태를 제어하며 구현 진행 상황을 확인할 수있는 인터페이스에 대한 액세스 권한을 부여하면 일반적으로 매우 감사합니다.

Dan North가 비즈니스에 BDD를 판매하는 방법에 대한 프레젠테이션이 있습니다. http://skillsmatter.com/podcast/java-jee/how-to-sell-bdd-to-the-business


나는 그 프레젠테이션을 보았고 당신이 옳았다는 것을 고객에게 개념을 소개하는 좋은 방법입니다. 제 경우에는 몇 가지 단계를 거쳐야합니다. 팀에 설득시킬 수있는 유일한 방법이 언어를 채택하는 것이라면 전체 방법을 적용하도록 장려 할 수 있습니다. 또한 대부분의 고객이 내부적이며 비즈니스에 덜 중점을 둔 문제를 처리해야합니다. 그러나 당신의 요점은 잘 알려져 있습니다. :-)
S.Robins

5
  1. BDD 채택을 꺼려하는 팀에는 동료를 본격적으로 채택하는 데 사용할 수있는 "인수"가 없을 것입니다.
     
    나는 당신이 할 수있는 최선의 방법은 그들 에게 시도 ( "연기 테스트", "드라이 런", "파일럿 프로젝트") 를하도록 설득하는 것입니다. 부정적입니다.
  2. 일화적인 증거를 찾기위한 당신의 접근 방식은 그것을 시도하도록 설득력있는 팀의 아이디어에 완벽하게 맞습니다. 이를 위해 웹에서 "동작 기반 개발 성공 사례" 와 같은 내용을 검색하고 사용하기 편한 것을 선택했습니다.
  3. 내가 생각할 수있는 몇 가지 반론이 있는데, 팀 노력을 BDD로 전환하려는 소망이 잘못되었을 수 있습니다.
     
    이들 중 어느 것도 특히 "변호 지지자"의 관점에서 볼 때 건설적인 것은 아니지만 불행히도 정확하게 이런 종류의 수사법 ( BTDTGTTS ) 을 다루어야 할 것입니다 .
     
    • 전반적인 팀 생산성 향상을 보장 할 수는 없습니다
    • BDD 도입에 투자 한 노력이 상당한 ROI 를 제공한다고 보장 할 수는 없습니다
    • 팀이 BDD없이 충분히 잘하고 있었으며 현재 접근 방식의 변경 위험이 정당화되지 않았습니다.
    • Google (또는 Microsoft 또는 IBM- "중요한"소프트웨어 공급 업체의 이름 만 입력)은 BDD없이 잘 작동하므로 BDD가 필요하지 않다는 것을 "증명"합니다
    • 비 BDD 접근법은 비교 테스트에서 공정한 기회를 얻지 못했습니다.
    • BDD는 일반적으로 괜찮을 수 있지만 이것과 해당 모듈 / 프로젝트 에는 적용되지 않습니다

내 경험에 따르면 위에 나열된 것과 같은 반론을 해결하는 가장 고통스러운 방법 은 제안 된 변경에 대해 제한된 제어 테스트 실행 을 수행하는 것입니다.

"제한된 테스트"상태 는 성공 사례 에 대한 일화적인 증거 를 제공함으로써 반박 할 수있는 "존재하는 벤더"에 대한 하나를 제외하고는 위의 네 가지 주장 중 세 가지 주장을 본질적으로 무효화 합니다. 제한된 테스트로 충분합니다).

변화가 실제로 가치가 있고 테스트 실행이 적절하게 준비되면 팀과 경영 태도가 긍정적으로 변화하여 본격적인 변화로 매끄럽고 쉽게 전환 할 수 있습니다.

제한된 테스트 실행의 또 다른 이점은 너무 많은 문제를 일으키지 않고 아이디어에 대한 "평판 손상"위험을 줄이면서 대상 프로세스 세부 사항을 명확하게하고 조정할 수 있다는 것입니다. 이러한 테스트 실행에 참여할 때마다 테스트 실행시 가장 중요한 세부 사항을 설정하고 명확하게 정식 채택으로 전환하는 것이 얼마나 순조로 운지 알게되어 기뻤습니다.


신중한 답변에 감사드립니다. 그 결과, 저는 제한된 테스트에 성공적으로 참여한 후 BDD를 무기한으로 적용 할 수 있도록 팀의 승인을 받았습니다. 생산성 향상을 측정 할 수는 있지만, 언급 한대로 각 팀 구성원이 스스로 시험해 보도록 유도 할 방법을 찾지 않으면 서 반드시 팀 전체에 적용한다는 보장은 없습니다.
S.Robins

@ S.Robins가 흥미 롭습니다. 당신이 언급 한 제한적인 테스트는 얼마나 오래 걸렸습니까? 팀의 어떤 부분이 관련되어 있습니까?
gnat

우리는 약 5 개의 큰 프로젝트를 수행하는 4 명의 소규모 팀입니다. "테스트"는 처음에 약 2 개월 동안 실행되었으며 약 4 개월이 더 소요되었습니다. 팀은 내가 계속 이런 식으로 일해야하고 그들 자신의 시련을해야한다는 것을 받아 들였다. 나는 재판이 끝난 후 약 2 년 동안 BDD를 해왔으며, 다른 사람들은이 문제를 다루는 데 능숙 해졌습니다. 이 문제에 대해 "대결"을 강요하기보다는 팀을 부드럽게 설득하여 집단적인 배후에서 벗어나 시간을내는 방법을 찾고 싶습니다! ;-)
S.Robins

내가 참조. 그것은 당신의 질문을 더욱 흥미롭게 만듭니다. 나는 그것을 씹을 시간이 필요하다. 지금의 나는이 단순히 더 진전을 할 수있을 것입니다 방법을 상상할 수 없다 (에 저장 "불공정는"전력 사용과 같은 접근 마이크로 - 관리를)
모기

@ S.Robins주의를 기울이는 동안-BDD와 비 BDD 부품을 "혼합"하는 모듈이 있거나 100 % BDD / 0 % BDD 모듈로 분리되어 있습니까?
gnat

-1

경영진을 모집해야 할 때입니다. 시도를했지만 확실한 결과를 보았지만 팀이 밟고 있다면 경영진이 참여해야 할 수도 있습니다.

그들이 회사의 가장 생산적인 팀원을 해칠 경우 특히 그렇습니다. 반발에 대비하십시오. 경영진에게 접근하여 테스트 사례를 취해 팀이 당신을 깎지 못하게하려고 시작할 수 있습니다.


1
이에 동의하는지 모르겠습니다. 올바른 접근 방식으로 개발자를 구매하지 않으면 개발자가 목을 찌르도록 경영진을 얻는 것입니다. 그로 인해 분개하지 않습니까? BDD의 장점과는 무관하게 결과가 더 나빠질 것이라고 생각합니다. 즉, 당신은 전투에서 승리하고 전쟁에서 졌을 것입니다.
Kevin

@ 케빈 나는 이것에 대해 케빈과 동의합니다. 원한과 기분이 좋지 않은 팀은 팀을 매우 빠르게 파괴 할 수 있으며, 그 자체만으로는 단순히 비효율적으로 일하는 것보다 팀의 생산성에 더 큰 위험이 될 수 있습니다. 케빈의 발언은 손톱 이 없다는 속담을 상기시켜줍니다 . 이 경우, 나는 단순히 내 길을 가지기 위해 과감하거나 영웅적인 일을하려는 것이 아닙니다. 내가 찾는 것은 "네일"입니다.
S.Robins

팀은 그들이 작성한 테스트 코드를 취하고 있다는 사실에 의해 입증 된 바에 따라 이미 반대하고 있습니다. 그것은 내 마음에 적대적이며 개발 관리자의 개입을 보증합니다. 그것이 전체 팀을 더 매끄럽게 만드는 것입니다.
Bill Leeper 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.