랑아
article thumbnail

통합 테스트

01. 통합 테스트

1) 통합 테스트의 개념

  • 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법
  • 통합 테스트의 목적은 단위 테스트가 끝난 모듈 또는 컴포넌트 단위의 프로그램이 설계 단계에서 제시한 동일한 구조와 기능으로 구현된 것인지를 확인하는 것
  • 통합 테스트는 설계 명세서와 통합된 프로그램과의 차이를 확인하는 것

2) 통합 테스트 순서

  1. 통합 테스트 케이스 설계
    • 단위 테스트 케이스를 비즈니스 시나리오에 따라 여러 개로 연결하여 통합 테스트 케이스를 만듦
    • 통합 테스트 케이스는 사용자 요구사항을 기준으로 작성함
  2. 통합 테스트 데이터 준비
    • 통합 테스트 데이터는 운영 데이터베이스에서 일부 추출하여 테스트 데이터를 만듦
    • 보안을 위하여 테스트 데이터에서 개인정보는 스크램블링 함
      • 스크램블링(Scrambling)
        • 권한 없는 사용자의 접근을 막기 위하여 데이터를 자신만의 방법으로 암호화하는 것
  3. 통합 테스트 수행 및 결과 확인
    • 한 달 이전부터 현재까지의 데이터를 프로그램에 그대로 입력시켜 레거시와 비교 검사함
    • 재현 테스트라고도 함
    • 테스트 케이스에 따라 데이터를 입력하고 예상 결과를 비교함
  4. 결함 등록
    • 테스트 결과가 예상 결과와 다를 경우 결함 등록을 함
    • 결함 등록 시 결함 화면을 캡처함
  5. 테스트 결과 보고 및 종료
    • 통합 테스트가 완료되면 결과를 집계하고 보고한 후 종료함

3) 통합 테스트 수행 방법

  1. 점증적인 방식
    • 개발된 모듈이나 컴포넌트 중 일부를 테스트하고, 점차적으로 늘려가면서 테스트함
    • 상향식 통합과 하향식 통합 방식으로 구분
    • 드라이버나 스터브를 사용하여 테스트함
  2. 빅뱅 방식(비 점증적인 방식)
    • 모든 컴포넌트를 사전에 통합하여 전체 프로그램을 한꺼번에 테스트함
    • 드라이버나 스터브 없이 실제 모듈르 테스트할 수 있음
    • 단시간 테스트에 적당하고 작은 시스템에 유리함
    • 장애 위치 파악이 어려우며 모든 모듈이 개발되어야 테스트가 가능함



02. 점증적인 통합 테스트

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

1. 하향식 통합 테스트의 개념

  • 메인 제어 모듈로부터 아래 방향으로 제어의 경로를 따라 이동하면서 하향싱으로 통합하면서 테스트함
  • 메인 제어 모듈에 통합되는 하위 모듈과 최하위 모듈은 '깊이 - 우선' 또는 '너비 - 우선' 방식으로 통합됨

2. 하향식 통합 테스트 순서

  • 메인 제어 모듈은 작성된 프로그램을 사용하고, 아직 작성되지 않은 하위 제어 모듈 및 모든 하위 컴포넌트를 대신하여 더미 모듈인 스터브(Stub)를 개발함
  • '깊이 - 우선' 방식 또는 '너비 - 우선' 방식에 따라, 하위 모듈인 스터브가 한 번에 하나씩 실제 모듈로 대체함
  • 각 모듈 또는 컴포넌트를 통합하면서 테스트함
  • 테스트가 완료되면 스터브는 실제 모듈 또는 컴포넌트로 대체함

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

1. 상향식 통합 테스트의 개념

  • 애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동하면서 테스트함

2. 상향식 통합 테스트 순서

  • 최하위 레벨의 모듈 또는 컴포넌트들이 하위 모듈의 기능을 수행하는 클러스터(Cluster)로 결합함
  • 상위의 모듈에서 데이터의 입력과 출력을 확인하기 위한 더미 모듈인 드라이버(Driver)를 작성함
  • 통합된 클러스터 단위를 테스트함
  • 테스트가 완료되면 각 클러스터들은 프로그램의 위쪽으로 결합되며, 드라이버는 실제 모듈 또는 컴포넌트로 대체함

3) 하향식 통합과 상향식 통합 테스트의 비교

  하향식 통합 테스트     상향식 통합 테스트  
  테스트할 때 프로그램 전체를 실행할 수 있음     테스트할 때 프로그램 전체를 실행할 수 없음  
  테스트할 때 독립적은 구조를 가짐     테스트할 때 독립적인 구조를 갖지 못함  
  가짜 모듈(Stub)이 필요함     가짜 모듈(Stub)이 필요 없음  
  드라이버(시험 가동기)가 필요 없음     드라이버(시험 가동기)가 필요함  
  하위 모듈 그룹(클러스터) 형성이 필요 없음     하위 모듈 그룹(클러스터) 형성이 필요함  
  중요 모듈을 우선 테스트할 때 부적당함     중요 모듈을 우선 테스트할 때 적당함  
profile

랑아

@RangA

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!