경영진이 단위 테스트에 "투자"하도록 어떻게 확신합니까?


44

관리자에게 단위 테스트를하도록 어떻게 확신 시켰습니까?

"사용"이란 시간이 지남에 따라 개발, 소스 제어 체크인 및 단위 테스트 유지 등을 의미합니다.

일반적인 관리 이의 제기는 다음과 같습니다.

  1. 고객이 단위 테스트 비용을 지불하지 않았습니다
  2. 이 프로젝트는 단위 테스트 시간을 허용하지 않습니다
  3. 기술 부채? 어떤 기술적 부채?

다른 반대 의견을 알고 있습니까? 당신의 대답은 무엇입니까?

미리 감사드립니다!


6
artofunittesting.com에는 이 주제에 관한 전체 장이 있습니다.
StuperUser

6
, 테스트 및 TDD를 혼합하지 마십시오 하시기 바랍니다 ! TDD를하지 않으면 테스트가 필요하지 않다고 생각하게됩니다!
P Shved

1
설득력이 필요한 사람들은 설득력이 없습니다. 시나리오를 잃어버린 원인으로 생각하십시오.
Mark Canlas

@Pavel, 처음에는 nitpicking이라고 생각했지만 옳습니다. 단위 테스트, 기간에 "허가"를 원합니다. TDD는 내 것입니다.
louisgab

6
코드가 예상대로 작동하는지 확인할 권한이 필요한 이유는 무엇입니까?
Jaap

답변:


25

최근 고객이 우리의 방법론에 익숙해 졌을 때이 문제에 부딪 쳤지 만, 높은 경영진은 개발자가 개발하는 대신 테스트에 시간을 소비하고 있다는 것에 관심을 갖게되었습니다. 여기에서 어떻게 처리했는지 블로그에 올렸습니다.

http://practicalagility.com/show-them-the-numbers-its-results-that-matter/

요약하자면, 예상 시간을 프로젝트의 실제 시간과 비교 한 다음 결함 비율을 다른 팀의 결함 비율과 비교했습니다. 우리의 경우 이러한 숫자는 호의적으로 비교되었으며 더 이상 걱정하지 않았습니다.

이 경험을 바탕으로 한 나의 결론은 다음과 같습니다.

... 어떤 일을하는 당신의 접근 방식이 실용적이고 실용적이라는 것을 다른 사람에게 설득하는 가장 좋은 방법은 그것을 수행하고 다른 접근 방식과 비교하여 측정하는 것입니다. 사람들은 교리에 신경 쓰지 않거나 왜 무언가가 최선의 방법이라고 생각하는지에 관심이 없습니다. 사람들에게 숫자를 보여주고 접근의 효과를 측정하는 것만으로도 당신의 관행이 효과적이라는 것을 보여줄 수 있습니다.

다른 프로젝트에서는 단위 테스트를 만들지 않았거나 TDD를 수행하지 않은 고객 개발자와 함께 작업했으며 중단 된 테스트를 유지해야했습니다. 그러나 고객 개발자가 코드에 무엇이 잘못되었는지 알기 전에 고객에게 TDD 방식을 판매하는 것이 매우 쉬워졌습니다!

하지만, 필요한 (아마 자주하거나 책임이 있음을 변경 테스트를 시작할 수있는 코드의 작은 영역이) 경우에 따라서 귀하의 경우에, 나는 스텔스에 의해 그것을 할 것입니다 귀하의 번호를 추적 무엇가있다가 - 테스트 작성을위한 노력? 결함률은 얼마입니까? 이것은 다른 프로젝트 / 팀원과 어떻게 비교됩니까?

제 생각에는 아무도 자신의 업무를 제대로 수행하기 위해 허가를 요청하거나 사과 할 필요가 없으며 전문 개발자는 가능하고 실용적인 곳이라면 어디에서나 자동화 된 테스트로 코드를 테스트하려고 시도해야합니다. 희망적으로 그것은 귀하의 경우 에이 두 가지입니다. 행운을 빕니다!


답변 주셔서 감사합니다. 링크를 시도했지만 깨진 것처럼 보입니다. 가능하다면 읽는 것이 좋을 것 같습니다.
Joe J

조, 교착 상태가 유감입니다. 나는 이것을 개인 블로그에 다시 게시 했으므로 이제 링크가 작동해야합니다.
Paddyslacker

2
이것은 좋은 대답이지만 모든 사람이 자신이하고있는 일을 다른 프로젝트와 쉽게 비교할 수있는 것은 아닙니다. 나는 그것을 어디서 읽었는지 기억할 수 없지만 내가 본 비즈니스 사람에게 가장 설득력있는 주장은 단위 테스트를 이중 엔트리 부기와 비교하는 것이 었습니다. 순진하게 숫자를 두 번하는 것은 시간 낭비입니다. 그러나 회계에 대해 아는 사람이라면 누구나 책의 한 면만으로 용서할 수없는 책임을 포기하는 것을 고려할 것입니다. 단위 테스트는 이중 입력 부기의 개발 아날로그입니다.
JimmyJames

@JimmyJames, 나는 당신이 항상 다른 프로젝트와 비교할 수 없다는 것에 동의하며, 이중 입력 부기에 대한 귀하의 비유에 동의합니다. 테스트하지 않고 기존 코드베이스에서 단위 테스트를 사용하기 시작하면 단위 테스트로 다루는 부분과 커버되지 않은 코드 사이의 코드베이스 결함률과 기타 메트릭을 비교하여 백업 할 실제 데이터를 얻을 수 있다고 생각합니다 당신의 접근 방식도.
Paddyslacker

@Paddyslacker 동의하지 않습니다. 그래도 약간 닭고기와 달걀입니다. 단위 테스트 작성을 시작할 수있는 권한이 필요한 경우이를 사용하여 권한을 부여해야한다는 증거를 제시하기가 어렵습니다. 또는 아닙니다. 실제 데이터와의 비교는 훨씬 더 강력한 주장입니다. 이 대체 인수는 약하지만 마운트하기가 더 쉽습니다.
JimmyJames

20

투자 수익률 (ROI) 표시

자동 테스트를 작성하려면 시간이 걸립니다. 한번. 자동화 된 테스트를 실행하면 실행 중에 다른 작업을 수행 할 수 있으므로 시간이 걸리지 않습니다.

예 : 기능 X를 수동으로 테스트하는 데 30 분이 걸립니다. 자동 테스트를 작성하려면 1 시간이 걸립니다. 버그가 없더라도 프로젝트 진행 중에 종속 레이어와 구성 요소가 수정되므로 기능 X를 10 번 테스트해야합니다. 따라서 피처 X 테스트를 자동화하면 프로젝트 수명 기간 동안 4 시간이 절약됩니다.

실제로, 자동화 된 테스트가 실제로 비용을 지불하는 버그가있는 경우-먼저 버그를 조기에 저렴하게 발견하므로 시간과 당황을 줄일 수 있습니다. 둘째, 어려운 버그가 있고 코드 빌드 테스트의 여러주기를 거쳐이를 파악하면 수동 테스트보다 시간이 엄청나게 빨라집니다.

기업은 시간과 비용 절약을 이해합니다. 그것이 그것을 판매하는 방법입니다.


3
또한 응용 프로그램이 배포되고 누군가가 변경을 요청하면 변경 내용이 손상되었는지 쉽게 확인할 수 있습니다.
m4tt1mus

4
@ mattimus : 절대적으로-자동화 된 테스트 스위트는 연금처럼 지불합니다. 그것은 실제로 보험입니다
Steven A. Lowe

15

이미 문제에 직면했지만 문제가 없지만 코드가 없으면 편안하게 코드를 작성하는 것이 불편한 경우에는 다시 묻지 마십시오. 그냥 작성하고 체크인하지 마십시오.

경영진은 코드 라인을 세지 않을 것이지만, 모든 체크인은 QA (또는 고객)의 통과율이 더 높으며 결국 이유를 묻습니다 ... 그러면 "BAM! TDD! ! "

프로젝트, 프로세스 또는 소스를 엉망으로 만들지 않으므로 부정적인 이유가 없습니다. 솔직히 모든 수동 실행 + 입력 + 검사 결과 테스트를 실행하는 것과 시간이 다른 이유를 알 수 없습니다.


4
+1 : 어쨌든 테스트해야합니다. 테스트가 어떻게 이루어져야하는지에 대한 퀴즈보다는 단위 테스트를 작성하십시오.
S.Lott

1
공유 코드 기반이있는 팀 환경에서 로컬로 가져 오는 것이 잘 작동하지 않으면 다른 사람들이 변경 사항으로 테스트를 계속 중단합니다.
Alb

3
@Alb : 경영진이 탑승하지 않을 때 지불하는 가격입니다.하지만 테스트를하지 않는 것보다 낫습니다.
Steven Evers

3
브라보. 모든 테스트는 테스트가없는 것보다 낫습니다. 다른 사람의 변경으로 인해 테스트가 중단되는 경우 공지없이 API가 변경된 이유를 묻는 것이 좋습니다.
S.Lott

"관리는 코드 줄을 세지 않을 것"은 사실입니다. 답변 해주셔서 감사합니다!
louisgab

7

1) 고객이 단위 테스트 비용을 지불하지 않았습니다.

고객은 그들이 생각한 솔루션에 대한 비용을 지불했습니다. 계약에 따라 결함을 수정하면 실제로 회사에 이익이 될 수 있습니다. 잠금이 충분하면 작업 솔루션 비용을 지불하십시오. TDD는 그 목표를 지원해야합니다.

2) 프로젝트는 TDD 시간을 허용하지 않습니다

TDD는 더 오래 걸리지 않습니다. 외부 코드 또는 불필요한 코드의 양을 줄이고 테스트를 통과시키는 대상에 코드 기반을 집중시켜야합니다. 테스트 품질과 적합성에 따라 모든 테스트 통과는 코드가 완료되었음을 의미합니다.

3) 기술 부채? 어떤 기술적 부채?

기존 코드에 소급하여 테스트를 추가한다고 주장 할 수도 있습니다. 이것은 최고의 악몽 판매이며 기대할 수있는 혜택을 가져 오지 않습니다. 그러나 버그를 수정할 때 테스트를 추가하는 것은 허용되며 장기적으로 도움이됩니다.

어쨌든 Snorfus가 제안한대로 테스트를 작성하지 않는 것이 좋습니다. 그것은 이론적으로 좋은 소리를하지만, 단위 테스트 할 수 시간이 지남에 따라 변화합니다. 요구 사항이 변경되면 새로운 기능이 추가되어 단위 테스트를 업데이트해야합니다. 팀의 일원으로 일하는 경우 다른 사람들이 기능 / 수정 사항을 추가하면 단위 테스트가 만료됩니다.

나는 당신이 언급 한 특정 요점을 다루고 있는데, 왜 그것이 진척되지 않았는지 이해하거나 발전시킬 여지가 있기 때문입니다.


5
"어쨌든 테스트를 작성하지 않는 것이 좋습니다"-저는이 위치에있었습니다. 직접 테스트를 유지하는 것은 어렵습니다. 그 부담이 너무 커지면 테스트를 중단하십시오. 최소한 코드베이스에서 적극적으로 작업 할 때 그것들을 가지고 있었으며, 회귀를 잡지 않으면 초기 디자인 / 수정에 도움이됩니다. 디자인 목적으로 단위 테스트에서 엄청난 가치를 발견했지만 테스트가 코드와 동일한 수준으로 유지되지 않으면 회귀가 거의 발견되지 않았습니다.
Steve Jackson

1
기능 / 수정을 추가하고 단위 테스트를 업데이트하지 않은 사람은 단위 테스트의 개념을 이해하지 못했습니다.
야마모토 아키라

실제로 Akira는 TDD 또는 관련 프로세스의 실행 가능성에 영향을 미치는 가장 혼란스러운 문제 중 하나입니다. 7 년 전에 필자가 썼다는 점을 명심하십시오. 여전히 많은 관련이 있습니다. 작문 (좋은, 객관적인, 간결한) 테스트는 어렵습니다. 없는 코드베이스에 대한 테스트 작성은 매우 어렵습니다. 기술적이지 않은 경영진이 이익을 얻는 것을 어렵게 만드는 것 단위에 대한 나의 생각은 Mockist와 같지 않습니다 (예 : 30 자 남음)
Ian

4

생산 문제에 직면 한 모든 고객에게

  1. 단위 테스트를 작성하고 시나리오를 다루기 위해 단위 테스트를 추가했다는 이메일을 관리자에게 보냅니다.

  2. 또한 단위 테스트가 야간에 실행되므로이 ​​문제는 프로덕션에서 다시 발생하지 않으며이 단위 테스트 실패를 관찰하여 코드가 프로덕션에 들어가기 전에 알게 될 것입니다.

  3. 코드가 생산되기 전에이 단위 테스트를 이미 실시했다면이 생산 문제는 발생하지 않았을 것입니다.

이를 일관되고 지속적으로 그리고 곧 확신하십시오. 관리자는 고객이 생산 문제에 직면하는 것을 좋아하지 않으며 단위 테스트 아이디어를 구매할 것입니다. 행운을 빕니다.


이것은 좋은 :-)
BVengerov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.