애플리케이션 통합 테스트 총정리

출제 빈도: 중
빈출 태그: 상향식/하향식, 스텁, 드라이버, 결함, 커버리지

애플리케이션 통합 테스트 수행

V-모델

  • 단계별로 검증하고 수행해야 하는 테스트를 시각화함

테스트 단계별 특징

  1. 단위 테스트
    • 모듈의 기능을 중심으로 테스트
    • 기능 수행 여부와 논리적인 오류를 검출
    • 화이트박스 테스트를 진행
  2. 통합 테스트
    • 인터페이스 관련 오류 검출
    • 설계 단계에서 제시한 애플리케이션과 동일한 구조로 구현되었는지 확인

통합 테스트 방식

비점증적 방식

  • 전체 프로그램을 한번에 테스트 (빅뱅)

점증적 방식

  1. 상향식 통합
    • 최하위 모듈부터 상위 모듈로 단계별 통합하여 테스트
    • 더미 모듈은 테스트 드라이버 사용
    • 장점
      • 장애 위치 파악이 쉬움
      • 개발시간 낭비 없음
    • 단점
      • 중요 모듈들을 마지막에 테스트해서 프로토타입이 어려움
  2. 하향식 통합
    • 최상위 모듈부터 하위 모듈로 단계별 통합하여 테스트
    • 더미 모듈은 테스트 스텁(stub) 사용
    • 탐색 방식
      • 깊이 우선 방식: 종속되어있는 모듈을 우선 탐색
      • 너비 우선 방식: 같은 레벨을 우선 탐색
    • 장점
      • 장애 위치 파악 쉬움
      • 중요 모듈의 선테스트 가능
      • 설계상 결함 조기 발견
    • 단점
      • 많은 더미 모듈이 필요
      • 하위 모듈들의 불충분한 테스트 수행

더미 모듈

  1. 스텁(Stub)
    • 시각화 가능
    • 테스트 케이스 사용이 어려움
  2. 드라이버(Driver)
    • 상향식 통합에서 사용
    • 테스트용 더미 모듈

회귀 테스트

  • 통합 테스트 완료 후 변경여부 확인
  • 방법
    • 대표적인 샘플 도출
    • 실제 수정이 발생한 모듈을 중심으로 시행

시스템 테스트

  • 기능적 요구사항과 비기능적 요구사항으로 구분하여 테스트
  • 실제 환경과 유사하게 만든 환경에서 테스트
  • 목표 컴퓨터 시스템에서 수행능력 확인

인수 테스트

  • 사용자가 직접 테스트
  • 종류
    • 알파 테스트: 개발자의 장소(회사)에서 진행
    • 베타 테스트: 제한되지 않은 환경(회사 밖)에서 진행

테스트 자동화 도구

특징

  • 반복적인 테스트 작업을 스크립트로 표현
  • 휴먼 에러를 줄이고 비용과 시간을 절약

장점

  • 데이터 재입력 자동화
  • 일관된 검증에 유리
  • 객관적인 평가 기준 제공
  • 시각화 요소 제공
  • 정밀한 테스트 가능

단점

  • 사용방법에 대한 교육과 학습 필요
  • 추가 투자 필요

자동화 도구 유형

  1. 정적 분석 도구
    • 애플리케이션을 실행하지 않고 분석
    • 소스코드에 대한 이해를 바탕으로 분석
  2. 테스트 실행 도구
    • 스크립트를 실행하는 도구
    • 특정 데이터와 수행방법 포함
    • 접근 방식
      • 데이터 주도: 데이터시트를 읽어옴
      • 키워드 주도: 키워드-수행동작과 데이터 시트를 읽어옴, 수행 동작 정의와 테일러링 가능
  3. 성능 테스트 도구
    • 처리량, 응답시간, 경과시간, 자원 사용율 테스트
    • 결과 해석에 전문가의 도움 필요
  4. 테스트 통제 도구
    • 테스트 관리 도구
    • 형상 관리 도구
    • 결함 추적/관리 도구
  5. 테스트 하네스
    • Test Driver, Test Stub으로 구성
    • 테스트 스위트: 테스트 케이스의 집합
    • 테스트 케이스: 입력값, 시행조건, 기대결과의 집합
    • 테스트 스크립트: 자동화된 실행절차를 명세
    • 목 오브젝트: 예정된 행위를 자동으로 수행하는 객체

애플리케이션 테스트 결과 분석

소프트웨어 결함

  1. 오류
    • 휴먼 에러에 의해 생기는 실수
  2. 결함/결점/버그
    • 오류의 원인이 제품에 포함되는 완전하지 못한 부분
  3. 실패/문제
    • 결함에 의해 의도하지 않은 결과가 발생
    • 예: 개발자의 오타로 잘못된 연산이 나오고 실행하면서 문제가 생기는 경우

테스트 보고서

  • 테스트 계획과 결과 포함
  • 품질 상태, 성공률, 커버리지, 결함의 수, 결함의 중요도 포함

결함 관리

  • 결함을 추적하고 관리
  • 휴먼 에러 원인: 개발 기획, 설계, 코딩, 테스트 부족
  • 심각도를 고려해서 관리의 우선순위 결정

결함 관리 측정 지표

  1. 결함 분포: 특정 속성에 해당하는 결함 수
  2. 결함 추세: 시간의 흐름
  3. 결함 에이징: 결함상태의 지속시간 측정

테스트 커버리지(Coverage)

  • 테스트 범위를 측정하는 기준
  1. 기능 기반 커버리지
    • 전체 기능 대비 실제 테스트가 수행된 기능 수 측정
    • 100% 달성을 목표로 함
  2. 라인 커버리지
    • 전체 코드 라인 수 대비 수행한 라인 수 측정
    • 단위 테스트의 주요 척도
  3. 코드 커버리지
    • 구문 커버리지: 모든 구문을 한번 이상 수행
    • 결정 커버리지: 결정문의 결과가 참과 거짓의 결과를 수행
    • 조건 커버리지: 결정문 내부 조건식의 결과가 참과 거짓을 수행
    • 변형 조건/결정 커버리지: 독립적으로 전체 결과에 영향을 주는 것만 테스트
    • 다중 조건 커버리지: 모든 가능한 논리적 조합을 고려