본문으로 건너뛰기

소프트웨어 테스팅 및 검증 — Week 12: 통합 테스팅 & 시스템 테스팅

과목명: 소프트웨어 테스팅 및 검증
담당교수: 이우진 (경북대학교 IT대학 컴퓨터학부, SW Testing 연구실)
강의자료: 2026_SWTesting12Integration_SystemTesting


Part A. 통합 테스팅 (Integration Testing)


1. IEEE 표준 결함 유형 복습 — 테스팅 기법 매핑

결함 유형대응 테스팅 기법
Input/Output FaultsUnit: Black-Box Testing
Logic FaultsUnit: White-Box Testing
Computation FaultsUnit: White-Box Testing
Interface FaultsIntegration Testing
Data FaultsUnit: White-Box Testing

2. 인터페이스 테스팅 (Interface Testing)

2.1 목표

인터페이스 오류 또는 인터페이스에 대한 잘못된 가정으로 인한 결함을 탐지하는 것이다.

2.2 인터페이스 오류 유형

오류 유형설명
Interface misuse호출 컴포넌트가 다른 컴포넌트를 호출할 때 인터페이스를 잘못 사용 (예: 매개변수 순서 오류)
Interface misunderstanding호출 컴포넌트가 피호출 컴포넌트의 동작에 대해 잘못된 가정을 내재
Timing errors호출·피호출 컴포넌트가 서로 다른 속도로 작동하여 오래된 정보에 접근

2.3 NSI 방사선 의료사고 사례

  • 2000년 National Cancer Institute, Panama City: Multidata Systems International(미국) 개발 방사선 선량 계산 소프트웨어
  • 28명이 방사선에 과다 노출, 23명 사망
  • 원인: 차폐 블록(block) 그리기 방식의 오류 — 4개 블록만 허용되는데 5개를 사용하려 도넛 형태로 2개 루프를 그렸고, 두 루프의 그리기 방향이 달라져 차폐 영역이 뒤집힘 → 건강한 세포에 방사선 집중

3. 통합 테스팅의 특성

  • **모듈 간 상호작용(interactions among modules)**에 초점
  • 명세에서 도출된 블랙박스 테스팅이 주를 이룸
  • 주요 어려움: 오류 위치 파악(localising errors)
  • 점진적(incremental) 통합 테스팅으로 이 문제를 완화

3.1 통합 테스팅 접근법

접근법설명
Big Bang모든 모듈을 한꺼번에 결합하여 테스트
Decomposition-basedTop-down, Bottom-up, Sandwich
Call Graph-basedPairwise, Neighborhood
Path-based호출 경로 기반

4. Decomposition-based Integration

4.1 Top-down Testing

상위 수준 시스템에서 시작하여 하위 컴포넌트를 **스텁(stub)**으로 대체하면서 위에서 아래로 통합한다.

장점: 시스템의 전체 동작을 일찍 확인 가능, 아키텍처 결함 조기 발견

단점: 하위 모듈의 스텁 작성 비용, 하위 모듈 테스트가 불충분할 수 있음

4.2 Bottom-up Testing

최하위 개별 컴포넌트부터 테스트 드라이버(test driver)를 사용하여 Level N → Level N-1 → ... 순으로 통합한다.

장점: 하위 모듈을 충분히 테스트한 후 통합, 드라이버가 스텁보다 작성 용이

단점: 전체 시스템 동작 확인이 늦어짐

4.3 Sandwich Integration

Top-down과 Bottom-up의 결합 방식이다.


5. Call Graph-based Integration

5.1 Pairwise Integration

호출 그래프의 각 **엣지(호출 관계)**를 기준으로, 호출하는 유닛과 호출되는 유닛의 쌍(pair)을 테스트한다. 스텁과 드라이버의 사용을 줄일 수 있다.

5.2 Neighborhood Integration

호출 그래프에서 각 노드의 Neighborhood(모든 직전 선행 노드 + 모든 직후 후속 노드)를 기준으로 통합 테스트한다.

Calendar 프로그램 예제에서 각 유닛의 Predecessor와 Successor를 파악하여 Neighborhood 단위로 테스트를 구성한다.

5.3 Sandwich Integration (Call Graph 기반)

서브트리에 대해 Big Bang 통합을 수행한다. 결함 격리가 어렵다는 단점이 있으나, 드라이버와 스텁이 불필요하다는 장점이 있다. 기능 분해 트리의 루트에서 리프까지의 전체 경로를 한 단위로 테스트한다.


Part B. 시스템 테스팅 (System Testing)


6. 시나리오 기반 시스템 테스팅

6.1 Use Case 기반 테스팅

시스템 요구사항을 Use Case Diagram으로 표현하고, 각 Use Case의 시나리오(기본 흐름 + 대안 흐름)를 기반으로 시스템 수준의 테스트 케이스를 생성한다.

Osbert Oglesby 정보 시스템 예제:

  • Actor: Osbert, Seller, Buyer
  • Use Cases: Buy a Painting, Sell a Painting, Produce a Report, Update a Fashionability Coefficient

6.2 시나리오에서 테스트 케이스 도출

각 Use Case의 기본 시나리오(Basic Flow)와 대안 시나리오(Alternative Flow)를 조합하여 테스트 시나리오를 생성한다. 기본 흐름에서 분기되는 각 대안 흐름이 하나의 테스트 시나리오가 된다.


7. GUI 테스팅

7.1 GUI 테스팅의 과제

과제설명
테스트 케이스 생성웹 애플리케이션은 다수의 웹 페이지로 구성되며, 각 페이지에 여러 GUI 연산이 포함됨. 페이지 간 의존성 존재
GUI 이벤트 시퀀스 입력수동 마우스/키보드 입력 또는 Capture and Replay 도구를 활용하여 자동화
테스트 결과 판정테스터의 수동 확인 또는 이미지 비교 도구를 활용한 자동 검증

Capture and Replay: 사용자와 애플리케이션 간 상호작용을 기록하고 재생하여 GUI의 완전 자동 회귀 테스팅을 지원한다.

7.2 Model-based Testing

모델은 시스템 동작의 그래픽적 표현으로, 시스템 행동을 이해하고 예측하는 데 도움을 준다. 시스템 요구사항으로부터 효율적인 테스트 케이스를 생성할 수 있으며, GUI가 도달할 수 있는 바람직하지 않은 상태를 결정할 수 있다는 것이 주요 장점이다.


8. 자동화 테스팅 도구

8.1 2026년 Best 4 자동화 테스팅 도구 비교

FeatureTestCompleteSeleniumOpenText Functional TestingIBM DevOps Test UI
Best For코딩 지식 있는 팀코딩 스킬 있는 개발자크로스 플랫폼 테스팅자동 기능·회귀·GUI 테스팅
ScriptingJavaScript, Python다중 언어VBScriptJava, Visual Basic .NET
Cross-PlatformWeb, Mobile, DesktopWeb, Cross-browserWeb, Desktop, SAP, MobileWeb, .Net, Java, SAP, 터미널
Mobile TestingO제한적OO

8.2 Selenium

  • 다양한 브라우저와 플랫폼에서 웹 애플리케이션을 검증하는 무료 오픈소스 자동화 테스팅 프레임워크
  • Java, C#, Python 등 다중 프로그래밍 언어로 테스트 스크립트 작성 가능
  • WebDriver가 브라우저 자동화의 핵심
  • Selenium Suite: Selenium IDE → Selenium RC + WebDriver → Selenium 2 → Selenium 3 (New & Improved)
  • 실행 흐름: Test Script → WebDriver API → Browser Driver → Chrome/Edge/Firefox

핵심 키워드 정리

Integration Testing Interface Testing Interface misuse Interface misunderstanding Timing errors Big Bang Top-down Bottom-up Sandwich Stub Test Driver Call Graph Pairwise Integration Neighborhood Integration System Testing Scenario-based Testing Use Case 기반 테스팅 GUI Testing Capture and Replay Model-based Testing Selenium WebDriver TestComplete 자동화 테스팅 도구