Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

공부해보잠

통합 테스트 본문

자격증/정보처리

통합 테스트

heejk 2025. 2. 2. 19:37
통합 테스트(Integration Test)

통합 테스트는 단위 테스트가 끝난 모듈들을 통합하는 과정에서 발생하는 오류 및 결함을 찾는 테스트 기법입니다.
각 모듈이 개별적으로 정상적으로 동작하더라도, 모듈 간의 인터페이스나 데이터 흐름에서 문제가 발생할 가능성이 있기 때문에 통합 테스트를 수행합니다.

 

통합 테스트 방식

테스트 방식 설명 특징
비점진적 통합 방식 모든 모듈을 한 번에 결합하여 테스트하는 방식 - 규모가 작은 소프트웨어에서 유리
- 단시간 내 테스트 가능하지만, 오류 발견과 수정이 어려움
점진적 통합 방식 모듈을 단계적으로 통합하면서 테스트하는 방식 - 하향식, 상향식, 혼합식 방식이 있음
- 오류 수정이 용이하지만, 인터페이스 및 연결된 오류를 완전히 테스트하기 어려움

 

추가 설명

 

비점진적 통합 방식의 장점

  • 모든 모듈을 한 번에 결합하여 전체 시스템을 빠르게 테스트 가능.
  • 작은 단위의 테스트 없이도 즉각적인 전체적인 시스템 오류 및 결함 파악 가능.

 

비점진적 방식의 단점

  • 한 번에 모든 모듈을 통합하여 테스트하기 때문에 장애 발생 위치를 정확히 찾기 어렵고 수정도 어려운 점이 있음.
  • 작은 규모의 소프트웨어에서는 유용할 수 있지만, 대형 시스템에서는 리스크가 큼.

점진적 방식의 장점

  • 모듈을 하나씩 추가하며 테스트하므로 오류를 조기에 발견하고 수정하기 용이.
  • 시스템의 점진적인 안정성을 확보하면서 통합 테스트를 진행할 수 있음.

점진적 통합 방식의 단점

  • 모듈 간의 인터페이스 및 연결 오류를 완전히 테스트하기 어려움.
  • 모듈을 점진적으로 통합하므로 전체 시스템 테스트 완료까지 시간이 오래 걸릴 수 있음.

하향식 통합 테스트(Top Down Integration Test)

하향식 통합 테스트는 프로그램의 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법이다.

  • 주요 제어 모듈을 기준으로 하위 단계로 이동하며 통합하며, 깊이 우선 통합법이나 넓이 우선 통합법을 사용한다.
  • 테스트 초기부터 사용자에게 시스템 구조를 보여줄 수 있다.
  • 상위 모듈에서는 테스트 케이스를 사용하기 어려운 단점이 있다.

하향식 통합 테스트 절차

  • 주요 제어 모듈은 작성된 프로그램을 사용하고, 종속된 하위 모듈은 스텁(Stub)으로 대체한다.
  • 깊이 우선 또는 넓이 우선 방식에 따라 하위 모듈(스텁)을 하나씩 실제 모듈로 교체한다.
  • 모듈이 통합될 때마다 테스트를 수행한다.
  • 새로운 오류가 발생하지 않도록 회귀 테스트(Regression Test)를 실시한다.

부가 설명

  • 깊이 우선 통합법(Depth First Integration): 한 개의 주요 제어 모듈을 기준으로 하위 모듈을 순차적으로 통합하면서 진행하는 방식.
  • 넓이 우선 통합법(Breadth First Integration): 한 단계의 모든 하위 모듈을 동시에 통합한 후 다음 단계로 이동하는 방식.
  • 스텁(Stub): 아직 구현되지 않은 하위 모듈을 대신하는 임시 모듈로, 상위 모듈의 동작을 테스트하기 위해 사용된다.

상향식 통합 테스트(Bottom Up Integration Test)

상향식 통합 테스트는 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법이다.

  • 가장 하위 단계의 모듈부터 통합 및 테스트가 수행되므로 스텁(Stub)이 필요하지 않다.
  • 하지만, 하나의 주요 제어 모듈과 관련된 종속 모듈 그룹인 클러스터(Cluster)가 필요하다.

상향식 통합 테스트 절차

  • 하위 모듈들을 클러스터(Cluster)로 결합한다.
  • 상위 모듈에서 데이터 입출력을 확인하기 위해 더미 모듈인 드라이버(Driver)를 작성한다.
  • 통합된 클러스터 단위로 테스트를 진행한다.
  • 테스트가 완료되면 클러스터를 상위로 이동하여 결합하고, 드라이버는 실제 모듈로 대체한다.

부가 설명

  • 드라이버(Driver): 상위 모듈이 구현되지 않았을 때 하위 모듈을 테스트하기 위해 데이터를 입력하고 출력을 확인하는 임시 모듈이다.
  • 클러스터(Cluster): 기능적으로 연관된 하위 모듈들의 집합으로, 상위 모듈과 통합되기 전 그룹 단위로 테스트하는 데 사용된다.

드라이버(Driver) 와  스텁(Stub)의 차이점

개념 하위 모듈을 호출하는 테스트용 코드 상위 모듈에서 호출하는 더미 모듈
필요 시기 상위 모듈이 없는 경우 하위 모듈이 없는 경우
사용 방식 상향식(Bottom-Up) 통합 테스트에서 사용 하향식(Top-Down) 통합 테스트에서 사용
차이점 하위 모듈을 실행하고 결과를 확인하는 역할 단순한 응답을 반환하여 테스트 진행
소프트웨어 개발 완료 후 드라이버는 실제 상위 모듈로 교체됨 스텁은 실제 하위 모듈로 대체됨

개념도


오른쪽 개념도가 하향식(Top-Down) 통합 테스트이고, 왼쪽 개념도가 상향식(Bottom-Up) 통합 테스트입니다

 

왼쪽 개념도 (상향식, Bottom-Up Integration Test)

  • 하위 모듈(M2, M3, M4, M5)부터 점진적으로 통합하는 방식.
  • 상위 모듈(M1)이 아직 구현되지 않았으므로 드라이버(Driver, D1, D2)를 사용하여 테스트 수행.
  • 하위 모듈의 실행 결과를 상위 모듈 없이 확인하기 위해 임시 코드(드라이버)를 작성함.

오른쪽 개념도 (하향식, Top-Down Integration Test)

  • 상위 모듈(M1)부터 하위 모듈(M2, S3 등)로 통합 진행.
  • 아직 구현되지 않은 하위 모듈(S3, S5, S6 등)은 스텁(Stub)으로 대체하여 테스트 수행.
  • 주요 제어 모듈(M1)을 테스트할 수 있도록 더미 모듈(스텁)을 작성하여 기본적인 데이터 흐름을 검증함.

혼합식 통합 테스트 (Hybrid Integration Test)

혼합식 통합 테스트는 상향식(Bottom-Up)과 하향식(Top-Down) 통합 테스트를 결합한 방식으로, 샌드위치(Sandwich) 통합 테스트라고도 합니다.

 

특징

  • 하위 수준에서는 상향식 통합 테스트를 사용하여 하위 모듈을 먼저 결합 및 테스트.
  • 상위 수준에서는 하향식 통합 테스트를 사용하여 주요 제어 모듈을 먼저 테스트.
  • 중간 수준에서 모듈이 동시에 결합되므로 드라이버와 스텁이 모두 필요.
  • 대규모 시스템 개발에서 유용하며, 특히 다층 구조(예: 클라이언트-서버 시스템)에서 효과적.

혼합식 통합 테스트 절차

  • 하위 모듈부터 상향식 테스트 수행 (드라이버 활용).
  • 상위 모듈부터 하향식 테스트 수행 (스텁 활용).
  • 중간 수준에서 두 방식이 만나도록 최적의 테스트 순서를 구성.
  • 통합된 시스템을 검증하고 회귀 테스트 수행.

장점

  • 상향식과 하향식 통합의 장점을 모두 활용하여 효율적인 결함 검출 가능.
  • 주요 기능을 조기에 테스트할 수 있어 시스템 안정성 향상.
  • 상하위 모듈을 동시에 검증함으로써 테스트 기간 단축.

단점

  • 드라이버와 스텁이 모두 필요하여 테스트 환경 구축이 복잡.
  • 전체적인 설계 및 계획이 중요하며, 실행 과정에서 세밀한 조정이 필요.

혼합식 통합 테스트는 대규모 시스템 개발에서 최적의 테스트 효율성을 제공하는 방법으로, 상위 및 하위 수준에서 각각의 강점을 활용하여 전체적인 통합 테스트의 완성도를 높이는 기법이다.


회귀 테스팅(Regression Testing)

회귀 테스트는 이미 테스트된 프로그램을 다시 테스트하는 과정으로, 소프트웨어 변경 후 새로운 오류가 발생했는지 확인하는 테스트 기법입니다.

 

회귀 테스트의 목적

  • 변경된 코드가 기존 기능에 영향을 미치지 않았는지 확인
  • 새로운 오류가 발생하지 않았는지 검증
  • 소프트웨어의 일관성과 안정성을 유지

회귀 테스트의 필요성

  • 기능 수정이나 새로운 기능 추가 시, 기존 코드와의 충돌 가능성 존재
  • 기존 테스트된 영역이 영향을 받을 가능성이 높아 테스트 반복 필요
  • 통합 테스트 이후 변경된 코드가 정상적으로 동작하는지 확인
  • 소프트웨어 릴리즈 전 최종 검증을 위한 중요한 테스트 단계

회귀 테스트 수행 방법

  • 기존 테스트 케이스를 재사용하여 변경된 코드 및 기존 기능을 함께 테스트
  • 테스트 자동화 도구를 활용하여 반복적인 테스트 부담을 줄임
  • 테스트 범위를 조절하여 시간과 비용을 절감하는 전략 필요

회귀 테스트의 테스트 케이스 선정 방법

  • 모든 애플리케이션의 주요 기능을 포함하는 대표적인 테스트 케이스 선정
  • 애플리케이션 기능 변경에 따른 영향 분석을 통해, 파급 효과가 높은 부분을 포함한 테스트 케이스 선정
  • 실제 코드 수정이 발생한 모듈 또는 컴포넌트에 대한 테스트 케이스 우선 선정

회귀 테스트 전략

 

완전 회귀 테스트(Complete Regression Test)

  • 모든 기존 테스트 케이스를 실행
  • 시간과 비용이 많이 소요되므로 현실적으로 어려움

선택적 회귀 테스트(Selective Regression Test)

  • 기존 테스트 케이스 중 변경된 기능과 관련된 부분만 선택하여 수행
  • 비용과 시간을 절감할 수 있는 현실적인 접근 방식

우선순위 기반 회귀 테스트(Priority-Based Regression Test)

  • 변경된 코드에 대한 영향 분석을 수행한 후, 우선순위가 높은 기능부터 테스트
  • 중요한 기능이나 빈번히 사용되는 기능을 우선적으로 검증

회귀 테스트의 장점

  • 기존 기능을 유지하면서 새로운 기능 추가 가능
  • 시스템 안정성을 높이고, 예상치 못한 오류를 방지
  • 지속적인 테스트 자동화로 시간과 비용 절감

회귀 테스트의 단점

  • 모든 기능을 매번 테스트하기 어려움
  • 테스트 범위를 조절하지 않으면 비용이 증가할 가능성이 있음
  • 자동화되지 않은 경우 반복적인 테스트로 인해 비효율적일 수 있음

회귀 테스트는 소프트웨어의 변경 사항이 기존 기능에 영향을 미치지 않도록 보장하는 중요한 과정입니다.
효율적인 테스트 케이스 선정과 자동화 도구 활용을 통해 시간과 비용을 절감하는 것이 핵심 전략입니다.


 

출저 및 참고

정보처리 산업기사 기본서(시나공)

 

728x90