[unit-testing] 단위 테스트와 기능 테스트

단위 테스트와 기능 테스트의 차이점은 무엇입니까? 단위 테스트도 기능을 테스트 할 수 있습니까?



답변

단위 테스트-클래스의 메소드 (함수)와 같은 개별 단위를 테스트하여 모든 종속성을 조롱합니다.

기능 테스트-AKA 통합 테스트. 시스템의 기능 조각을 테스트합니다. 이것은 많은 방법을 테스트하고 데이터베이스 또는 웹 서비스와 같은 종속성과 상호 작용할 수 있습니다.


답변

단위 테스트는 개발자에게 코드가 올바르게 작동하고 있음을 알려줍니다. 기능 테스트는 개발자에게 코드가 올바른 작업을 수행하고 있음을 알려줍니다 .

단위 테스트와 기능 테스트 에서 더 많은 내용을 읽을 수 있습니다


단위 테스트 및 기능 테스트에 대한 실생활 비유를 잘 설명하면 다음과 같이 설명 할 수 있습니다.

많은 경우 시스템 개발은 집을 짓는 것과 비슷합니다. 이 비유는 정확하지 않지만 단위 테스트와 기능 테스트의 차이점을 이해하기 위해 확장 할 수 있습니다.

단위 테스트는 주택 건설 현장을 방문하는 건물 관리자와 유사합니다. 그는 집안의 다양한 내부 시스템, 기초, 프레임, 전기, 배관 등에 중점을 둡니다. 그는 집안의 일부가 정확하고 안전하게 작동하는지, 즉 건축법을 준수하는지 확인합니다.

이 시나리오의 기능 테스트는 동일한 건설 현장을 방문하는 주택 소유자와 유사합니다. 그는 내부 시스템이 적절하게 작동하고 건물 관리자가 자신의 작업을 수행한다고 가정합니다. 주택 소유자는이 집에서 살게 될 것에 초점을 맞 춥니 다. 그는 집의 외모에 관심이 있으며, 다양한 방이 편안한 크기이며, 집이 가족의 요구에 적합합니까, 아침 햇살을 잡기 좋은 곳의 창문입니다.

주택 소유자가 집에서 기능 테스트를 수행하고 있습니다. 그는 사용자의 관점을 가지고 있습니다.

건물 관리자가 집에서 단위 테스트를 수행하고 있습니다. 그는 건축업자의 관점을 가지고 있습니다.


요약하면

단위 테스트는 프로그래머의 관점 에서 작성되었습니다 . 클래스 의 특정 메소드 (또는 단위 )가 특정 태스크 세트를 수행하도록하기 위해 작성됩니다.

기능 테스트는 사용자의 관점 에서 작성되었습니다 . 사용자가 원하는대로 시스템이 작동 하는지 확인합니다 .


답변

  • 단위 테스트는 독립적 인 행동 단위를 테스트합니다 . 행동의 단위는 무엇입니까? 독립적으로 단위 테스트를 수행 할 수있는 가장 작은 시스템입니다. (이 정의는 실제로 원형입니다. IOW 는 전혀 정의 아니지만 실제로 직관적으로 이해할 수 있기 때문에 실제로 잘 작동하는 것 같습니다.)

  • 기능 테스트는 독립적 인 기능을 테스트합니다.


  • 행동 단위는 매우 작습니다. 저는이 어리석은 “방법 당 하나의 단위 테스트”만트라를 절대 싫어하지만, 크기 관점에서 보면 그것은 옳습니다. 행동 단위는 방법의 일부와 몇 가지 방법 사이에있는 것입니다. 기껏해야 하나 이상의 개체가 아닙니다.

  • 기능은 대개 여러 가지 방법으로 구성되며 여러 객체를 가로 질러 여러 아키텍처 레이어를 통해 잘라냅니다.


  • 단위 테스트는 다음과 같습니다. validate_country_code()함수를 호출 하고 국가 코드를 전달하면 'ZZ'반환해야합니다 false.

  • 기능 테스트는 다음과 같습니다. 국가 코드로 배송 양식을 작성 ZZ하면 메뉴에서 국가 코드를 선택할 수있는 도움말 페이지로 리디렉션되어야합니다.


  • 단위 테스트는 개발자의 관점에서 개발자를 위해 개발자가 작성합니다.

  • 기능 테스트는 사용자를 대상으로 할 수 있으며,이 경우 사용자 관점에서 사용자와 함께 (또는 사용자가 직접 올바른 도구 및 올바른 사용자를 사용하여) 개발자가 작성합니다. 또는 개발자가 직면 할 수도 있습니다 (예 : 사용자가 신경 쓰지 않는 일부 내부 기능을 설명 할 때). 개발자의 경우 개발자가 작성하지만 여전히 사용자의 관점에서 작성됩니다.


  • 전자의 경우, 기능 테스트는 수용 테스트 및 기능 요구 사항 또는 기능 사양의 실행 가능한 인코딩으로도 사용될 수 있으며, 후자의 경우 통합 테스트로도 사용될 수 있습니다.

  • 단위 테스트는 자주 변경되며 기능 테스트는 주요 릴리스 내에서 변경되지 않아야합니다.



답변

TLDR :

질문에 대답하기 위해 : 단위 테스트 기능 테스트 의 하위 유형 입니다.


기능비 기능 테스트 라는 두 가지 큰 그룹이 있습니다 . 내가 찾은 최고의 (완전하지 않은) 그림은 이것입니다 (source : www.inflectra.com ) :

여기에 이미지 설명을 입력하십시오

(1) 단위 테스트 : 작은 코드 조각 (기능 / 방법)의 테스트. (화이트 박스) 기능 테스트로 간주 될 수 있습니다.

함수가 결합되면 테스트 할 수있는 사용자 인터페이스 (모듈 테스트)를 사용하여 모듈 = 독립형을 만듭니다. 최소한 두 개의 별도 모듈이 있으면 서로 붙인 다음에옵니다.

(2) 통합 테스트 : 두 개 이상의 (서브) 모듈 또는 (서브) 시스템을 함께 모아서 잘 작동하는지 확인하십시오.

그런 다음 3 번째 모듈을 통합 한 다음 4 번째와 5 번째 순서를 자신이나 팀이 원하는 순서대로 통합하고 모든 퍼즐 조각을 한 번에 배치하면

(3) 시스템 테스트 : SW 전체를 테스트합니다. 이것은 거의 ” 모든 조각 의 통합 테스트 “입니다.

괜찮 으면옵니다

(4) 수락 테스트 : 고객이 실제로 요청한 것을 구축 했습니까? 물론 승인 테스트는 고객이 스포츠카를 원했고 밴을 제작했음을 알 수있는 마지막 단계뿐만 아니라 수명주기 전체에서 수행해야합니다 .

여기에 이미지 설명을 입력하십시오


답변

“기능 테스트”는 코드에서 함수 (방법)를 테스트한다는 의미는 아닙니다. 일반적으로 시스템 기능을 테스트하고 있음을 의미 foo file.txt합니다. 명령 줄에서 실행 하면 줄 file.txt이 바뀔 수 있습니다. 대조적으로, 단일 단위 테스트는 일반적으로 단일 방법의 단일 사례에 적용됩니다. length("hello")5 length("hi")를 반환하고 2를 반환해야합니다.

단위 테스트와 기능 테스트 사이의 라인에 대한 IBM의 의견 도 참조하십시오 .


답변

그러나 기본적인 차이점은 기능 테스트는 사용자 관점에서 외부에서 애플리케이션을 테스트한다는 것입니다. 단위 테스트는 프로그래머의 관점에서 애플리케이션을 내부에서 테스트합니다. 기능 테스트는 올바른 기능으로 응용 프로그램을 작성하는 데 도움이되며 실수로 응용 프로그램을 중단하지 않도록 보장해야합니다. 단위 테스트는 깨끗하고 버그가없는 코드를 작성하는 데 도움이됩니다.

Harry Percival의 “Python TDD”책에서 발췌


답변

ISTQB에 따르면이 두 가지는 비교할 수 없습니다. 기능 테스트는 통합 테스트가 아닙니다.

단위 테스트는 테스트 수준 중 하나이며 기능 테스트는 테스트 유형입니다.

원래:

시스템 (또는 구성 요소)의 기능은 ‘무엇인가’입니다. 이는 일반적으로 요구 사항 사양, 기능 사양 또는 사용 사례에 설명되어 있습니다.

동안

단위, 모듈 및 프로그램 테스트라고도하는 구성 요소 테스트는 별도로 테스트 가능한 소프트웨어 (예 : 모듈, 프로그램, 객체, 클래스 등)의 결함을 검색하고 기능을 검증합니다.

ISTQB 구성 요소 / 단위 테스트에 따르면 기능적이거나 기능적이지 않을 수 있습니다.

구성 요소 테스트에는 기능 테스트 및 리소스 동작 (예 : 메모리 누수), 성능 또는 견고성 테스트, 구조 테스트 (예 : 의사 결정 범위)와 같은 특정 비 기능적 특성 테스트가 포함될 수 있습니다.

소프트웨어 테스팅 기초 에서 인용 -ISTQB 인증