안티 문화 테스트에서 테스트를 시작하려면 어떻게해야합니까? [닫은]


20

고백 할 것이 있습니다 : 형식화 된 자동화 된 테스트는 프로그래밍 배경의 일부가 아닙니다. 나는 현재 많은 개발자들 (대부분 개발자들은 한 종류 또는 다른 종류의 개발자들) 과 함께 매우 큰 회사에서 일하고 있으며, 대부분의 사람들도 테스트 *하지 않는 것이 분명하다. (* 정식으로 계속 말하지는 않습니다 . 추론하십시오.)

테스트를 시작하기 위해 조직의 지원을 기다릴 경우 결코 발생하지 않습니다. 경영진에서 테스트를 진행하여 "내부에서 변화"를 시도하면 변경이 발생하기 전에 스팀이 부족합니다. 지금 테스트를 시작해야합니다.

그러나 TDD와 그 ilk를 사용하면 프로덕션 코드와 함께 많은 테스트 코드가 생길 것입니다. 당사의 버전 관리 시스템 (모두 중앙 집중식)은 테스트 코드를 저장하도록 구성되지 않았습니다. 나는 나의 워크 스테이션에 그 모든 것을위한 장소를 찾아야 할 것이다.

문화를 평가하거나 도구를 제공하지 않는 문화권에서 소프트웨어 테스트를 개인적으로 시작할 수 있습니까? 공식 도구 및 조직에 테스트, 프레임 워크 및 자동화를위한 장소가 없을 때 테스트 할 수 있도록 어떤 기술과 도구를 사용합니까?


14
회사의 VCS에 테스트 코드를 저장할 수없는 이유는 무엇입니까? src프로덕션 코드를 위한 디렉토리 가있는 프로젝트에서 디렉토리를 추가하는 것이 가능 test할까요? 아니면 어떤 이유로 명시 적으로 금지되어 있습니까?
Péter Török


@ PéterTörök 당신은 우리를 과대 평가합니다. 우리는 src디렉토리 가없고 웹 루트가 있습니다. 내 코드를 중앙 VCS로 체크인하려면 웹 루트로 코드를 체크인합니다.
kojiro

안티 테스팅 문화에 소스 컨트롤이 없다면, 먼저 팀을 운영하려고 노력할 것입니다. 팀이 가지고있는 다른 많은 문제를 해결할 것입니다. 그런 다음 테스트를 위해 수행하려는 작업의 기초를 마련합니다.
Scott Wylie

@ScottWylie 나는 그렇게 말하지 않았다. 우리는 VCS를 가지고 있으며 테스트를 위해 조직화하지 않았습니다 (또는 웹 루트에 대한 직접적인 편집 이외의 많은 것들). 1998 년에 누군가의 조카가 CVS를 설립했다고 생각하며 그 이후로 아무도 그것을 바꾸지 않았습니다.
kojiro

답변:


22

나는 개인적으로 상당한 성공을 거두었습니다. 성공을위한 핵심 요소 :

  • (가칭) 관리 지원 받기. 자동화 테스트의 장점은 잘 문서화되어 있으며 모든 관리자가 최소한 시도해 보도록 유도해야합니다. 여기에는 VCS 및 빌드 서버에서 지점을 찾는 것이 포함됩니다.
  • 자동화 된 테스트는 자주 자동으로 실행되는 경우에만 전체 가치를 제공하므로 문제에 대해 곧 알 수 있으며 실행을 잊지 않는 사람들에게 의존 할 필요가 없습니다. 최소한 매일 실행하는 빌드 서버가 필요합니다. 이것은 오래된 워크 스테이션 일 수 있습니다. Jenkins는 실행에 거의 작업이 필요하지 않습니다.
  • 예를 들면. 테스트를 작성하고 그들이 제공하는 이점에 대해 이야기하고, 다른 개발자가 도입 한 오류를 발견하면 잠재적으로 훨씬 더 난처한 상황으로부터 보호받는 방법에 대해 이야기합니다.
  • 낮은 매달린 과일을 찾으십시오. 응용 프로그램의 일부는 테스트하기 어렵고 다른 일부는 쉽게 테스트 할 수 있습니다. 일부는 견고하고 다른 일부는 부서지기 쉽습니다. 취성에 대한 테스트 작성, 테스트하기 쉬운 부품은 가장 짧은 시간에 가장 큰 가치를 제공합니다.
  • 재사용 가능한 테스트를 작성할 수 있는지 확인하십시오 (예 : 모든 모듈 (웹 페이지, REST 서비스 등)에는 있지만 종종 잊혀지는 테스트 규칙 또는 기능).

7

관리 지원이 없으면 물에서 죽었습니다. 경영진은 귀하가 가치있는 일을하고 있지 않다고 주장하며 귀하의 평가에 불이익을받으며 결국 해고 될 것입니다. 경영진이 조기 테스트에 소요되는 비용과 그 비용을 모두 줄일 수있는 방법이 있습니다. 문화를 바꿀 수는 있지만 목을 자르고 있습니다.

나는 무엇을하기 전에 변화를 소개하는 방법에 관한 Machiavelli 왕자 장을 읽는 것이 좋습니다 .


귀하의 두 번째 답변은 테스트에 시간이 걸리고 그렇지 않은 시간이 소요될 것임을 시사합니다. 그러나 전도자들을 시험하는 것 (제 생각에)은 시험이 시간을 절약 해 준다고 말할 것입니다. 프로덕션 코드를 디버깅하는 데 많은 시간을 소비하지 않고 테스트를 통해 코드를 전달하도록 코드를 조정해야하므로 장기적으로는 물론 중간 길이의 프로젝트까지도 가능합니다. 이론의 이해)는 모두 코딩에 소요되는 전체 시간을 줄이는 역할을합니다. 사실이 아닌 것을 발견 했습니까?
kojiro

1
@kojiro : 예, 전반적인 테스트는 시간과 비용을 줄입니다. 그러나 단기적으로는 그렇게하지 않을 것입니다. 일부 관리자는 단기를 더 중요하게 생각합니다. 결국, 회사가 비용을 지불하지 않고 버그 수정에 대해 고객에게 청구 할 수있는 경우 좋은 소프트웨어는 무엇입니까?
Sardathrion-복원 Monica Monica

2
테스트하면 시간이 절약되지만 테스트 할 수 있도록 코드의 절반을 다시 실행해야하는 경우 처음 몇 개월 동안 길을 잃고 테스트를 거친 속도를 높이기 위해 모든 작업을 처음에 시간을 낭비하게 됩니다. 관리자는 "이 달"에서 생각하는 "지난 달"을 생각하지 않으므로 개발자가 우리가 할 수있는 테스트를 통해 새 코드를 작성하지 않기 때문에 "시간 낭비"만 볼 수 있습니다. "이미 작동하는"코드를 판매하거나 리팩토링하는 코드
Wayne Molina

일반적으로 단기적으로도 시간이 절약됩니다. 무언가를 작업 할 때 테스트를 통해 코드를 실행 한 다음 전체 앱을 실행하고 특정 코드를 실행하도록 동축해야하는 것이 훨씬 빠릅니다.
Stefan Billiet

3

내 경험에 따르면 문화가 안티 테스트라면 합리적으로 소개 할 수 없습니다. 테스트는 시간 낭비로 간주되어 "시간 낭비"또는 "너무 오래 걸리는"책망을 받거나 테스트 가능한 방식으로 작성되지 않은 몇 년 동안 코드가 혼란에 빠졌습니다 (예 : 인터페이스 없음, 모든 것) 긴밀하게 결합 된) 코드를 리팩토링 및 / 또는 다시 작성하는 데 많은 시간을 소비해야하므로 (테스트에 너무 오래 걸리거나 시간을 낭비 할 위험이 있음) 테스트를 처음부터 작성할 수 있습니다. .

기존 항목과 상호 작용해야하는 그린 필드 작업을 수행하거나 (나쁜 영역 주위에 멋진 래퍼 만들기) 문제를 일으키지 않거나 요구하지 않는 소량으로 수행 할 수있는 경우가 있습니다. 개집에 당신을 넣을 수있는 "당신에게 할당되지 않은 작업에 대한 작업".


1

자동화 된 테스트로 해결할 수있는 문제 (현재는 인식되지 않을 수 있음)가 충분히있을 때까지는 멀지 않을 것이라고 생각합니다.

정의 된 스크립트에 대해 수동 테스트 문화가 있다면 불완전하거나 부정확 한 결과의 위험과 함께 해당 스크립트를 실행하는 비용이 발생합니다. 이것의 역사 (문서화 또는 "전쟁 이야기"형식)가있을 수 있습니다. 장기적인 비용 절감을 위해 이러한 수동 테스트 중 일부를 자동화 할 파일럿 프로젝트를 제안하십시오.

수동 테스트 기능조차 없다면 자동화 또는 기타 방식의 공식 테스트가 가치가 있다는 것을 비즈니스가 인식하지 않는 것이 좋습니다. 이 경우에는 앞길이 길고 가파르다 고 생각하지만 소프트웨어 품질에 대한 덜 캐주얼 한 접근 방식을 채택함으로써 비즈니스가 이익을 얻을 수 있다는 명확한 데모가 필요할 것입니다. 그렇게 할 수 없다면 상업적으로 아이디어를 어떻게 지원할 수 있는지 알기가 어렵습니다.


0

한 가지 아이디어는 다른 사람이 작성한 코드에 결함이 있음을 증명하는 테스트를 작성하는 것입니다. 개념을 팔아야한다.

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