단위 테스트는 개발 또는 테스트입니까?


24

단위 및 통합 테스트의 역할에 대해 테스트 관리자와 논의했습니다. 그녀는 개발자에게 유닛 및 통합 테스트 대상 및 방법을보고하도록 요청했습니다. 저의 관점은 단위 및 통합 테스트가 테스트 프로세스가 아닌 개발 프로세스의 일부라는 것입니다. 의미를 넘어서는 의미는 단위 및 통합 테스트가 테스트 보고서에 포함되어서는 안되며 시스템 테스터는 이에 대해 걱정해서는 안된다는 것입니다. 나의 추론은 두 가지에 근거합니다.

  1. 단위 및 통합 테스트는 항상 인터페이스 및 계약에 대해 계획 및 수행됩니다. 공식화 된 계약을 사용하는지 여부에 관계없이 방법, 예를 들어 계약서 등 수행 할 작업을 계속 테스트합니다.

    통합 테스트에서는 두 개의 서로 다른 모듈 간의 인터페이스를 테스트합니다. 인터페이스와 계약에 따라 테스트 통과시기가 결정됩니다. 그러나 항상 전체 시스템의 제한된 부분을 테스트합니다. 반면에 시스템 테스트는 시스템 사양에 따라 계획되고 수행됩니다. 사양에 따라 테스트 통과시기가 결정됩니다.

  2. 폭과 심도 및 통합 테스트를 (시스템) 테스터에게 전달하는 데 아무런 가치가 없습니다. 특정 비즈니스 계층 클래스에서 수행되는 단위 테스트 종류를 나열하는 보고서를 작성한다고 가정합니다. 그에게서 무엇을 빼앗아 야합니까?

    테스트해야 할 것과 그렇지 말아야 할 것을 판단하는 것은 모든 단위 및 통합 테스트를 통과하더라도 시스템이 사양에 필요한 방식으로 작동하지 않을 수 있기 때문에 잘못된 결론입니다.

이것은 쓸모없는 학문적 토론처럼 보일 수 있지만, 내가 공식적인 환경에서 일하는 경우 실제로 우리가하는 일을 결정하는 것이 중요합니다. 어쨌든, 나는 완전히 틀린가?


9
상관이 있나?
yannis 2016 년

5
@YannisRizos 제목에서, no. 전체 질문에서, 그것은 certanly 그래서 이리저리 묻는 사람이 보인다
루드비히 그누

2
@Rubio 귀하의 질문에 따르면 단위 테스트에 대한 보고서는 시스템 테스터에게는 쓸모가 없다는 데 동의합니다. 단위 테스트는 개발자에게 유용한 도구입니다. 테스트 관리자는 이러한 보고서의 필요성을 어떻게 자극합니까?
Ludwig Magnusson 2016 년

2
@LudwigMagnusson True 그러나 요청하는 사람 에게만 중요한 경우 너무 현지화되어 있습니다.
yannis

5
테스트 관리자 에게보고하는 개발자 는 무엇이든지간에 잘못되었습니다. 그녀가 당신의 ( dev manager )를 통해 그 요청을 통과했다면 , 당신은 당신의 상사가 말한 것을해야 할 것입니다. "내 관리자와 대화" 는 "엄격한 공식 환경"에서 자신의 것으로 사용하는 방법을 알아야하는 무기입니다.
gnat

답변:


30

자동화 된 테스트 작성은 개발자의 작업입니다. 테스트는 코드베이스의 일부이므로 처리해야합니다. 프로젝트의 나머지 부분과 동일한 코드 검토, 코딩 표준, 소스 제어 규칙 등이 적용되어야합니다.

상기 테스트를 수행하는 것은 두 가지 이유에서 수행된다 : 첫째, 개발자를 안내하는 도구로서. 테스트를 실행하여 방금 작성한 코드가 예상대로 작동하는지 확인하고 추가 문서로 사용하며 변경 사항으로 인해 기존 기능이 손상되지 않는지 확인합니다. 실제 TDD를 수행하는 경우 테스트는 기술 사양의 권위있는 소스이기도합니다. 테스트를 사용해야하는 두 번째 이유는 QA 및 배포 중입니다. 모든 자동 테스트를 실행하는 것은 모든 테스트 라운드의 첫 단계 중 하나 여야합니다. 자동화 된 테스트를 실행하는 것은 저렴하며 (실제로 인력이 전혀 필요하지 않음) 자동화 된 테스트에 실패한 경우 수동 테스트를 수행하는 것은 의미가 없습니다.

이것은 책임이 다음과 같아야 함을 의미합니다.

  • 개발자는 자동 테스트를 작성합니다
  • 개발자는 개발 워크 플로의 일부로 필요에 따라 개별 자동화 테스트를 실행합니다
  • QA는 테스트의 첫 단계 중 하나로 모든 자동 테스트를 실행합니다.

빌드 서버가있는 경우 QA의 작업 (자동 테스트 관련)이 "빌드 서버의 보고서를 열고 모든 것이 녹색인지 확인"으로 귀결됩니다.


내가 게시 할 줄을 따라 정확하게 게시했습니다. 오직 qualm만이 단위 테스트에 지나치게 의존하고 있으며 통합 테스트는 도로 문제를 야기 할 수 있습니다. QA의 작업이 빌드 서버를 확인해야한다는 사실에 동의하지 않습니다 (허드슨과 같은 것을 의미한다고 가정합니다). 이로 인해 모든 테스트 부담이 개발자에게 항상 모든 비즈니스 논리를 포괄하는 테스트를 작성해야하는 부담이되고 있습니다.
dardo 2016 년

4
@dardo : 물론 자동화 된 테스트 수행해야하는 테스트는 아닙니다. 그렇지 않으면 QA를 완전히 제거 할 수 있습니다. 모든 소프트웨어 제품의 매우 중요한 측면은 단순히 자동으로 테스트 할 수 없습니다. 내 말은 자동화 된 테스트가 존재한다고해서 QA는 빌드 서버의 출력을 확인하는 것 이상으로 걱정할 필요가 없다는 것입니다. 그 후, 그들은 완성 된 빌드에서 수동 및 반자동 테스트와 같은 정상적인 작업을 수행합니다.
tdammers 2016 년

아 그래, 그들은 등을 통과 할, 그들은 거기에, 정렬 체크 포인트와 같은 100 % 동의
dardo

@tdammers-테스트는 품질 보증의 일부에 지나지 않습니다.
Matthew Flynn

2
훌륭한 답변이지만 테스트가로 표시되어야한다는 데 동의하지 않습니다 an authoritative source of technical specifications. 테스트는 사양을 확인해야하지만 반드시 교체는 아닙니다. 즉, 내가 큰 선구자 사양을 옹호하는 것이 아니라 시스템을 작동시키는 방식보다는 시스템 작동 방식에 대해 우리가 알고있는 것을 검증하기 위해 테스트를 적용한다는 점을 구별하고 있다는 것입니다. 테스트는 행동을 정의합니다. 어쩌면 중요한 차이점이지만 그럼에도 불구하고 중요합니다.
S.Robins 2016 년

10

그녀에게 그 보고서가 필요한 이유 를 분명히 밝히는 것이 가장 중요하다고 생각합니다 .

매우 다양한 전략이 필요한 여러 가지 설명이있을 수 있습니다 (여러 답변에서 제안한대로).

  • 그녀가 합리적인 사람이고, 단순히 테스트 팀의 작업을 돕기 위해 정보를 얻고 자한다면, 일반적인 이해를 얻고 두 사람에게 적합한 솔루션을 찾는 것이 합리적입니다. 단위 테스트의 특성과 단위 대 기능 / 시스템 / 수락 테스트의 기본 차이점에 대해 논의 할 수 있습니다. 바라건대 당신은 그녀가 이것들이 매우 다른 수준에서 작동하고 다른 것을 대체 할 수 없다는 것을 이해할 수 있습니다.
  • 그녀가 통제 괴물이나 관료라면 그것을 위해서만 보고서를 요구하면 최소한의 노력으로 그녀의 변덕을 만족시킬 수있는 무언가를 만들 수 있습니다 (예 : @Doc이 제안한 :-).
  • 그녀가 파워 ​​게임을하고 있다면 개발자에게 보고서를 요구할 권리가 있는지 의문을 가질 수 있습니다. 내 경험상 개발자는 대개 QA 부서에보고하지 않아야합니다.

좋은 지적입니다. 그녀는 합리적인 사람처럼 보인다. 내가 매우 명확하게 밝히지 않은 나의 두려움은 단위 테스트가 테스터를 테스트하고 필요로하지 않는 방향으로 잘못된 방향으로 이끌고 잘못된 보안을 이끌어내는 것입니다.
Rubio

2
@Rubio는 실제로 단위 테스트가 시스템 테스트를 대체 할 수 없다는 점을 분명히해야합니다. 실제로 특정 모듈의 높은 유닛 테스트 범위는 시스템 테스트 중에 해당 모듈에 특별한주의가 필요하다는 경고 신호일 수도 있습니다! 개발자가 많은 테스트를 작성하기 위해 추가로 어려움을 겪는 경우 코드가 최근에 크게 변경 / 확장되었거나 버그로 가득했을 수 있습니다.
Péter Török 2016 년

7

QA 및 개발의 역할과 상호 작용은 조직마다 크게 다를 수 있다고 생각합니다. 그러나 일반적으로 팀에서는 멤버에게 참여하여 기본적으로 품질 보증 팀이없는 것처럼 가장하여 프로덕션으로 진행중인 변경에 대한 책임을 진다고 말합니다. Google 품질 관리팀은 개발자 테스트에 대해 많이 생각하지 않으며 시스템 전체를 기능적으로 전체적으로 테스트합니다.

이러한 이유로 Google의 품질 관리팀은 테스트를 시작하기 전에 단위 테스트가 무엇인지, 단위 테스트가 아닌지에 대해 전혀 신경 쓰지 않습니다.

QA 팀이 단위 테스트가 무엇을 다루고 다루지 않는지를 높은 수준에서 이해하는 것이 도움이된다고 생각합니다.이를 통해 우리는 간격과 더 엄격한 부분을 파악하기 위해 공동으로 작업 할 수 있습니다. 따라서 동료는 세부적인 내용과 달리 높은 수준의 요약을 얻은 것일 수 있습니다.


5

그녀는 개발자들이 유닛 및 통합 테스트 대상과 방법을보고한다고 주장했다.

그녀는 실제로 이런 종류의 테스트가 실제로 "개발"영역에 있는지에 대해 논쟁하려고합니까, 아니면 코드가 단위 테스트에 얼마나 잘 적용되는지 알아 내려고합니까? 귀하가 제공 한 정보를 살펴보면 코드의 어느 부분이 다루어지고 어디에서 팀의 노력을 집중해야 하는지를 알고 싶어하는 것 같습니다.

개발 직책으로 이사하기 전에 학교 밖에서 테스트 팀에서 일했으며 이것이 팀과 팀에게 어떻게 가치가 있는지 알 수 있습니다.


1
그러나 초점이 사양에서 나오지 않아야합니까? 코드 변경에 예기치 않은 영향이 발생하는 상황이 있으며 개발자가 테스트에서이 사항과이 사항을 모두 다루어야한다는 점을 알리는 것이 매우 중요합니다.
Rubio

1
@Rubio : 물론, 실제적으로 볼 때, 그녀의 관점에서 그것을보십시오. 응용 프로그램의 모든 부분이 단위 테스트에서 다루는 코드의 양이 완벽하게 동일하지 않다고 가정하면 제한된 범위의 자원을 더 적은 적용 범위로 응용 프로그램 부분에 전용하고 싶지 않습니까? 제 보고서는 보고서를보고 팀원에게 "문제가 있습니다. 영역 X는 영역 Y보다 테스트 대상 코드가 적은 것 같습니다. 영역 X에서 테스트를 실행하는 데 중점을
두겠습니다

@Rubio : 그렇습니다. 그러나 TDD (즉, BDD)를 올바르게하고 있다면 테스트는 우선 사양에 맞지 않아야합니다. 회사가 진정으로 깨달은 경우 테스트 팀은 개발자 팀에 대한 테스트를 작성할 수 있습니다.
gbjbaanb

2
테스트 대상 : 자동 생성 된 코드 범위 보고서. 테스트 방법 : 단위 테스트 코드를 읽으십시오. @gbjbaanb : "테스트 팀은 개발자 팀을위한 테스트를 작성할 수 있습니다." 그 말에는 너무나 많은 것들이 있는데, 매우 나쁜 생각을 제외하고는 어디서부터 시작 해야할지 모르겠습니다 .
BryanH 2016 년

5

나는 그것이 너무 중요하다는 것을 알지 못한다.

QA / Testing에 제공하지 않고 적절한 테스트를 수행하지 않고 프로덕션에서 실패하면 지정된대로 작동하는지 확인하지 않고 QA를 통해 프로덕션으로 전환하는 것은 결함입니다.

QA / 테스트에 제공하고 적절한 테스트를 수행하지 않으면 제공하지 않은 것과 동일한 결과를 얻습니다.

그러나 당신이 그것들을 제공한다면, 그들은 또한 그것들을 스펙과 비교하고 그리고 / 또는 어떤 테스트에 결함이 있는지, 또는 버그를 발견했기 때문에 변경이 필요한지를 제안 할 수 있습니다.

실제로, 나는 그들을 제공하는 데 많은 단점을 보지 못합니다. 사양에 대한 유효성 검사는 여전히 품질 보증 / 테스트 중입니다. 그들이 게으른 길을 가고 그들이 모두 통과했기 때문에 테스트가 충분하다고 신뢰한다면, 그것은 그들의 일에 실패한 것입니다. 그들이 여전히 스펙을 가지고있는 한, 단위 / 통합 테스트의 결과는 단지 보풀 일 뿐이며, 어떤 식 으로든 당신을 해칠 수 없습니다. 이것이 우리가 dev와 QA를 가진 이유입니다. 앱이 지정된대로 수행되는지 여러 번 확인합니다.

개발자는 실수를하고, QA는 실수를합니다. 이상적으로는 같은 항목에 대해 실수를하지 않습니다.


2
나에게 단점은 가치가 없거나 거의없는 추가 작업입니다.
Rubio

@Rubio, 어떤 추가 작업이 있습니까? 결과를 인쇄하십시오. 이름이 잘 지정되면 테스트 대상을 알려줍니다. 실제 코드 나 메소드 작동 방식에 대한 설명이 필요하지 않습니다. 그렇게하면 스스로 찾아 볼 수 있습니다.
CaffGeek

1
통과 된 3500 단위 / 통합 테스트에 대한 보고서를 생성하는 것은 테스트 이름이 잘 지정되어 있지만 (그렇지 않아도되어야 함) 테스터에게는 거의 도움이되지 않습니다. 테스터에게 단위 테스트에 대한 의미있는 정보를 제공하기 위해 개발자는 특정 기능과 관련된 단위 테스트를 파헤쳐 실제 테스트 대상과 어설 션이 어떻게 테스터에게 전달해야합니다. 많은 작업입니다.
Rubio

1
@Rubio-자동화는 당신의 친구입니다. 체크인이있을 때마다 보고서를 우편으로 보내는 지속적인 통합 서버를 설정할 수 있습니다 (이 또한 도움이됩니다). QA가 테스트 및 코드에 대한 설명을 요청하는 경우 합리성 수준을 넘어 "개념 파악 실패"영역으로 넘어간 것 같습니다. 그들이 코드를 읽을 수 없거나 읽을 수 없다면 쓸모가 없습니다. 이 시점에서 관리자와의 대화가 도움이 될 것입니다. "QA는 시간의 x %를 코드를 읽는 데 도움을주기를 원합니다. 괜찮습니까?"
BryanH 2016 년

1
+1 은 소프트웨어 를 독립적으로 테스트 할 책임이 QA에 있다고해서도 안됩니다 .

2

단위 테스트는 코드 조각 자체의 작동 방식을 이해하는 데 유용 할 수있는 개발자의 책임입니다. 일부는 이것을 문서 형식으로 볼 수 있으므로 단위 테스트를 정기적으로 변경하면 오버 헤드가있을 수 있지만 가치가 있습니다.

테스트를 통과 할 때의 또 다른 가치는 기본 기능을 보장하는 측면에서 중복 될 수있는 테스트를 두 배로 늘릴 수 없다는 것입니다.

최종 사용자가 시스템의 작동 방식에 대한 자신의 이해를 가질 수 있기 때문에이 모든 것과 별 개인 사용자 승인 테스트도 있습니다.


1
중복 테스트는 종종 인수로 사용되며 때로는 사실 일 수 있습니다. 그러나 시스템 테스트는 항상 전체 시스템에서 수행되는 반면 장치 / 통합 테스트는 특정 장치에 중점을 둡니다. 여기에 위험이 있습니다.
Rubio

2

귀사에 자사 제품의 품질을 보장하기 위해 정의 된 방법론이있는 경우 (SOX 호환이거나 CMMI 레벨을 개선하려는 경우에는 가능할 것임), 제품은 프로세스를 입증하기 위해 감사를 견딜 수 있어야합니다. 따라 갔다.

정의 된 프로세스에는 종종 단위 테스트가 포함됩니다. 불행히도 이것은 또한 단위 테스트를 문서화하고 감사를 위해 실행되었음을 증명해야한다는 것을 의미합니다. 따라서 단위 테스트를보고 할 방법이 필요합니다.

Sonar와 같은 도구를 사용하면 코드 적용 수준과 단위 테스트 실행 결과를보고 할 수 있습니다.


SOX 아니오, CMMI 예 우리의 단위 / 통합 테스트는 코드 검토 프로세스의 일부이며 감사를 견뎌냅니다. 단위 / 통합 테스트 실행에서 생성 된 보고서를 얻을 수는 있지만 테스터에게는 매우 암호입니다. 커버리지도 보고서에 있지만 그 자체로는 아무 의미가 없습니다.
Rubio

먼저 테스트에 암호 이름을 지정하지 마십시오. dannorth.net/introducing-bdd를 확인하십시오 . 둘째, 코드 적용 범위는 테스트의 품질에 대해 많이 말하지 않을 수 있지만 최소한 테스트되는 단위가 대부분의 코드가 실행될 때 폭발하지 않는다는 것을 보여줍니다.
Matthew Flynn 2016 년

좋은 연결, 감사합니다. 단위 테스트의 이름을 지정하는 다양한 방법을 모색 한 훌륭한 잡지 기사를 읽었지만 지금은 찾을 수 없습니다. Visual Studio Magazine 또는 Code Magazine 일 수 있습니다.
Rubio

2

이것은 실제로 회사에 달려 있지만 기존의 접근법에서 시스템 테스터로 일한 경험이 있지만 CD 모델의 민첩한 팀에서 일하는 테스터로 일하면서 테스팅 및 통합 테스트 대상이 무엇인지 아는 것이 매우 유용합니다.

품질은 팀의 책임입니다. 개발자, 테스터 및 제품 관리 및 협력은이를 보장하는 가장 좋은 방법입니다.

따라서 테스트 관리자는 단위 및 통합 테스트 대상을 알고 싶어하며 개발자에게는 약간의 추가 작업이지만 프로젝트의 전체 작업을 저장합니다! 정보를 테스트 관리자에게 제공함으로써 테스트 팀의 노력이 중요하고 중요한 것에 집중할 수 있습니다. 앞에서 언급했듯이 코드 영역이 단위 테스트되지 않은 경우 팀은 심하게 테스트 된 영역과 비교하여 노력을 집중할 수 있습니다. 정시에 출시 된 고품질 소프트웨어라는 동일한 목표를 향해 노력하고 있습니다.


1

이런 종류의 것을 제공하는 것이 유리할 것이라고 생각합니다. 단위 테스트 범위는 개발 및 테스트에서 알려진 것으로서이를 설명 할 수 있어야합니다.

분명히, 당신은 비즈니스 중요 사항을 테스트해야합니다. 단위 테스트 적용 범위가 큰지 여부에 관계없이 일반적으로 사용되는 기능을 열심히 테스트해야합니다. 다른 장소가 단위 테스트로 덮여 있는지 알려주는 것은 아프지 않았습니다. 이 작은 컨트롤에서 코드가 이미 엣지 케이스를 확인합니까? 이런 종류의 물건은 사업의 모든 측면에서 아는 데 도움이됩니다.


나는 비슷한 대답을 쓰려고했다. 단위 테스트는 소프트웨어 개발자의 영역에서 이루어져야하지만 테스트 팀에 코드 적용 범위를 제공하면 테스트 팀이 테스터의 큰 관심을 필요로하는 특정 영역을 이해하고 대상으로 지정할 수 있습니다. 또한 개발자가 비용 대비 효과가 큰 최첨단 사례를 설명 할 수 있도록 게임을 계속 유지하는 방법이 될 수 있습니다. 이를 통해 테스트 팀은 시스템 전체의 유효성을 검사 할뿐만 아니라 테스트 비용이 많이 드는 것으로 보이는 모든 항목을 설명 할 수 있습니다.
S.Robins 2016 년

1

"Google의 소프트웨어 테스트 방법"책에서 논의 된 접근 방식을 언급 할 가치가 있습니다. 테스트 및 품질 관리는 모든 사람의 책임이며 표준은 엄격합니다.

실제 전통적으로 "테스트"부서 소위의 역할은 실제로 개발자의 생산성이다; 즉, 조직이 경제적으로 필요한 수준의 엄격 성을 달성 할 수 있도록하는 자동화.

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