자동 테스트를 대중화하는 방법은 무엇입니까? [닫은]


13

우리의 코드 기반은 현재 20 년 동안 성장하고 있습니다. 우리는 약 10 개발자 + sqa와 500kloc을 사용하고 있습니다. 얼마 전 우리 팀 (2 명, sqa 출신)이 자동화 된 테스트 프로그램을 시작했습니다. 현재 한 번의 실행은 11 시간이 걸리며 어떻게 든 통합 테스트입니다. 우리는이 문제를 해결하기 위해 노력하고 있으며 오 탐지를 줄이고 그 과정에서 좋은 진전을 보이고 있습니다. 그러나 세부 사항은 중요하지 않습니다.

정상적으로 작동하고 있으며 계속 개선하고 있습니다. 우리 (작은 팀)는 그것을 매우 좋아합니다. 우리가 무언가를 깨 뜨리면, 우리는 하루가 지나고 sqa가 살펴볼 때 2 개월이 아니라는 것을 알게됩니다. 또한 우리의 관리자 (dev + sqa)는 아이디어를 좋아합니다. 그러나 팀의 다른 사람들은 테스트 결과를 무시합니다. 체크인 후 테스트가 실패하면 코드 변경이 아니라 테스트 문제이며 장난감 프로젝트 일뿐입니다. 실패한 테스트가 실제 오류 인 경우 여러 차례 토론을했습니다. 대부분의 경우입니다.

우리는 무언가를 강요 할 수없고 원하지도 않습니다. 자동화 된 테스트가 중요하다는 것을 어떻게 알 수 있습니까?


11
이것은 소프트웨어 엔지니어링 문제가 아닙니다. 사람들의 문제입니다.
Robert Harvey

@RobertHarvey 나는 "의견에 근거한"의견과이 사이트가 완벽하게 적합 할 것이라는 의견 (그리고 그 의견에 대한 의견) 때문에 SO에 대한 의견을 구했다. 그래서 : 어디서 물어봐야합니까? 저를 교육 시키십시오.
피터 슈나이더

2
나는 이것이 사람들 문제라는 것에 대해 @RobertHarvey와 함께 있습니다. 그러나 Workplace에 따르면 귀하의 질문은 아마도 속임수로 간주 될 것입니다. 예를 들어 기본적으로 무엇을 요구하고있다이 질문을 참조 workplace.stackexchange.com/questions/44964/...
피터 M

1
이 다운 보터 (또는 가까운 투표자)가 낙심하지 않도록하십시오! 어떤 사람들은 그러한 질문이 중요하다는 것을 이해하고 도움을 줄 수 있습니다. 그건 그렇고, 이전 버전 (자동 테스트가없는)이 버그 상자 임에도 불구하고 동료들은 자동 테스트의 유용성을 보지 못했습니다. 한 가지만 변경하고 관련이없는 것처럼 보이는 몇 가지를 중단하십시오. 어떤 사람들은 배우기를 원하지 않습니다 (새로운 것을 배우는 것에 대한 열린 저항이 있음).
Bernhard Hiller

1
이 질문이 종결 된 것은 부끄러운 일입니다. 소프트웨어 엔지니어링이 의미가 있다면 실제 사람들과 함께 일하는 문제를 의미하며 그러한 문제에 대한 답변에는 의견이 수반됩니다. 즉, 몇 가지 간단한 아이디어는 다음과 같습니다. (1) 테스트에서 잘못된 부정을하면 결과가 시간 낭비처럼 느껴지므로 확실히 푸시 백이 증가합니다. (2) 가능하면 런타임을 중단하십시오. 11 개월은 2 개월보다 훨씬 나아도 즉각적인 느낌이 들지 않습니다. (3) sqa는 이러한 테스트를 그들이 보는 메트릭으로 채택 할 것입니다. 그들은 이미이 분야에서 당신의 조직에 의해 인정 받고 있습니다.
Dale Hagglund

답변:


4

기권

관리자처럼 들릴지 모르지만 자동화 된 테스트가 좋다고 설득해야하는 개발자로 작성했습니다.


개발자의 기본 심리학을 이해해야합니다. 코드를 커밋해야하는 개발자가 필요합니다. 그들이 그렇게하지 못하게하는 것은 매우, 매우 나쁜 일입니다. 실패한 테스트는 분명히 그들이 그렇게하지 못하게하는 것입니다. 악성입니다. 따라서 저항.

당신이 지적해야 할 것은 자동화 된 테스트가 단기적으로 속도를 늦추는 반면 장기적으로는 많은 슬픔을 줄이고 실제로 속도를 높일 것입니다. 새로운 일을하고 개발자가 싫어하는 다른 일을하는 데 걸리는 시간이 줄어 듭니다 : 버그 수정.

그리고 그렇습니다. 경영진으로부터 무조건적인 지원을 받아야하며 자동화 된 테스트 작성을 필수적이고 협상 할 수 없도록해야합니다. 시간이 지남에 따라 개발자는 익숙해 질 것입니다. 새로운 개발이 얼마나 많이 수행되었는지, 그리고 자동 테스트를 도입 한 이후에 얼마나 많은 버그가 감소했는지를 보여주는 몇 가지 메트릭을 고안 할 수 있다면 도움이 될 것입니다. 단어는 휘발성입니다. 숫자는 확실합니다. 그리고 숫자는 일반적인 개발자가 단어보다 잘 이해하는 것입니다. 자동화 된 테스트가 우수하다는 확실한 숫자를 사용하여 증명할 수 있다면 그에 대한 저항은 거의 또는 전혀 얻지 못할 것입니다.


11

체크인 후 테스트에 실패하면 코드 변경이 아니라 테스트 문제이며 장난감 프로젝트 일뿐입니다. 실패한 테스트가 실제 오류 인 경우 여러 차례 토론을했습니다. 대부분의 경우입니다.

문제가 있습니다. 테스트가 정확하지 않은 경우 ( '대부분'신뢰할 수있는 경우에도) 사람들은 결과를 무시하는 경향이 있습니다. 자동화 팀은 이러한 잘못된 부정을 제거하는 데 집중해야합니다. 그래야만 팀의 나머지 부분이 실제로 결과를 신뢰할 수있는 결과에 대한 충분한 신뢰를 얻게됩니다.


5
그런 다음 또 다른 것이 될 수 있습니다. 변화에 대한 저항처럼. 테스트가 실패하면 코드 나 테스트 중 하나 를 고칠 수있는 것이 항상 있으므로 테스트가 잘못되어 사람들이 테스트를 무시하는 태도가 잘못되었습니다.
Robert Harvey

우리는 문제가 발생했다고 확신했을 때 그들과 이야기를 나 (습니다 (예 : 검사가 문제의 기능에 영향을 미치는 후 3 회 연속 테스트 실패). 그러나 그렇습니다. 신뢰도를 높이는 것이 최우선 과제입니다.
피터 슈나이더

1
@PeterSchneider 테스트는 연속으로 100 번 실패 할 수 있습니다. 특히 테스트가 잘못되면 그렇게 할 것입니다.
Pieter B

다른 한편으로, 결코 실패하지 않는 시험은 아마도 완전히 쓸모가 없다
Vladimir Stokic

1
+1 취성 테스트는 분명히 문제입니다. 개발자는 자신이 작성한 테스트가 유용하고, 불필요한 합병증을 일으키지 않으며, 바쁘지 않다는 것을 확신해야합니다 .
Andres F.

6

우리는 무언가를 강요 할 수없고 원하지도 않습니다.

당신은 분명히 그것을 시행해야합니다! 누군가 새 코드를 푸시하고 테스트가 실패하면 코드를 거부해야합니다! 더 큰 소프트웨어 프로젝트를 안정적으로 유지 관리하는 유일한 방법입니다.


시스템, 테스트, 규모 및 개발 프로세스에 따라 다릅니다. 모든 버그를 즉시 해결할 수있는 것은 아니며 모든 문제를 즉시 해결하지 않아도됩니다.
NickL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.