개발자 테스트 vs.QA 팀 테스트 - 올바른 업무 분할은 무엇입니까?[닫은]

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

문제

더 많은 개발자 테스트를 옹호하려고 노력하면서 "QA의 일이 아닌가?" 많이 사용됩니다.내 생각에는 QA 팀에 모든 테스트 책임을 맡기는 것은 말이 되지 않지만 동시에 Spolsky와 다른 사람들은 시간당 $30의 테스터가 할 수 있는 일을 하기 위해 시간당 $100의 개발자를 고용해서는 안 된다고 말합니다. .전담 QA 팀이 있는 회사의 다른 사람들의 경험은 무엇입니까?업무 분담은 어디에 그려야 하는가?

설명:나는 QA를 검증 및 검증 팀으로 의미했습니다.개발자는 검증(고객 중심 테스트)을 하면 안 되는데 검증(기능 테스트) 구분점은 어디인가?

도움이 되었습니까?

해결책

이는 "블랙 박스" 테스트(코드가 수행해야 하는 작업을 알지만 작동 방식은 알 수 없음)와 "화이트 박스" 테스트(작동 방식을 아는 것이 테스트 방법을 결정하는 경우)의 차이점입니다.품질 보증을 언급할 때 대부분의 사람들은 "블랙박스" 테스트를 떠올립니다.

저는 QA팀이 소프트웨어 개발자이기도 한 회사에서 일하고 있습니다.(그렇게 하면 분야가 좁아진다. 많이 회사를 추측하고 싶다면.) 나는 Joel의 의견을 알고 있으며 내 경험으로 인해 부분적으로 동의하지 않습니다."화이트 햇" 해커가 보안 허점을 찾는 데 더 효과적인 것과 같은 이유로 특정 종류의 오류는 코드 작성 방법을 아는 화이트 박스 테스터가 더 효과적으로 발견합니다(따라서 일반적인 실수는 무엇인지 - 예: 리소스 관리). 메모리 누수와 같은 문제).

또한 QA 지향 개발자는 초기 설계 단계부터 프로세스에 참여하므로 이론적으로 프로세스 전반에 걸쳐 고품질 코드를 구동하는 데 도움이 될 수 있습니다.이상적으로는 기능에 정신적으로 초점을 맞춰 프로젝트를 진행하는 각 개발자와 코드를 깨고 개선하는 데 정신적으로 집중하는 반대 개발자가 있는 것이 좋습니다.

그런 관점에서 볼 때, 테스터를 위해 개발자를 사용하는 문제보다는 한 개발자가 품질 제어에 중점을 두는 일종의 단절된 쌍 프로그래밍에 가깝습니다.

반면에 기본 UI 기능과 같은 많은 테스트에는 솔직히 그런 기술이 필요하지 않습니다.조엘의 주장이 바로 여기에 있습니다.

많은 기업에서 프로그래밍 팀이 서로의 코드에 대한 코드 검토와 테스트 의무를 절충하는 시스템을 볼 수 있었습니다.예를 들어, Business Logic 팀의 구성원은 가끔 UI 팀을 위해 코드를 테스트하고 검토하는 투어를 할 수 있으며 그 반대의 경우도 마찬가지입니다.이렇게 하면 풀타임 테스트에 개발자 재능을 "낭비"하지 않고 코드를 전문가의 조사와 처벌에 노출시키는 이점을 얻을 수 있습니다.그런 다음 보다 전통적인 QA 팀이 "블랙박스" 테스트를 맡을 수 있습니다.

다른 팁

적절한 경우 품질 관리 팀은 개발자가 아닌 보안, 회귀, 유용성, 성능, 스트레스, 설치/업그레이드 테스트를 수행할 수 있어야 합니다.

개발자는 최소한의 목표로 작성되는 코드에 대한 코드 커버리지로 단위 테스트를 수행해야 합니다.

그 사이에는 아직 수행해야 할 테스트가 꽤 많이 있습니다.

  • 전체 코드 경로 테스트
  • 구성 요소 테스트
  • 통합 테스트(구성 요소)
  • 시스템(통합) 테스트

이에 대한 책임은 가장 합리적인 것에 대한 상호 합의를 기반으로 QA와 개발 간에 혼합되어 있습니다.일부 구성요소 테스트는 단위 테스트로만 수행할 수 있고, 다른 구성요소 테스트는 통합 테스트 등에서 '충분히' 테스트됩니다.

서로 이야기를 나누고, 모두가 가장 편한 일이 무엇인지 알아보세요.시간이 좀 걸리겠지만 그만한 가치가 있습니다.

항상 개발자 테스트가 있어야 합니다.개발자가 너무 많은 버그를 생성하면 나중에 해당 버그를 수정하는 데 시간을 낭비하게 됩니다.개발자들이 '아, 버그를 남기면 발견되어 고칠 기회가 생길 것'이라는 태도를 갖지 않는 것이 중요합니다.

우리는 생성된 버그에 대한 임계값을 유지하려고 노력합니다.테스트 중에 이 임계값을 초과하면 개발자가 이에 대한 책임을 집니다.이 임계값이 무엇인지 결정하는 것은 귀하에게 달려 있습니다(우리의 경우 프로젝트마다 다를 수 있음).

또한 모든 단위 테스트는 개발자가 수행합니다.

저는 업계에 몸담은 지 1년밖에 되지 않았지만, 제 경험에 따르면 개발자는 기능 단위 테스트를 담당하고 QA는 시나리오 테스트를 담당합니다.QA에서는 모든 경계 조건도 테스트해야 합니다.

내부 포럼에 질문에 대한 답변을 붙여넣고 있습니다.한시간 정도 있으면..메리 포펜딕의 노래를 들어보세요 속도를 바탕으로 경쟁 동영상. 추천

참고(테스터 기준 - QA팀을 지칭함)

개발자/단위 테스트 ________=_______ 사용성 테스트 및 탐색 테스트

'==================================================================

승인 / 고객 테스트 ___=_____ 속성 테스트

4개의 사분면이 있는 정사각형이라고 상상해 보세요.:)

왼쪽 절반은 자동화되어야 합니다.

  • 개발자 테스트에서는 코드가 코더가 원하는 대로 작동하는지 확인합니다.도구:NUnit / xUnit / 집에서 만든 도구라면 무엇이든 가능
  • 고객 테스트에서는 고객이 원하는 대로 코드가 작동하는지 확인합니다.테스트는 작성하기가 매우 쉬워야 하며 고객이 .NET/Java를 배울 것을 요구해서는 안 됩니다.그렇지 않으면 고객은 해당 테스트를 작성하지 않을 것입니다(비록 개발자의 도움이 필요할 수도 있음).예를 들어 Fit은 Word로 작성할 수 있는 HTML 테이블을 사용합니다.도구:맞춤 회귀 도구도 여기에 있습니다.녹음 재생.

오른쪽 절반은 좋은 테스터의 시간과 노력을 더 잘 활용합니다.예를 들어X 대화 상자를 사용할 수 있는지 여부를 알려주는 자동화된 테스트는 없습니다.인간은 기계보다 이 일을 더 잘합니다.

  • 유용성.시스템 중단을 시도합니다(처리되지 않은 오류 시나리오 포착, null 값 입력).기본적으로 개발자가 놓친 부분을 잡아냅니다.
  • 속성 테스트에는 다시 사람이 필요합니다.여기에서는 시스템에 필요한 고객 필수 속성을 확인합니다.예를 들어성능 - 검색 대화 상자가 2초 응답 시간을 충족합니까?보안- 누군가가 이 시스템을 해킹할 수 있습니까?등.가용성 - 시스템이 99.99%의 시간 동안 온라인 상태입니까?

테스터는 왼쪽 부분에서 테스트 계획을 실행하는 데 시간을 소비해서는 안 됩니다.코드가 고객과 개발자가 의도한 대로 작동하는지 확인하는 것은 개발자의 책임입니다.테스터는 실제로 고객이 승인 테스트를 공식화하는 데 도움을 줄 수 있습니다.

테스트는 가능한 한 자동화되어야 하며, 테스터가 자동화된 테스트 모음에 추가되는 코드를 작성하는 경우 이를 다시 개발 작업으로 전환해야 합니다.

또한 사람들은 검토 중인 단위 테스트에 추가하고 싶은 추가적인 극단적인 사례를 제안하기 때문에 코드 검토에서 많은 QA가 수행된다는 사실을 발견했습니다(물론 테스트하는 코드와 함께). .

나의 일반적인 입장은 테스터가 단위 수준의 버그(경계 사례 포함)를 절대로 발견해서는 안 된다는 것입니다.테스터가 발견한 버그는 구성 요소, 통합 또는 시스템 수준에 있어야 합니다.물론 처음에는 테스터가 "행복한 경로" 버그 및 기타 간단한 버그를 발견할 수 있지만 이러한 예외는 개발자가 개선하는 데 사용되어야 합니다.

문제의 일부는 시간당 $100의 개발자와 시간당 $30의 테스터를 사용하는 것일 수 있습니다.그러나 비용에 관계없이 개발 주기 초기에 발견된 버그가 필연적으로 더 저렴하다는 것을 알면 개발자가 더 많은 테스트를 자체하게 함으로써 여전히 비용을 절약할 수 있을 것입니다.높은 연봉을 받는 개발팀과 해킹 테스터가 있다면 분명 크고 분명한 문제를 많이 발견할 수 있지만 나중에 다시 찾아올 더 모호한 버그를 많이 놓칠 것입니다.

따라서 귀하의 질문에 대한 대답은 테스터가 원하는 만큼 테스트해야 한다는 것입니다.모든 테스터를 해고하고 개발자가 모든 테스트를 수행하도록 할 수도 있고, 테스터 군대를 고용하여 개발자가 원하는 것을 확인하도록 할 수도 있습니다.

현재 상태를 유지하려는 두 가지 유형의 qa 그룹이 있습니다.우리는 항상 그랬습니다.그들은 일을 더 효율적으로 만들고 그리하여 자신의 안전 지대를 벗어나려고 노력하는 사람들을 자연스럽게 싫어하고 제거합니다.그런 일이 한 번 이상 나에게 일어났습니다.불행히도 QA 관리자는 QA 팀만큼 무능합니다.따라서 지난 6년 동안 관리해 온 QA 관리자는 모든 자동화를 중단하고 존재를 정당화하기 위해 많은 프로세스를 도입할 것입니다. 이는 이를 인식하는 상위 경영진의 책임입니다.도구를 아는 다소 기술적인 사람들이 있습니다.불행히도 프로그래밍 언어는 도구가 아니라 비전입니다.그러한 사람들과 함께 일하는 것은 그들이 얼마나 배우고자 하는지, 경영진이 상황을 변화시키는 위험을 얼마나 감수할 의지가 있는지에 달려 있습니다.테스트는 유지 관리가 쉬운 객체 지향 구조로 작성된 메인 코드와 동일한 방식으로 작성되어야 합니다.나는 개발자들이 QA 테스트를 검토해야 한다고 생각합니다.대부분의 경우 자동화가 아무것도 테스트하지 않는 것을 발견했습니다.불행히도 QA 작업은 하위 클래스로 간주되므로 개발자는 신경 쓰지 않습니다.그룹 내 영향력 있는 개발자가 내 노력을 관리자에게 기꺼이 설명할 수 있는 지원을 받을 때 나 자신도 행운을 얻습니다.불행하게도 절반만 작동합니다.테스터 IMHO는 개발 관리자에게 보고해야 합니다.그리고 QA 테스트가 실제로 무엇을 테스트하는지에 대해서는 모든 팀이 책임을 져야 합니다.

개발자 테스트가 가장 효율적이고 가장 높은 성과를 거두는 몇 가지 방법은 다음과 같습니다.

  • 개발자가 기능 작업 중에 공유 라이브러리를 수정합니다. 개발자는 QA/검증이 수행하지 못하는 가능한 부작용에 대한 통찰력을 가지고 있습니다.
  • 개발자는 라이브러리 호출 성능을 확신하지 못하고 단위 테스트를 작성합니다.
  • 개발자는 코드가 지원해야 하는 사양에서 고려되지 않은 사용 사례의 경로를 발견하고, 코드를 작성하고, 사양을 업데이트하고, 테스트를 작성합니다.

세 번째 예에서 개발자가 얼마나 많은 테스트 의무를 수행해야 하는지에 대해서는 논쟁의 여지가 있지만, 여러 계층의 문서 및 코드에서 관련된 모든 세부 사항이 이미 단기 기억에 있기 때문에 개발자에게 가장 효율적이라고 주장합니다.이 완벽한 폭풍은 사후 테스터가 달성하지 못할 수도 있습니다.

QA 또는 검증에 대해 이야기하고 있습니까?저는 QA를 검사 체크리스트, 코드 표준 시행, UI 가이드라인 등으로 생각합니다.검증에 관해 말하면 개발자가 공식 테스트 사례를 작성하고 실행하는 데 많은 시간을 소비하는 것은 타당하지 않지만 개발자는 좋은 테스트를 작성하는 데 필요한 모든 근거와 설계 문서를 제공해야 합니다.

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