통합 테스트와 기능 테스트의 차이점은 무엇입니까? [닫은]


132

기능 테스트와 통합 테스트가 동일합니까?

단위 테스트를 통해 테스트를 시작한 다음 단위 테스트를 완료 한 후 시스템 전체를 테스트하는 통합 테스트를 진행합니다. 기능 테스트는 통합 테스트와 동일합니까? 여전히 시스템 전체를 사용하여 기능 적합성을 테스트합니다.


1
[애자일 방식 : 통합 테스팅 vs 기능 테스팅 또는 둘 다의 가능한 복제본? ] ( stackoverflow.com/questions/555899/… )
Pascal Thivent

14
지난 질문에 대한 답변을 받아 주시겠습니까?
스테파노 보리 니


6
이 질문은이 사이트의 문제점을 나타냅니다. 이 질문에 어떤 문제가 있습니까? 너무 광범위합니까? 프로그래밍과 관련하여 매우 구체적인 것을 요구하고 있습니다. 어떤 것의 차이점은 수학적으로 표현 될 수도 있습니다. 설명 할 수없는 이유로 종료되는 정말 중요하고 실제로 관련된 수많은 질문이있는 것 같습니다. 나는 당신이 진지하다는 것을 알고 사람들이 내가 틀렸다고 말하지만 Quara.com과 같은 사이트에 이러한 질문이 골절되고 있다는 사실이 내가 옳다는 것을 증명합니다. [기본적으로 SO는 시장 점유율을 포기하고있다].
Jim Maguire

1
@JimMaguire에 동의합니다. 요청 된 질문은 "예 / 아니오"질문 (예 또는 아니오 인 이유에 대한 설명)입니다. 왜 초점이 맞지 않은지 알 수 없습니다.

답변:


101

통합 테스트는 둘 이상의 구성 요소를 테스트하고 함께 작동하는 방식입니다. 예를 들어 다른 시스템이 시스템과 상호 작용하거나 데이터베이스가 데이터 추상화 계층과 상호 작용하는 방식을 예로들 수 있습니다. 가장 순수한 형태는 아니지만 일반적으로 이것은 완전히 설치된 시스템을 필요로합니다.

기능 테스트는 제품의 기능 요구 사항에 대해 시스템을 테스트하는 것입니다. 제품 / 프로젝트 관리는 일반적으로이를 작성하고 QA는 사용자가보고 경험해야하는 프로세스와 해당 프로세스의 최종 결과를 공식화합니다. 제품에 따라 자동화 될 수 있습니다.


9
감사합니다 ... 그렇지만 기능 테스트에서 기능 요구 사항에 대해 시스템을 테스트 할 때도 통합 시스템으로 사용하고 있습니다. 기능 테팅을 수행하는 동안 다른 단위가 어떻게 작동하는지 확인할 수 있습니다. 함께 통합 테스트로 생각할 수 있도록 ...
Mishthi

3
특히 우리 환경에서는 항상 단위 테스트를 단일 클래스에 대해 작성된 nunit 테스트, 통합 테스트는 nunit 테스트 또는 클래스, 데이터베이스 또는 다른 시스템보다 많은 SQL 스크립트 테스트 (일반적으로 전체 설치 필요)로 간주했습니다. 기능 테스트는 QA가 실행하는 테스트 또는 자동화 된 UI 테스트입니다.
aceinthehole

1
또한 기능 테스트 이전에 통합 테스트를 수행하지 않은 경우 동시에 두 가지를 수행하고 있으며 기능 요구 사항을 테스트하는 동안 통합 부분에서 실수를 발견하게 될 것입니다.
aceinthehole

1
이것이 어떻게 받아 들여지지 않습니까!?
tftd

이 쿼리의 자동 제어 기능이 2010 년 이후 비활성화
되었으므로 @tftd

20

기능 테스트 :

예, 우리는 기능적으로 제대로 작동하는지 여부에 관계없이 제품 또는 소프트웨어 전체를 기능적으로 테스트하고 있습니다 (테스트 버튼, 링크 등).

예를 들면 다음과 같습니다. 로그인 페이지.

사용자 이름과 비밀번호를 제공하면 홈 페이지로 이동하는지 여부를 테스트합니다.

통합 테스트 :

예, 통합 소프트웨어 만 테스트하지만 데이터 흐름이 발생하는 위치와 데이터베이스에서 발생하는 변경 사항이 있는지 테스트합니다.

예를 들면 : 이메일 보내기

메일 하나를 다른 사람에게 보내면 데이터 흐름이 있고 데이터베이스도 변경됩니다 (보낸 테이블의 값이 1 씩 증가 함)


링크와 이미지를 클릭하는 것은 통합 테스트가 아닙니다. 링크를 클릭하기 만해도 데이터베이스에 변화가 없기 때문에 이유를 이해했으면합니다.

이것이 도움이 되었기를 바랍니다.


3
데이터베이스는 프로그램 상태의 구현 세부 사항입니다. 링크를 클릭해도 프로그램 상태가 변경 될 수 있습니다.
alehro

@ jsborn17은 API와 통신하는 프론트 엔드 애플리케이션에 적용 가능한 통합 테스트입니까?
Wancieho

8

이것은 중요한 차이점이지만 불행히도 결코 합의를 찾지 못할 것입니다. 문제는 대부분의 개발자가 자신의 관점에서이를 정의한다는 것입니다. 명왕성에 대한 토론과 매우 유사합니다. (태양에 더 가까우면 행성일까요?)

단위 테스트 는 쉽게 정의 할 수 있습니다. CUT ( Code Under Test )를 테스트 하고 다른 것은 없습니다. (가능한 한 적은 다른 것) 그것은 모의, 가짜 및 비품을 의미합니다.

스펙트럼의 다른 쪽 끝에는 많은 사람들이 시스템 통합 테스트 라고 부릅니다 . 가능한 한 많이 테스트하고 있지만 여전히 CUT에서 버그를 찾고 있습니다.

그러나 광대 한 창공은 어떻습니까?

  • 예를 들어, CUT보다 조금만 테스트하면 어떨까요? 주입 한 픽스쳐를 사용하는 대신 피보나치 함수를 포함 시키면 어떻게 될까요? 나는 그 기능 테스트 라고 부를 것이지만 세상은 나와 동의하지 않습니다.
  • 당신이 포함하는 경우 time()또는 rand()? 아니면 전화하면 http://google.com어떻습니까? 나는 그 시스템 테스트 라고 부를 것이다 . 그러나 다시, 나는 혼자이다.

이것이 왜 중요한가? 시스템 테스트는 신뢰할 수 없기 때문입니다. 그것들은 필요하지만 때로는 통제 할 수없는 이유로 실패 할 수도 있습니다. 반면에 기능 테스트는 항상 통과해야하며 무작위로 실패하지 않아야합니다. 빠르면 내부 구현에 너무 많은 테스트를 작성하지 않고 테스트 주도 개발을 사용하기 위해 처음부터 사용할 수도 있습니다. 즉, 그 단위 테스트가 가치보다 더 많은 문제가 될 수 있다고 생각하고, 내가 가진 좋은 회사를 .

단위 테스트 에서 모든 0을 사용하여 3 축에 테스트를했습니다 .

  1. 기능 테스트 : 실제 코드를 더 깊이 사용하고 콜 스택을 더 깊이 사용합니다.
  2. 통합 테스트 : 더 높은 최대 사용자의 통화 스택; 다시 말해, 사용하는 코드를 실행하여 CUT을 테스트하십시오.
  3. 시스템 테스트 : 점점 더 많은 반복 가능한 작업 (O / S 스케줄러, 시계, 네트워크 )

시험은 3도에서 다양한 정도로 쉽게 될 수 있습니다.


기능 테스트는 항상 통과합니까? 또는 기능 테스트 항상 통과 해야 한다는 의미 입니까?
aceinthehole

1
그들은 무작위로 실패해서는 안됩니다. 그들이 실패 할 때마다 매번 실패해야합니다. 예를 들어 다른 호스트에 대한 호출을 포함해서는 안됩니다. 어쩌면 그들은 행동 테스트 라고해야 합니까? 나는 최고의 용어를 모른다. 나는 그것이 가장 중요한 테스트라는 것을 알고 있으며, 순수하고 완전히 조롱 된 단위 테스트 와 높은 수준의 시스템 통합 테스트 사이의 넓은 갭에서 간과됩니다 .
cdunn2001

"그들은 무작위로 실패해서는 안됩니다." - "결정적"이라는 용어가있을 수 있습니다.
kleaver

7

기능 테스트 : 모듈의 모든 구성 요소를 테스트하는 테스트 프로세스입니다. 예 : 웹 페이지에 텍스트 필드, 라디오 버튼, 버튼 및 드롭 다운 등의 구성 요소가 포함 된 경우 확인해야합니다.

통합 테스트 : 두 모듈 간의 데이터 흐름을 확인하는 프로세스입니다.


4

나는 둘 다 서로 밀접하게 연결되어 있으며 서로를 구별하기가 매우 어렵다고 말합니다. 내 생각에 통합 테스트는 기능 테스트의 하위 집합입니다.

기능 테스트는 귀하가받는 초기 요구 사항을 기반으로합니다. 요구 사항에 따라 응용 프로그램 동작이 예상대로 테스트됩니다.

통합 테스트와 관련해서는 모듈 간의 상호 작용입니다. A 모듈이 입력을 보내면 B 모듈이이를 처리 할 수 ​​있습니다.


"통합 테스트는 기능 테스트의 하위 세트입니다"+1-내 경험에 따르면 테스트에 대한 빠른 접근을 목표로하는 경우 테스트에 대한 이러한 접근 방식이 가장 의미가 있음을 알 수 있습니다. 예를 들어, 테스트 코드에서 일반적으로 시스템을 단일 통합 단위로 취급합니다. 메모리 내 데이터베이스를 설정 한 다음 일부 테스트 데이터를 앱 MVC 컨트롤러에 공급하고 응답을 확인하고 데이터베이스의 데이터를 확인합니다. MVC 컨트롤러가 올바른 응답을 반환 할 때 버그가 발생하지 않도록 모든 데이터 유효성 검사가 예상대로 작동했는지 확인하지만 실제로는 데이터베이스 계층으로 올바르게 전달되지 않습니다.
JustAMartin

4

통합 테스트-통합 테스트는 다른 모듈의 테스트 일뿐입니다. 모듈 간의 관계를 테스트해야합니다. 예를 들어 페이스 북을 열면 로그인 ID와 비밀번호를 입력 한 후 로그인 페이지가 표시됩니다. 페이스 북의 홈 페이지를 볼 수 있으므로 로그인 페이지는 하나의 모듈이고 홈 페이지는 다른 모듈입니다. 그들 사이의 관계 만 확인하면 로그인 할 때 메시지 상자 나 다른 것이 아닌 홈페이지 만 열어야 함을 의미합니다. TOP-DOWN 접근법과 BOTTOM UP 접근법의 2 가지 주요 통합 테스트 유형이 있습니다.

기능 테스트-기능 테스트에서는 입력 및 출력에 대해서만 생각하면됩니다. 이 경우 실제 사용자처럼 생각해야합니다. 어떤 입력을 받았으며 어떤 출력을 받았는지 테스트하는 것은 기능 테스트입니다. 출력 만 관찰하면됩니다. 기능 테스트에서는 응용 프로그램 또는 소프트웨어의 코딩을 테스트 할 필요가 없습니다.


2

기능 테스트 테스터는 애플리케이션의 기능 및 하위 기능에만 중점을 둡니다. 앱의 기능이 제대로 작동해야합니다.

통합 테스팅에서 테스터는 모듈 또는 하위 모듈 간의 종속성을 확인해야합니다. 모듈에 대한 예제는 다른 모듈에서 올바르게 가져 와서 표시되어야합니다.


2

통합 테스트 :-단위 테스트가 완료되고 관련 구성 요소에 대한 문제가 해결되면 필요한 모든 구성 요소가 하나의 시스템에서 통합되어 작업을 수행 할 수 있습니다. 시스템 구성 요소를 결합한 후 시스템이 올바르게 작동하는지 여부를 테스트하기 위해 이러한 종류의 테스트를 통합 테스트라고합니다.

기능 테스트 :-테스트는 주로 두 가지 범주로 나뉩니다. 1. 기능 테스트 2. 비 기능 테스트 ** 기능 테스트 :-소프트웨어가 사용자의 요구 사항에 따라 작동하는지 테스트합니다. ** 비 기능 테스트 :-소프트웨어가 스트레스 테스트, 보안 테스트 등과 같은 품질 기준을 충족하는지 테스트합니다.

일반적으로 고객은 기능 테스트 및 비 기능 테스트에 대한 요구 사항 만 제공하며 요구 사항은 언급하지 않아도되지만 응용 프로그램은 반드시 해당 활동을 수행해야합니다.


2

통합 테스트

  • 시스템의 여러 모듈이 함께 작동하는 방식으로 볼 수 있습니다.
  • 우리는 주로 다른 모듈의 통합 기능, 시스템의 다른 구성 요소를 말합니다.
  • 모든 시스템 또는 소프트웨어 제품이 효율적으로 작동하려면 모든 구성 요소가 서로 동기화되어야합니다.
  • 통합 테스트에 사용한 대부분의 시간 도구는 단위 테스트에 사용 된 도구가 선택됩니다.
  • 단위 테스트가 시스템을 테스트하기에 충분하지 않은 복잡한 상황에서 사용됩니다.

    기능 테스트

  • 모듈의 개별 기능을 테스트하는 것으로 정의 할 수 있습니다.
  • 기능을 확인하기 위해 개별 레벨에서 소프트웨어 제품을 테스트하는 것을 말합니다.
  • 테스트 케이스는 소프트웨어가 예상하고 예기치 않은 결과를 확인하도록 개발되었습니다.
  • 이 유형의 테스트는 사용자 관점에서 더 수행됩니다. 즉, 입력 유형에 대한 사용자의 기대를 고려합니다.
  • 블랙 박스 테스트 및 클로즈 박스 테스트라고도합니다.


  • 1

    응용 프로그램 기능 검사는 일반적으로 기능 테스트라고하며, 통합 테스트는 한 모듈에서 다른 모듈로의 데이터 흐름을 확인하는 것입니다. 송금 앱의 예를 들어 보겠습니다. 모든 자격 증명을 입력하는 페이지가 있고 전송 버튼을 누르면 성공한 경우 기능 테스트입니다. 그러나 동일한 예에서 금액 이전을 확인하면 통합 테스트입니다.


    0

    저자들은 이것에 대해 많은 의견을 나누고 있습니다. 나는 이것에 대한 "올바른"해석이 없다고 생각합니다. 정말 달려 있습니다.

    예를 들어, 대부분의 Rails 개발자는 단위 테스트를 모델 테스트로, 기능 테스트를 컨트롤러 테스트로, 통합 테스트를 Capybara와 같은 것으로 최종 사용자의 관점에서 애플리케이션을 탐색합니다 (즉, DOM을 사용하여 페이지에서 생성 된 HTML 탐색) 기대를 확인합니다.

    또한 승인 테스트가 있으며 시스템에 대한 "실시간"문서화 (일반적으로 Gherkin을 사용하여 자연어로 작성 가능), 여러 시나리오를 통해 응용 프로그램의 모든 기능을 설명하는 자동화 테스트 개발자에 의해. IMHO는 기능 테스트와 통합 테스트로도 간주 될 수 있습니다.

    각각의 핵심 개념을 이해하면 옳고 그름에 대해보다 유연 해집니다. 따라서 다시 IMHO 기능 테스트는 통합 테스트로 간주 될 수 있습니다. 통합 테스트의 경우, 실행중인 통합 유형에 따라 기능 테스트를 고려하지 않을 수 있지만 일반적으로 통합 테스트를 작성할 때 몇 가지 요구 사항을 염두에 두어야합니다. 기능 테스트.

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