여전히 단위 테스트라고하는 함수를 테스트하여 함수를 테스트하는 테스트 방법입니까?


11

함수 B를 테스트하는 경우 함수 B를 호출하는 함수 C를 테스트하여, 즉 함수 B를 호출하는 함수 C를 테스트하기위한 테스트 프로그램을 작성하여 테스트 방법을 여전히 단위 테스트라고합니까?

대상 함수를 호출하는 함수에서 간접 테스트를 선호하는 경우는 언제이며 함수를 직접 테스트하는 것이 선호되는 경우는 언제입니까?

답변:


9

단위 테스트 의 일반적인 정의 는 ISTQB의 정의입니다 .

단위 테스트는 함수, 클래스, 프로 시저, 인터페이스와 같은 응용 프로그램에서 테스트 할 수있는 가장 작은 부분입니다. 단위 테스트는 소스 코드의 개별 단위를 테스트하여 사용하기에 적합한 지 결정하는 방법입니다.

이 정의에 따르면 :

  • B에 대한 테스트 프로그램을 작성하면 B의 단위 테스트입니다.
  • C에 대한 테스트 프로그램을 작성하면 C의 단위 테스트입니다.

이제 의도와 테스트 범위에 차이가있을 수 있습니다. C를 사용하여 B에 대한 테스트 프로그램을 작성하는 경우 여전히 C의 단위 테스트입니다. C에 입력을 제공하고 B가 올바른지 출력을 기반으로 확인하기 만하면되기 때문입니다. C가 작동하기 때문에 B가 작동한다고 추론하는 것입니다.

통합 테스트 정의도 있습니다 .

인터페이스 및 통합 구성 요소 또는 시스템 간의 상호 작용에 결함을 노출시키기 위해 테스트를 수행했습니다.

소프트웨어 구성 요소의 일반적인 정의는 소프트웨어 구성 요소가 독립적 이며 자체적으로 배포 할 수 있음을 의미합니다 . 여기서 B와 C는 독립적 인 구성 요소가 아닌 것이므로 통합 테스트가 없습니다.


5

이것은 당신이 유닛을 어떻게 생각 하느냐에 달려 있습니다. 경우 C별도로 테스트하는 것은 이해가되지 않습니다 너무 간단하고, 다음 테스트는 단위 테스트입니다.

더 중요한 것은 특정 장치에 대한 단위 테스트 세트 가 100 %에 가까운 라인 범위를 가지며 실제로 예상되는 모든 코드 경로를 테스트하는 것입니다.


1

예, 함수가 다른 함수를 호출하면 여전히 단위 테스트라고합니다.

단위 테스트는 개인 구현이 아닌 클래스의 공개 동작을 테스트해야합니다. 화장실 기사에 대한 Google의 테스트에서 제안한 바와 같이 .

Clean Code 의 규칙을 따르는 경우 함수는 4 줄보다 길면 안됩니다. 이것은 단위 테스트로 다른 개인 기능을 테스트하지 못하게합니다.

왜 대부분의 개인 기능을 개별적으로 단위 테스트하지 않아야합니까? 리팩토링 때문에 강제 귀하의 모든 구현 단위 테스트를 업데이트 유지. 리팩토링 중에는 공개 동작이 변경되지 않아야하므로 테스트를 업데이트 할 필요가없는 반면,이를 많이 사용하면 문제가 발생할 수 있습니다. 공개 부모와 함께 개인을 테스트 할 수 있어야합니다. 때로는 복잡한 개인을 시험해 볼 가치가 있지만, 별도의 수업이어야하는지 궁금하십니까?

통합 테스트 :

이제 함수가 다른 클래스의 일부이면 다릅니다. 그런 다음 컴포넌트 테스트 또는 통합 테스트라고합니다. 여러 클래스를 통합하고 이에 대한 테스트를 실행하고 있습니다. 함수 B는 함수 C에 의존합니다. 함수 B를 테스트하려면 의존성 주입 을 사용하여 테스트중인 함수 를 분리 할 수 있습니다 . 이제 다시 단위 테스트가됩니다.

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