Java의 통합 테스팅 소개
이 자습서에서는 통합 테스트를 소개하고 단위 테스트와 차별화하는 방법을 강조합니다. 또한 장단점을 고려하여 다양한 유형의 통합 테스트에 대해 설명합니다.
그런 다음 통합 테스트를 수행하는 데 필요한 단계에 대해 배우고 통합 테스트를 이해하기 위한 실제 시나리오를 따릅니다.
통합 테스트 소개
테스트 피라미드에는 단위 테스트, 통합 테스트 및 기능 테스트의 세 가지 유형의 테스트가 있습니다. 이 문서는 통합 테스트를 중심으로 진행됩니다. 즉, 다양한 모듈을 그룹으로 결합할 때 예상대로 작동하는지 확인합니다.
소프트웨어는 여러 프로그래머가 코딩한 다양한 모듈로 구성되어 있습니다. 여기서 통합 테스팅의 주요 목표는 논리적으로 통합하고 그룹으로 테스트하여 두 개 이상의 소프트웨어 모듈 간의 인터페이스를 테스트하는 것입니다.
또한 다양한 소프트웨어 구성 요소를 통합할 때 상호 작용의 결함을 노출하여 인터페이스의 정확성을 결정합니다. 통합 테스트 프로세스는 모든 소프트웨어 구성 요소가 단위 테스트를 거치면 시작됩니다.
단위 테스트 및 통합 테스트를 시각화하려면 다음을 참조하십시오.
다음은 통합 테스트가 단위 테스트와 다른 점을 강조하는 몇 가지 사항입니다.
단위 테스트 | 통합 테스팅 |
---|---|
여기에서 개발자는 소프트웨어의 내부 디자인을 잘 알고 있습니다. | 여기서 테스터는 소프트웨어의 내부 설계를 알지 못합니다. |
모든 모듈은 개별적으로 테스트됩니다. | 우리는 모든 모듈을 결합하고 그룹으로 테스트합니다. |
화이트박스 테스트라고 합니다. | 블랙박스 테스트라고 합니다. |
개발자가 수행합니다. | 테스터가 수행합니다. |
여기서 결함을 찾는 것은 쉽습니다. | 통합 테스트에서 결함을 노출하는 것은 어렵습니다. |
단위 테스트에서 모든 프로젝트 구성 요소는 다른 구성 요소가 완료될 때까지 기다리지 않고 개별적으로 독립적으로 테스트됩니다. | 통합 테스트는 모든 부품이 완료되면 수행됩니다. |
비용 효율적입니다. 유지 보수 비용도 저렴합니다. | 비쌉니다. 유지 보수 비용도 많이 듭니다. |
모듈 사양은 초기에 수행됩니다. | 인터페이스 사양은 처음에 수행됩니다. |
코드를 심층적으로 탐색하는 것입니다. | 통합 구조의 세부 가시성에 관한 것입니다. |
통합 테스트보다 빠른 실행. | 여기서는 모듈의 통합으로 인해 속도가 비교적 느립니다. |
자세한 내용은 여기에서 확인할 수 있습니다.
통합 테스트의 중요성
모든 소프트웨어 구성 요소가 단위 테스트를 거치지만 여러 가지 이유로 결함이 여전히 노출될 수 있으므로 통합 테스트의 중요성이 높아집니다. 그들 중 일부는 아래에 나열되어 있습니다.
- 소프트웨어 모듈의 더 나은 통합을 가능하게 합니다.
- 통합 테스팅을 사용함으로써 소프트웨어 모듈 전송 중 데이터 수정을 방지할 수 있습니다.
- 또한 수동 테스트의 다양한 문제를 극복합니다.
- 통합 테스팅은 또한 효과적인 제3자 테스팅을 가능하게 합니다.
- 모든 소프트웨어 구성 요소가 하나의 단위로 작동하고 예상대로 출력을 생성하는지 확인해야 합니다.
- 데이터베이스와 외부 하드웨어 인터페이스 및 소프트웨어 모듈의 인터페이스에서 결함을 찾는 것이 유용합니다.
- 때로는 클라이언트가 소프트웨어 모듈 개발 중에 요구 사항을 변경합니다. 이 경우 새 요구 사항이 단위 테스트 수준에서 테스트되지 않을 가능성이 있습니다. 따라서 여기에서 통합 테스트가 필수적입니다.
통합 테스트 유형
이 기사에서는 장단점을 고려하여 통합 테스트에 대한 두 가지 접근 방식에 대해 설명합니다.
- 빅뱅
- 증분(하향식, 상향식 및 샌드위치 방식으로 추가 분류됨)
통합 테스트를 위한 빅뱅 접근법
이 접근 방식에서는 모든 소프트웨어 구성 요소를 통합하여 테스트 중에 엔터티로 알려진 단위로 테스트합니다. 이 통합 프로세스는 단위 테스트의 모든 구성 요소가 완료될 때까지 실행되지 않습니다.
시스템 테스트와 혼동하지 마십시오. 우리는 전체 시스템이 아닌 다양한 소프트웨어 모듈의 통합만 테스트합니다(시스템 테스트에서 수행됨).
가장 큰 장점은 모든 소프트웨어 구성 요소를 통합하고 하나의 단위로 테스트할 수 있는 반면 빅뱅 접근 방식을 사용하여 결함을 식별하기 어렵다는 것입니다. 따라서 모든 소규모 시스템에 편리합니다.
빅뱅 접근법을 다음과 같이 시각화할 수 있습니다. 우리는 6개의 서로 다른 모듈을 통합하고 빅뱅을 사용하여 테스트했습니다.
통합 테스트를 위한 증분 접근 방식
이 접근 방식을 사용하여 서로 논리적으로 관련된 두 개 이상의 소프트웨어 모듈을 통합한 다음 애플리케이션의 적절한 기능을 테스트합니다. 그런 다음 다른 관련 모듈/구성 요소가 점진적으로 통합되고 테스트됩니다.
이 절차는 논리적으로 관련된 모든 구성 요소가 통합되고 테스트될 때까지 계속됩니다.
이 접근 방식은 하향식, 상향식 및 샌드위치 방식으로 더 분류됩니다. 아래에서 Stubs
와 Drivers
를 통해 각각 알아봅시다.
Stub
- 테스트 중인 모듈/구성 요소에 의해 호출됩니다.드라이버
- 테스트할 모듈/구성 요소를 호출합니다.
하향식 접근법
여기서 통합은 소프트웨어 시스템의 제어 흐름에 따라 위에서 아래로 수행됩니다. 이 접근 방식을 사용하여 더 높은 수준의 구성 요소를 테스트한 다음 더 낮은 수준의 구성 요소로 이동하여 소프트웨어 기능을 확인합니다.
여기에서 일부 구성 요소가 아직 읽히지 않은 경우 Stubs
를 사용할 수 있습니다. 실제 환경에서 일어날 일과 일치하는 유기적인 방식입니다.
이 접근 방식의 또 다른 장점은 중요한 모듈을 우선적으로 테스트할 수 있다는 것입니다. 이렇게 하면 더 높은 수준에서 결함을 찾아 먼저 수정할 수 있습니다.
반면에 마지막에 주요 기능을 테스트하는 것이 이 접근 방식의 유일한 관심사입니다. 다음 다이어그램에서 시각화할 수 있습니다.
상향식 접근 방식
여기서는 상위 수준 모듈 테스트를 지원하는 데 사용되는 하위 수준 모듈을 먼저 테스트합니다. 이 절차는 최상위 수준에서 모든 모듈/구성 요소를 테스트할 때까지 계속됩니다.
상향식 접근 방식에서는 드라이버
라는 자극 프로그램을 사용합니다. 낮은 수준에서 결함과 오류를 찾는 것은 쉽지만 높은 수준의 문제는 모든 구성 요소가 통합되고 테스트된 끝에야 찾을 수 있습니다.
샌드위치 접근법
이 접근 방식은 하향식 및 상향식 접근 방식을 결합하므로 하이브리드 통합 테스트라고 합니다. Stubs
및 Drivers
를 사용합니다.
여기에서 최상위 구성 요소는 하위 구성 요소로 테스트됩니다. 동시에 하위 구성 요소/모듈은 최상위 모듈/구성 요소와 통합되고 시스템으로 테스트됩니다.
이 접근 방식을 다음과 같이 시각화할 수 있습니다.
통합 테스트에 필요한 단계
다음 단계는 사용 중인 소프트웨어 테스팅 전략(위에서 논의됨)에 관계없이 필요합니다.
-
통합 테스트 계획을 세우십시오.
-
테스트 시나리오, 사례 및 스크립트를 설계합니다.
-
모든 테스트 사례를 실행한 다음 결함을 노출하고 보고합니다.
-
결함을 추적하고 다시 테스트하십시오.
-
3단계와 4단계는 성공적으로 통합될 때까지 반복됩니다.
통합 테스트를 이해하기 위한 실제 사례
performPayment()
라는 메서드가 있다고 가정합니다. 이 메서드는 두 개의 매개변수 amount
와 service
유형의 double 및 PaymentService
를 각각 사용합니다.
단위 테스트에서는 service
인수에 대한 모형을 만들어 테스트하고 통합 테스트는 실제 외부 service
를 사용하여 해당 service
가 입력 데이터에 응답하는지 확인하는 테스트입니다. 예상대로.