소프트웨어 테스팅

초보자를 위한 통합 테스팅 튜토리얼

2021년 10월 30일

목차

통합 테스팅이란?

통합 테스팅은 여러 소프트웨어 모듈이 논리적으로 통합되고 테스트되는 소프트웨어 테스팅 프로세스로 설명됩니다. 이 프로세스에서 먼저 여러 모듈을 개별적으로 테스트한 다음 단일 통합 장치로 테스트합니다. 통합 모듈이 예상대로 작동하는지 확인하기 위해 전체 그룹을 검토합니다.

지속적인 테스트 및 수정을 통해 제품을 개발하기 위해 신중한 프로세스가 필요한 소프트웨어 개발에 대한 실용적인 접근 방식입니다. 이는 애플리케이션의 모듈 또는 구성 요소를 점진적으로 통합하여 수행됩니다.

이 테스트 유형은 로컬에서 수행되는 통합 테스트 계획 내에서 테스트에 적용 및 집계되고 정의됩니다. 통합 테스트는 통합 시스템과 테스트 준비가 된 시스템을 제공합니다. 이러한 테스트의 주요 초점은 서로 다른 구성 요소 간의 상호 작용을 테스트하는 것입니다.

모든 구성 요소와 모듈이 결합되고 테스트되기 때문에 통합 테스트는 매우 중요합니다. 통합 테스트는 모든 회사가 새로운 비즈니스 모델, 새로운 기술 또는 새로운 제품이나 서비스로 이동할 계획일 때 필수적인 요구 사항이 됩니다. 통합 테스트는 테스터가 여러 장치를 통합한 후 결함을 찾을 수 있도록 하는 테스트 주기의 필수적인 부분입니다.

우리는 다음과 같은 다양한 유형의 테스트를 가지고 있습니다. 단위 테스트 , 시스템 테스트 , 그리고 수락 테스트 .

통합 테스트

왜 통합 테스팅인가?

  • 테스트는 실패를 격리하는 데 더 안정적이고 더 편안합니다.
  • 더미 또는 스텁 및 드라이버를 사용할 수 있습니다.
  • 통합 테스트는 개발자에게 신뢰를 줍니다.
  • 더 빠른 테스트 실행.
  • 통합 테스트는 개발 수명 주기의 매우 초기 단계에서 시작되며 개발자는 늦기 전에 버그를 잡을 수 있습니다.
  • 통합 테스트는 깨진 데이터베이스 체계 및 잘못된 캐시 통합과 같은 시스템 수준 오류를 포착합니다.
  • 개발 환경에서 더 편안하게 테스트할 수 있습니다.
  • 올바른 테스트를 생성하면 개발자와 테스트 엔지니어 사이에 정확한 피드백 루프 메커니즘이 제공됩니다.
  • 더 나은 코드 커버리지.
  • 코드 적용 범위를 추적하는 것이 더 편안합니다.
  • 종단 간 테스트 중에 실시간 사용 사례를 구축하는 데 주로 도움이 됩니다.

통합 테스트의 스텁 및 드라이버란 무엇입니까?

스텁과 드라이버는 하나 이상의 모듈이 개발되지 않고 다른 모듈을 테스트하는 데 필요할 때 통합 구성 요소를 테스트하는 데 사용되는 의사 코드 또는 더미 코드입니다. 통합 테스트에서 모듈의 출력을 입력으로 받아 하드 인코딩된 코드를 제공하는 프로그램입니다.

일반적으로 호출 프로그램이라고 하는 스텁 및 드라이버는 통합 테스트의 방법론에서 위에서 아래로 바람직합니다. 반대로 운전자는 상향식 접근 방식을 적용합니다. 스텁과 드라이버 테스터는 아직 소프트웨어와 통합되지 않은 모듈의 동작을 활용하고 자극할 수 있습니다. 또한 누락된 구성 요소의 활동을 시뮬레이션하는 데 도움이 됩니다.

통합 테스팅의 유형/접근법은 무엇입니까?

빅뱅 통합 테스트:

빅뱅 통합 테스트는 소프트웨어 테스트에 대한 유익한 접근 방식입니다. 통합 테스트를 시작할 때 개발자에게 소프트웨어, 시스템 및 애플리케이션에 대한 전체 통합 테스트 세트를 제공합니다.

빅뱅 통합 테스트는 시스템 세그먼트가 시스템을 형성하기 전에 발생하는 지속적인 테스트입니다. 가장 유망한 접근 방식 중 하나입니다. 소프트웨어 테스팅 , 시스템과 구성 요소의 지속적인 통합으로 완전한 시스템 또는 응용 프로그램이 형성됩니다.

장점:

  • 소규모 시스템에 유용합니다.
  • 주요 장점은 통합 테스트가 시작되기 전에 모든 것이 완료된다는 것입니다.

단점:

  • 시간이 많이 소요됨
  • 통합 지연으로 인해 장애 원인 추적이 어렵습니다.
  • 빅뱅 테스트에서는 모든 구성 요소가 동시에 테스트되기 때문에 치명적인 오류가 발생할 가능성이 더 높습니다.
  • 프로덕션 환경에서 치명적인 버그가 발생할 가능성이 높습니다.
  • 버그가 발견되면 모든 모듈을 분리하여 근본 원인을 파악하기가 매우 어려워집니다.

증분 통합 테스트

증분 통합 테스트에서 프로그래머는 스텁 또는 드라이버를 사용하여 모듈을 통합하여 결함을 하나씩 찾아냅니다. 이 접근 방식에서 테스트는 논리적으로 서로 관련된 둘 이상의 모듈을 혼합하여 수행한 다음 적절한 기능에 대해 테스트합니다. 다른 관련 모듈은 점진적으로 통합되며 논리적으로 관련된 모든 모듈이 성공적으로 통합되고 테스트될 때까지 프로세스가 계속됩니다. 이와 대조적으로 빅뱅은 모든 모듈을 한 번에 통합하는 또 다른 통합 테스트 기술입니다.

증분 테스트에는 두 가지 유형이 있습니다.

1. 하향식 접근:

하향식 통합 테스트는 구성 요소가 더 낮은 수준에서 생성되고 더 높은 수준의 구성 요소에 통합되는 접근 방식입니다. 하향식 통합 테스트는 하단보다 상단에서 구성 요소를 통합하는 데 더 중점을 둡니다. 개발자는 이 접근 방식에 대해 스텁을 사용할 수 있습니다. 이 접근 방식은 목표 설정, 예산 책정 및 예측과 같은 광범위한 노력을 위한 것입니다.

하향식 통합 테스트 접근 방식은 먼저 상위 수준 모듈을 테스트한 다음 점점 더 하위 수준 모듈을 테스트합니다. 이 방법을 사용하면 위에서 아래로 시작하는 통합 테스트를 통해 제어 흐름 및 아키텍처 구조를 추적하면서 하향식에서 테스트를 수행할 수 있습니다. 가장 일반적인 응용 프로그램은 통합 테스트 및 테스트 결과에 스텁을 사용하는 하향식 접근 방식입니다.

장점:

  • 이 방법은 상향식 접근 방식만큼 운영 및 유지 관리 리소스에 심각한 영향을 미치지 않습니다.
  • 결함 위치 파악이 쉽습니다.
  • 초기 프로토타입은 쉽게 얻을 수 있습니다.
  • 주요 설계 결함을 먼저 찾아 수정할 수 있습니다.
  • 우선 순위 모듈을 먼저 테스트할 수 있습니다.
  • 이 접근 방식의 장점은 결정을 매우 빠르게 내리고 구현할 수 있다는 것입니다.

단점:

  • 이 접근 방식에는 많은 스텁이 필요합니다.
  • 낮은 수준의 모듈은 비효율적으로 테스트됩니다.
  • 첫 번째 단계에서 제한된 범위를 제공합니다.
  • 개발자는 초기 단계에서 맞춤형 어댑터를 개발해야 할 수도 있습니다.
  • 구현 비용이 더 높을 가능성이 있습니다.

2. 상향식 접근:

상향식 접근 방식은 하향식 통합 테스트의 반대입니다. 최하위 계층의 모듈이 먼저 테스트되고 통합된 다음 이동 중인 다른 모듈과 순차적으로 통합됩니다.

상향식 통합 테스트는 단위 테스트로 시작하여 모듈식 구성으로 이어집니다. 먼저 상위 모듈을 테스트한 다음 하위 모듈을 테스트하는 식으로 통합될 때까지 계속됩니다.

테스트 드라이버가 구동되어 하위 모듈에서 해당 데이터를 전달하고 다른 모듈의 코드가 준비되면 드라이버가 실제 모듈을 교체합니다. 하위 모듈은 테스트되고 상위 모듈은 탑업 통합 테스트와 동일한 방식으로 테스트되지만 다른 드라이버를 사용합니다.

장점:

  • 더 쉬운 결함 위치 파악.
  • 상향식 접근 방식을 따르는 데 걸리는 시간은 다른 테스트 방법보다 훨씬 적습니다.
  • 제품에 대한 사용자 인식.
  • 자동화는 많은 수동 프로세스를 대체할 수 있습니다.
  • 비용 효율적입니다.
  • 더 쉬운 테스트 관찰.
  • 프로그램의 맨 아래에 중대한 결함이 발생하는 경우 유리합니다.

단점

  • 프로그램은 전체적으로 마지막 모듈이 추가될 때까지 존재하지 않습니다.
  • 초기 프로토타입은 불가능합니다.
  • 상향식 전략은 비즈니스 프로세스 대신 기존 인프라에 의해 실행됩니다.
  • 응용 프로그램 흐름을 제어하는 ​​필수 모듈(최상위 소프트웨어 아키텍처)은 마지막에 테스트되며 결함이 발생하기 쉽습니다.

샌드위치 / 하이브리드 테스트

샌드위치 테스팅은 상향식 접근 방식과 하향식 접근 방식의 조합이므로 상향식 접근 방식과 하향식 접근 방식의 장점을 모두 활용합니다.

이 단계에서 인터페이스와 각 모듈 간의 통신이 테스트됩니다. 하이브리드 통합 테스트라고도 합니다. 수정된 샌드위치 테스트는 테스터가 통합되는 동안 다양한 시스템 구성 요소를 테스트하는 데 도움이 되므로 매우 유용합니다.

장점:

  • 샌드위치 테스트 접근 방식은 하위 프로젝트가 있는 광범위한 프로젝트에 유용합니다.
  • 병렬 테스트를 허용합니다.
  • 시간이 효과적입니다.
  • 개발자는 다음을 결합하기 때문에 이 접근 방식을 높이 평가합니다. 혜택 관련된 모든 것의 테스트 프레임워크를 통해 전문가가 프레임워크의 장점을 모두 명확하게 활용할 수 있도록 지원합니다.

단점:

  • 샌드위치 테스팅은 꽤 비쌉니다.
  • 샌드위치 테스팅은 다른 구성 요소/모듈과 상호 의존도가 높은 시스템에는 사용할 수 없습니다.
  • 샌드위치 테스트/하이브리드 테스트에서 스텁과 드라이버의 필요성은 매우 높습니다.
  • 테스트가 복잡해질 수 있습니다.
  • 결함을 현지화하기 어렵습니다.
  • 혼합 테스트에는 높은 비용이 필요합니다.
  • 이 접근 방식은 소규모 프로젝트에는 적합하지 않습니다.

통합 테스트는 어떻게 하나요?

일반적으로 통합 테스트는 단위 테스트 후에 옵니다. 모든 개별 단위 및 테스트가 완료되면 개발자는 테스트된 모듈을 결합하고 통합 테스트를 수행하기 시작합니다. 여기서 프로세스의 주요 목표는 유닛/모듈 간의 인터페이스를 테스트하는 것입니다.

  • 디자인을 준비합니다.
  • 위 목록에서 테스트 접근 방식의 유형을 선택합니다.
  • 그에 따라 테스트 케이스, 개요 및 스크립트를 선택하십시오.
  • 선택한 장치를 함께 배포하고 통합 테스트를 실행합니다.
  • 테스트의 테스트 결과를 기록하기 위해 결함 및 버그를 추적합니다.
  • 전체 시스템이 테스트될 때까지 위의 사항을 반복합니다.

프로세스의 우선 순위는 모듈 간에 통합되는 인터페이스 링크에 있어야 합니다.

통합 테스트를 위한 최고의 도구:

VectorCAST/C++는 안전 및 시장에 중요한 임베디드 시스템을 검증하는 데 사용되는 자동화된 단위 및 통합 테스트 솔루션입니다. 이 동적 테스트 솔루션은 항공 전자, 의료 기기, 자동차, 산업 제어, 철도 및 금융 부문과 같은 산업에서 광범위하게 사용됩니다.

Citrus는 개발자가 모든 메시징 프로토콜 또는 데이터 형식에 대한 통합 테스트를 자동화하는 데 도움이 되는 오픈 소스 프레임워크입니다. Citrus는 애플리케이션의 메시징 통합을 테스트하기 위해 선택하는 프레임워크입니다. HTTP, REST, SOAP 또는 JMS와 같은 메시징 전송을 사용하는 경우.

LDRA를 사용하면 개발자가 호스트 및 대상 장치에서 단위 및 통합 테스트를 수행할 수 있습니다. LDRA를 사용하면 개발자는 호스트(독립 실행형 또는 대상 시뮬레이션 포함)와 대상 하드웨어 모두에서 단위 및 통합 수준에서 테스트를 빠르고 쉽게 생성하고 실행할 수 있습니다.

오늘날 여러 기업에서 비즈니스 지향 아키텍처를 육성하고 있습니다. 상향식 접근 방식과 같은 기존 통합 테스트 방법은 테스트 데이터를 생성하는 데 상당한 노력이 필요합니다. Wipro의 SITA(Smart Integration Test Accelerator)는 개발자가 이러한 문제를 극복하는 데 도움이 됩니다. 이 프레임워크를 통해 개발자는 테스트 데이터 및 테스트 디자인 생성을 가속화할 수 있습니다.

RIT(Rational Integration Tester)는 이전에 Green Hat으로 알려진 통합 테스트 도구입니다. IBM은 2012년 Green Hat을 인수했습니다. IBM의 Rational Integration Tester를 통해 개발자는 스크립팅 없는 환경을 얻을 수 있으며 SOA 메시징 테스트 및 통합 프로젝트를 위한 개발이 가능합니다. Rational Integration Tester는 반복적이고 민첩한 개발 방법을 통해 통합 문제를 방지합니다. 이 도구는 이제 Rational Test Workbench의 일부입니다.

통합 테스트를 위한 팁:

  • 하나 이상의 결함을 찾을 때까지 통합 테스트를 실행합니다.
  • 결함을 분리한 후 코드를 추가하거나 수정하여 즉시 해결하십시오.
  • 단위 테스팅을 올바르게 수행한 후에만 통합 테스팅을 연습하십시오.
  • 진행 상황을 기록하십시오. 개발자는 실패를 더 잘 분석하고 실패의 잠재적 원인에 대한 기록을 유지합니다.
  • 로깅은 실패를 분석하고 실패에 대한 잠재적인 이유의 기록을 유지하는 데 도움이 될 뿐만 아니라 다른 설명을 배제하고 실제 원인을 좁히는 데 도움이 됩니다.
  • 테스트 및 개발 환경이 일치하는지 확인하십시오.
  • 귀중한 테스트 데이터를 사용하십시오.
  • 버그 및 테스트를 위한 공통 저장소를 사용하십시오.

관련 기사

단위 테스트 시스템 테스트 수락 테스트