15. 애플리케이션 통합 테스트
결함관리 도구
개념
- 테스트 수행 후 발생한 결함을 추적하고 관리할 수 있게 해주는 도구
프로세스
- 에러 발견
- 에러 등록
- 에러 분석
- 결함 확정
- 결함 할당
- 결함 조치
- 결함 조치 검토 및 승인
결함 추이 분석
- 테스트 완료 후 발견된 결함의 결함 관리 측정 지표의 속성 값들을 분석하고, 향후 애플리케이션의 어떤 모듈 또는 컴포넌트에서 결함이 발생하는지를 추정하는 작업
결함 관리 측정 지표
결함 분포- 각 애플리케이션 모듈 또는 컴포넌트의 특정 속성에 해당하는 결함의 수를 측정하여 결함의 분포를 분석
결함 추세- 테스트 진행 시간의 흐름에 따른 결함의 수를 측정하여 결함 추세를 분석
결함 에이징- 등록된 결함에 대해 특정한 결함 상태의 지속 시간을 측정하여 분석
결함 식별
단계별 결함 유입 분류
기획 시 유입되는 결함
설계 시 유입되는 결함
코딩 시 유입되는 결함
테스트 부족으로 유입되는 결함
결함 심각도별 분류
치명적 결함 Critical 주요 결함 Major 보통 결함 Normal 낮은 결함 Low, Minor
결함 우선 순위
결정적 Critical : 24시간 안에 즉시 수정, 전체 기능이 동작하지 않고, 더 이상 테스트도 진행할 수 없음 높음 High : 일반적인 결함으로 인해 하나의 기능을 사용할 수 없음 보통 Medium : 어떤 기능이 기대치에 못 미칠 경우 낮음 Low : 종료 기준에 따라 수정하지 않아도 되는 경우
결함 관리 항목
결함 내용
결함 ID
결함 유형
발견일
심각도
우선순위
시정 조치 예정일
수정 담당자
재테스트 결과
종료일
결함 관리 도구 종류
S / W 테스트 관리
TestLink
GanttProject
OpenProj
Redmine
결함 추적 관리
Mantis
Bugzilla
Trac
테스트 자동화 도구
개념
테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현
테스트 시간 단축과 인력 투입 비용을 최소화
쉽고 효율적인 테스트 수행
장점 & 단점
장점
반복되는 테스트 데이터 재입력 작업의 자동화
사용자 요구 기능의 일관성 검증에 유리
테스트 결과 값에 대한 객관적인 평가 기준 제공
테스트 결과의 통계 작업과 그래프 등 다양한 표시 형태 제공
UI가 없는 서비스의 경우에도 정밀한 테스트 가능
단점
도구 도입 후 도구 사용 방법에 대한 교육 및 학습이 필요
도구를 프로세스 단계별로 적용하기 위한 시간, 비용, 노력이 필요
상용 도구의 경우 고가, 유지 관리 비용이 높아 추가 투자 필요
유형
정적 분석 도구 | Static Analysis Tools
만들어진 애플리케이션을 실행하지 않고 분석하는 방법
대부분의 경우 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위해 사용
테스트를 수행하는 사람이 작성된 소스코드에 대한 이해를 바탕으로 도구를 이용해서 분석하는 것
종류 : pmd, SonarQube, cppcheck, checkstyle 등
테스트 실행 도구 | Test Execution Tools
테스트를 위해 작성된 스크립트를 실행
작성된 스크립트는 각 스크립트마다 특정 데이터와 테스트 수행 방법을 포함
테스트 실행 도구 방식 : 데이터 주도 접근 방식, 키워드 주도 접근 방식
성능 테스트 도구 | Performance Test Tools
- 애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률에 대해 가상의 사용자를 생성하고 테스트를 수행함으로써 성능 목표를 달성하였는지를 확인하는 도구
테스트 통제 도구 | Test Control Tools
테스트 관리 도구 : 테스트 계획 및 관리
형상 관리 도구 : 테스트 수행에 필요한 데이터와 도구를 관리
결함 추적 / 관리 도구 : 테스트에서 발생한 결함에 대해 관리하거나 협업을 지원
테스트 장치 | Test Harness
애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분
테스트를 지원하기 위한 코드와 데이터
단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성
구성요소
테스트 드라이버 | Test Driver- 테스트 대상 하위 모듈을 호출하고, 파라미터를 전달하고, 모듈 테스트 수행 후의 결과를 도출하는 등 상향식 테스트에 필요
테스트 스텁 | Test Stub- 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로 하향식 테스트에 필요
테스트 슈트 | Test Suites- 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
테스트 케이스 | Test Case- 입력 값, 실행 조건, 기대 결과 등의 집합
테스트 스크립트 | Test Script- 자동화된 테스트 실행 절차에 대한 명세
목 오브젝트 | Mock Object- 사용자의 행위를 조건부로 사전에 입력해두면, 그 상황에 예정된 행위를 수행하는 객체
통합 테스트
개념
소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법
단위 테스트가 끝난 모듈 또는 컴포넌트 단위의 프로그램이 설계 단계에서 제시한 애플리케이션과 동일한 구조와 기능으로 구현된 것인지를 확인하는 것
수행 방법 : 비점증적 방식(빅뱅), 점증적 방식(상향식, 하향식)
수행 방법의 분류
하향식 통합 테스트 | Top Down
메인 제어 모듈로부터 아래 방향으로 제어의 경로를 따라 이동하면서 하햐식으로 통합하면서 테스트 진행
깊이-우선또는너비-우선방식으로 통합아직 개발되지 않은 상위 모듈은 더미 모듈인 Stub을 개발하여 테스트 진행
장점
- 장애 위치 파악이 쉬움
- 중요 모듈은 먼저 테스트 수행
단점
- 많은 스텁이 필요
- 하위 모듈의 불충분한 테스트
상향식 통합 테스트 | Bottom Up
최하위 레벨의 모듈부터 위쪽 방향으로 제어의 경로를 따라 통합하면서 테스트 진행
하위 모듈을 Cluster로 결합하면서 위쪽 방향으로 진행
아직 개발되지 않은 하위 모듈은 더미 모듈인 Driver를 개발하여 테스트 진행
장점
- 장애 위치 파악 쉬움
- 모든 모듈 개발을 위한 시간 낭비가 불필요
단점
- 중요 모듈이 마지막에 테스트될 가능성이 높음
빅뱅 테스트
모든 구성 요소들을 한꺼번에 통합하여 테스트
소규모 시스템에 편리한 테스트 방식
장점
- 단 시간에 테스트를 할 수 있다
단점
- 장애가 일어난 위치를 파악하기 어려움
- 모든 모듈들이 설계된 후에 시작할 수 있기 때문에 테스트 시간이 적어짐
백본 테스트
샌드위치 테스트
상향식과 하향식의 장점을 이용하는 방식
Driver / Stub을 필요에 따라 만들어 사용
대규모 프로젝트에 사용하는 방식
비용이 많이 소요
수행 순서
- 통합 테스트 계획서를 검토
- 통합 테스트를 수행할 테스트 환경 준비
- 통합 테스트 케이스 및 시나리오 검토
- 통합 모듈 및 인터페이스가 요구사항을 충족하는지 테스트를 수행
- 통합 테스트 결과를 기록