본문 바로가기
정보처리기사/필기

[정보처리기사] Part02-04-02. 애플리케이션 통합 테스트

by 채연2 2023. 1. 12.

 

 

 

애플리케이션 통합 테스트

  결함 관리 도구

 

  테스트 자동화 도구

 

  애플리케이션 통합 테스트

 

 

애플리케이션 통합 테스트

 

결함 관리 도구

 

개념

각 단계 별 테스트 수행 후 발생한 결함 재발 방지를 위해 유사 결함 발견 시 처리 시간 단축을 위해 결함 추적 및 관리하는 활동인 테스트 결함 관리를 자동화 하는 도구

 

결함 관리 도구 유형

구분 도구 설명
상용도구 QC
(Quality Center)
HP에서 만든 결함관리 도구
Clear Quest IBM에서 제작한 결함관리 도구
JIRA 아틀래시안에서 만든 결함 상태관리 도구
PHP로 개발됨
오픈소스
도구
Bugzilla 설치가 다소 까다로우며, 개발 언어는 Perl 사용
서버는 MySQL과 PostgreSQL 지원
다양한 플러그인 기능 제공 (eclipse, SVN, 프로젝트 관리 도구 등)
Trac 버그 관리, 개발 Task용 이슈 관리, 소스 코드 형상 관리 및 위키 기반 문서 관리
Python으로 작성되어 있고, DB는 SQLite 사용
웹에서 게시판 형태로 사용 용이하며 티켓 발행으로 팀원 간 원할한 의사소통 제공
Mantis 버그 관리에 최적화되어 있고, 설치와 사용법이 매우 쉬우며 결함만 관리한다면 권장하는 도구
OS에 관계없이 PHP와 MySQL, Apache(IIS)만 있으면 사용 가능

 

결함 관리 도구 고려사항

  • 웹 클라이언트 지원을 하는지 확인 필요
  • Window, Unix 환경 등 이기종 플랫폼 웹 서버 지원하는지 확인 필요
  • 프로세스 및 워크플로우 변경 가능해야 함
  • 결함 간 연관 관계 정보 제공해야 함
    • 중복 (duplicate), 관계 (related), 부모 관계 (mother/daughter) 등의 정보
  • 결함 등록 및 상태 변경 시 담당자에게 이벤트 통보 되어야 함
  • 각종 레포트, 차트, 쿼리 구성 및 저장 가능해야 함
  • 결함 상태 변경에 대한 추적 기능 있어야 함
  • 다국어 지원 가능해야 함
  • 다중 프로젝트 지원 가능해야 함

 

테스트 자동화 도구

 

개념

소프트웨어 테스트 자동화란 소프트웨어 개발 시 포함되는 다양한 테스트 과정을 HW 또는 SW 적으로 자동화 도구 사용하여 반복성, 일관성, 및 생산성 향상시키는 테스트 기법.

 

테스트 자동화 도구란 테스트에 포함되는 다양한 과정 (테스트 관리, 소스코드 리뷰 및 인스펙션, 테스트 설계 및 개발, 테스트 수행 등)을 자동적으로 지원하는 도구

 

소프트웨어 테스트 자동화 도구 분류

소프트웨어 개발 라이프 사이클 (SDLC, Software Development Life Cycle) 전반에 걸쳐 테스트 자동화 도구가 존재

V모델 관점에서의 테스트 자동화 도구 분류

단계 도구 유형 설명
설계 단계 명세 기반 테스트 설계 도구 소프트웨어 명세로부터 테스트 절차, 데이터, 드라이버 등 생성
코드 기반 테스트 설계 도구 소스 코드로부터 테스트 절차, 데이터, 드라이버 등 생성
테스트 관리 도구 테스트 계획 수립, 프로세스 관리, 요구사항 및 결함 추적 관리
구현/테스트
단계
정적 분석 도구 프로그램 수행하지 않고 분석하는 도구, 복잡도 측정 등
리뷰 및 인스펙션 도구 소스 코드/설계 문서 분석하여 가이드 라인 및 규칙 준수 검사
커버리지 측정 도구 주어진 테스트 케이스에 의해 얼마나 테스트 되었는가를 측정
동적 분석 도구 프로그램 수행되는 동안 이벤트 상태 파악 위해 특정 변수나 조건의 스냅샷 (snapshot) 생성 및 활용
성능/부하/시뮬레이션 도구 시스템 부하 생성 및 반응시간, 메모리 사용량 평가
기능 테스트 수행 도구 주어진 테스트 케이스 자동 수행 및 예상 결과와 비교.
단위, 통합, 시스템, 인수 모든 단계에서 수행

 

※ V 모델은 폭포수 모델에 시스템 검증과 테스트 작업을 강조한 모델로, 11개의 소프트웨어 테스팅 프로세스로 구성된 효과적인 SW 테스팅 방법

 

소프트웨어 테스트 자동화 도구 기능 및 역할

테스트 도구 자동화 도구 주요 기능 및 역할
테스트 관리 테스트 관리 도구 테스트 관리 협업 환경 지원
인시던트 관리 도구 인시던트 (결함) 할당 및 모니터링 지원
요구사항 관리 도구 요구사항 작성 및 추적성 모니터링 지원
형상 관리 도구 각종 소프트웨어 버전 관리
테스트 설계 테스트 설계 도구 테스트 케이스 설계 지원
테스트 케이스 생성 자료 흐름도 : 테스트 경로 관리
입력 도메인 분석 : 테스트 데이터 산출
랜덤 테스트 : 무작위 입력 값, 신뢰성 검사
정적 테스팅 코드 분석 도구 룰 메트릭 제공
원시 코드 문법적 정합성, 위반 사례 검출
구조 검사 도구 논리 그래프, 결함 체크
데이터 분석 데이터 선언, 컴포넌트 인터페이스
정의 / 링크 충돌 발견
순서 검사 도구 이벤트 순서, 오류 순서 지적
동적 테스팅 단위 테스트 도구 단위 함수 기능 검증
테스트 실행 도구 반복 테스트 자동 수행, 캡쳐 및 리플레이 기능
성능 테스팅 도구 가상 부하 (load) 발생 통한 성능 / 부하 / 스트레스 테스트 실행
커버리지 측정 도구 코드 레벨 커버리지 측정 지원
동적 분석 도구 테스트 수행 시 런타임 결함 검출
모니터링 도구 시스템 특정 항목 (메모리 사용량, 수행 경로, 동시 접속자 등) 모니터링 지원

 

소프트웨어 테스트 관리 지원 도구

  • 실행된 테스트와 테스트 활동 관리 지원
  • 테스트 실행 도구나 결함 추적 도구, 요구사항 관리 도구와의 인터페이스 역할
  • 결함 발견, 분배, 수정, 확인, 종료되는 결함의 수명주기 (Defect life Cycle) 관리
  • 테스트 진행 상황에 대한 리포트 생성, 발견된 결함의 정량적 분석 지원
구분 역할 종류
오픈 소스 결함 관리 도구 Mantis(GPL), Bugzilla
테스트 케이스 관리 도구 Testlink
형상 (버전) 관리 도구 CVS, SVN, Git, Bazaar
커뮤니케이션 도구 MediaWiki, Dokuwiki
통합 프로젝트 지원 도구 Trac, nForge, Gforge
상용 소스 버그 추적 JIRA (Atlassian), TPMS (STA), Test Director (HP), Clear Quest (IBM)
형상 관리 Visual Sourcesafe, IBM Rational Clear Case
커뮤니케이션 Confluence

 

소프트웨어 정적 분석 지원 도구

  • 리뷰 프로세스에 관한 정보 저장, 리뷰 코멘트 저장
  • 동적 테스트 하기 전 결함 발견할 수 있도록 지원
  • 코딩 표준을 지킬 것을 강제하고 구조와 의존 관계 분석
  • 소스 코드 복잡도 측정
구분 도구 설명
오픈 소스 PMD, Valgrind, Find, Checkstyle, CPPCheck, Corbetura 등
상용 소스 Coverity, IBM Rational Software, PloySpace 등

 

소프트웨어 테스트 실행 및 로깅 지원 도구

  • 스크립트 언어 도움으로 저장된 입력 값과 예상 결과 이용하여 테스트 실행하고 실제 결과와 비교 (Capture and playback 도구)
  • 테스트 대상이 실행되는 환경 시뮬레이션 함 (Test Harness 도구)
  • 측정하고자 하는 특정 유형 코드 구조 (구문, 분기 등) 가 몇 퍼센트 수행되었는가 측정 (커버리지 측정 도구)
구분 역할 종류
오픈소스 테스트 프레임워크 XUnit, TestNG, FIT/FitNess, Jmock, Easymock, Googlemock 등
지속적 통합 CruiseControl, hudson, jenkinson
빌드 자동화 Ant, Maven, Make
실행 자동화 Selenium 등
상용 소스   HP의 WinRunner, Parasoft의 Jtest, 슈어소프트의 CodeScroll

 

소프트웨어 성능 및 모니터링 도구

  • 소프트웨어가 실행 도중에만 발생하는 시간 의존성과 메모리 누수 (Memory Leaks) 와 같은 결함 발견에 활용
  • 소프트웨어 성능 / 부하 / 스트레스 테스트
  • 특정 시스템 리소스 사용량을 지속적으로 분석 및 확인
구분 도구 설명
오픈 소스 Jmeter, OpenSTA, allmon, Eclipse TPTP(Test & Performance Tools Platform) 등
상용 소스 Oracle의 E-load, HP의 LoadRunner, radview의 Webload, IBM의 Robot

 

애플리케이션 통합 테스트

 

개념

소프트웨어 각 모듈 간 인터페이스 관련 오류 및 결함 발견하기 위한 체계적 테스트 기법. 단위 테스트가 끝난 모듈 또는 컴포넌트 단위 프로그램이 설계 단계에서 제시한 애플리케이션과 동일한 구조와 기능으로 구현된 것인지를 확인

 

애플리케이션 통합 테스트 접근 전략

    • 점증적인 방법 : 개발된 컴포넌트 중 일부를 테스트하고 점차적으로 컴포넌트를 늘려가면서 테스트하는 방식. 상향식 통합과 하향식 통합으로 나뉨
    • 빅뱅 방식 : 모든 컴포넌트를 사전에 통합하여 한꺼번에 테스트하는 방식

 

하향식 통합 (Top Down)

하향식 통합 테스트

  • 메인 제어 컴포넌트부터 아래 방향으로 제어 경로를 따라 이동하면서 하향식으로 통합하며 테스트 진행
  • 메인 제어 컴포넌트는 작성된 프로그램 사용하고, 아직 작성되지 않은 하위 제어 컴포넌트 및 모든 하위 컴포넌트 대신하여 더미 컴포넌트 스텁 (Stub) 개발
  • 깊이-우선 방식 또는 너비-우선 방식에 따라 하위 컴포넌트 스텁이 한 번에 하나씩 실제 컴포넌트로 대체됨

※ 스텁 : 임시 제공되는 가짜 모듈

 

상향식 통합 (Bottom Up)

상향식 통합 테스트

  • 애플리케이션 구조에서 최하위 레벨 컴포넌트로부터 위쪽 방향으로 제어 경로 따라 이동하며 테스트 시작
  • 최하위 레벨 컴포넌트들이 하위 컴포넌트 기능을 수행하는 클러스터로 결합됨
  • 상위 컴포넌트 개발이 안됐을 경우 더미 컴포넌트인 드라이버 (Driver) 작성
  • 각 통합된 클러스터 단위 테스트
  • 테스트 완료되면 각 클러스터들은 프로그램의 위쪽으로 결합되며, 드라이버는 실제 컴포넌트로 대체됨

※ 클러스터 : 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹

※ 드라이버 : 검사 자료 입출력 제어 프로그램

 

애플리케이션 통합 테스트 유형

유형 설명
회귀 테스트
(Regression Test)
이미 통합 테스트 완료한 컴포넌트가 어떠한 변화로 인해 의도하지 않은 오류가 생기지 않았음을 보증하기 위해 반복 테스트 하는 것
테스트 시 변경 영향도 분석하여 영향 받는 컴포넌트 중심으로 재 테스트 수행
사용 기반 테스트
(Use Based Test)
사용자 중심 시나리오 기반 테스트
스레드 기반 테스트
(Thread Base Test)
주요 기능 모듈부터 점차 범위를 넓혀 나가는 통합 테스트 기법
빅뱅 테스트
(Bigbang Test)
모든 모듈을 한꺼번에 테스트하는 기법
점증적 테스트
(Incremental Test)
주요 기능을 먼저 테스트 후 점차 범위 넓혀나가는 테스트

 

애플리케이션 회귀 테스트 케이스 선정 기준
  • 실제 수정이 발생한 컴포넌트와 관련된 테스트 케이스 도출. 이를 위해 변경 관리 도구 사용하여 애플리케이션 변경 영향도 분석
  • 변경 영향도가 가장 높은 컴포넌트 기능에 집중한 회귀 테스트 케이스 도출

 

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

① 통합 테스트 케이스 설계

  • 단위 테스트 케이스를 비즈니스 시나리오에 따라 여러 개를 묶고 이어서 통합 테스트 케이스 생성
  • 통합 테스트 케이스는 사용자 요구사항을 기준으로 작성

 

② 통합 테스트 데이터 준비

  • 통합 테스트 데이터는 운영 데이터베이스에서 일부 추출하여 테스트 데이터 생성
    • ex. 운영 데이터베이스에서 1개월 전 까지의 데이터 추출하여 테스트 데이터베이스에 전달
  • 보안 위해 테스트 데이터에서 개인 정보는 스크램블링 (Scrambling) 함.

 

③ 통합 테스트 수행 및 결과 확인

  • 테스트 수행 시 1개월 전부터 현재까지의 데이터를 애플리케이션에 그대로 입력하여 레거시와 비교 검사 (재연 테스트)
  • 테스트 케이스에 따라 데이터 입력하고 예상 결과와 비교

 

④ 결함 관리

  • 테스트 결과가 예상 결과와 다를 경우 결함 화면 캡쳐하여 붙인 후 결함 등록
  • 조치된 결함을 재 테스트 프로세스 수행

 

⑤ 테스트 결과 보고 및 종료

  • 모든 통합 테스트 수행 완료되면 결과 집계하여 보고 및 종료

 

애플리케이션 통합 테스트 시작 및 종료 기준

 

통합 테스트 시작 기준
점검 포인트 Pass 기준 점검 방법
통합 테스트 계획서 작성 승인 작성된 통합 테스트 계획서에 대해 승인
통합 테스트 케이스 작성 100% 완료 통합 테스트 대상 범위에 대해 모두 작성
통합 테스트 데이터 준비 100% 완료 테스트 수행자의 테스트 데이터 요구사항에 따른 데이터 생성 여부
통합 테스트 환경 셋업 100% 완료 스모크 테스트 통과

 

통합 테스트 종료 기준
점검 포인트 Pass 기준 점검 방법
통합 테스트 수행률 100% 완료 테스트 관리 도구에서 통합 테스트 수행율 확인
테스트 합격률 95% 완료 X = (A / B) * 100

- A : 테스트 시 Pass된 테스트 케이스 수
- B : 계획된 테스트 케이스 총 건수
결함 조치율 95% 완료 X = (A / B) * 100

- A : 시정 조치가 완료된 건수
- B : 결함 기준 시정 조치 대상 총 건수
요구사항 추적률 97% 요구사항 ID와 통합 테스트 케이스 목록 비교

 

 

 

 

320x100

댓글