본문 바로가기

Study/정보처리기사 실기

[정보처리기사 실기] 애플리케이션 테스트 관리, 애플리케이션 통합 테스트

개발 과정에 따른 테스트

소프트웨어 개발 단계에 따라 만들어지는 모듈 구성 단위에 테스트 수행해 코드 오류 뿐 아니라 요구 분석 오류, 설계,

인터페이스 오류 발견할 수 있음

 

1) 단위 테스트

- 코딩 직후 각 모듈에 대해 테스트 수행

- 논리 흐름 구조 기반 테스트 수행


2) 통합 테스트

- 단위 테스트가 끝난 모듈들 결합하면서 테스트 수행

- 하향식, 상향식, 혼합식 통합 테스트로 구분

하향식 통합
(Top Down)
- 상위 모듈에서 하위 모듈로 통합하면서 검사 수행
- 검사용 가짜 모듈 (stub) 필요
- 깊이우선 방식, 너비우선 방식
- 테스트 스텁 사용
상향식 통합
(Bottom up)
- 하위 모듈에서 상위 모듈로 통합하면서 검사 수행
- 클러스터 (Cluster) 드라이버 (Driver) 필요
- 최하위 모듈부터 위쪽 방향을 제어 경로 따라 이동하면서 테스트와 통합 수행 방식
- 하위 모듈 포함하는 테스트 드라이버 필요

하향식 통합 테스트 절차

 

  • 깊이 우선 방식 : A, B, C, D, E, F, G
  • 너비 우선 방식 : A, B, F, G, C, D, E

① 제어 모듈 종속 모듈을 Stub으로 대체
② 통합 방법 따라 Stub 실제 모듈로 대체
③ 모듈 통합될 때까지 검사 수행
④ 통합될 때마다 재수행하는 회귀 검사 실시


상향식 통합 테스트 절차

① 낮은 수준 모듈들 클러스터로 결합
② 클러스터 검사용 드라이버 작성
③ 클러스터 검사
④ 드라이버 제거하고 클러스터를 상위 결합


3) 시스템 테스트

- 다른 시스템 요소와 연결된 소프트웨어가 시스템 기능, 성능 만족하는지 검사

- 성능 테스트, 복구 테스트, 보안 테스트, 강도 테스트 등 있음

성능 테스트 통합 시스템 맥락에서 소프트웨어 실시간 성능 검사하며 모든 검사 단계에서 수행
복구 테스트 소프트웨어 장애 발생시킨 후 올바르게 복구되는지 검사
보안 테스트 비인가된 침입으로부터 시스템 보호 수행 여부 검사
강도 테스트 비정상적인 처리량과 빈도 발생 시 소프트웨어 실행 여부 검사

회귀 테스트 (Regression Test)

기능 추가나 오류 수정한 소프트웨어가 수정에 의해 다른 부분에 영향 미치는지, 새로 유입된 오류 없는지 확인하는 테스트


4) 인수 테스트

- 사용자 요구사항 충족하는지 검사하는 것, 블랙 박스 검사 이용

- 알파 테스트, 베타 테스트 등 있음

알파 검사 - 개발자 장소에서 사용자가 개발자 앞에서 수행하는 검사
- 통제된 환경에서 사용자와 개발자가 사용상 문제점 함께 확인
베타 검사 - 여러 사용자 중 선정된 최종 사용자가 수행하는 검사
- 개발자 제외하고 사용자가 직접 수행하는 문제점 확인

테스트 자동화 도구

- 사람 대신 테스트 도구 이용해 반복적인 테스트 작업 효율적으로 수행하는 것

- 인간 판단, 조작 실수로 발생하는 휴먼 에러 (Human Error) 방지 가능

 

1) 자동화 도구 사용 시 장·단점

장점 - 반복되는 테스트 데이터 재입력 작업 자동화
- 사용자 요구 기능 일관성 검증에 유리
- 테스트 결과값에 대한 객관적 평가 기준 제공
- 테스트 결과 통계 작업과 그래프 등 다양한 표시 형태 제공
- UI 없는 서비스 경우에도 정밀한 테스트 가능
단점 - 도구 도입 후 도구 사용 방법에 대한 교육 및 학습 필요
- 도구를 프로세스 단계별로 적용하기 위한 시간, 비용, 노력 필요
- 상용 도구의 경우, 고가, 유지 관리 비용이 높아 추가 투자 필요

2) 테스트 자동화 도구

정적 분석 도구 - 프로그램 실행하지 않고 분석하는 도구
- 소스코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함 등 발견하기 위해 사용
테스트 실행 도구 - 스크립트 언어 사용해 테스트 실행
- 테스트 데이터와 테스트 수행방법 등 포함된 스크립트 작성 후 실행
- 데이터 주도 접근 방식, 키워드 주도 접근 방식으로 구분
성능 테스트 도구 가상의 사용자 만들어 처리량, 응답 시간, 자원 사용률 등 인위적으로 적용 후 테스트
테스트 통제 도구 - 테스트 계획 및 관리, 테스트 수행, 결함 관리 등 수행하는 도구
- 형상 관리 도구, 결함 추적 / 관리 도구 등
테스트 하네스 도구 - 테스트하는 환경 일부분으로, 테스트 지원 위해 생성된 코드와 데이터 의미
- 테스트가 실행될 환경 시뮬레이션함

3) 테스트 하네스 구성요소

테스트 드라이버 테스트 대상 하위 모듈 호출하고, 파라미터 전달하고, 모듈 테스트 수행 후 결과 도출하는 도구
(상향식 통합)
테스트 스텁 제어 모듈이 호출하는 타 모듈 기능 단순히 수행하는 도구로, 일시적으로 필요한 조건만 가지고 있는
테스트용 모듈 (하향식 통합)
테스트 슈트 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스 집합
테스트 케이스 사용자 요구사항 정확하게 준수했는지 확인하기 위한 입력값, 실행조건, 기대 결과 등으로 만들어진 테스트 항목 명세서
테스트 시나리오 테스트 케이스 동작 순서에 따른 묶음
테스트 스크립트 자동화될 테스트 실행 절차에 대한 명세서
목 오브젝트 사전에 사용자 행위를 조건부로 입력해두면, 그 상황에 맞는 예정된 행위 수행하는 객체

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

통합 테스트 후 발견되는 결함에 대한 분석 통해 잔존 결함 추정 가능

 

결합 (fault)

소프트웨어가 개발자가 의도한 바와 다르게 동작해 원하지 않은 다른 결과 발생하는 것


1) 결함 판단 기준

- 기능 명세서에 가능하다고 명시한 기능 수행되지 않는 경우

- 기능 명세서에 명시되어 있지 않지만 수행해야만 하는 기능 수행되지 않는 경우

- 테스터 시각에서 보았을 때 문제 있다고 판단되는 경우


2) 결함 관리 프로세스


결함 상태

테스트에서 발견된 결함은 지속적으로 상태 변화 추적, 관리해야 함

 

결함 상태 추적

상태 내용
Open 결함이 보고되고 등록된 상태
Assigned 결함 분석 및 수정 위해 담당자에게 결함 전달된 상태
Fixed (Resolved) 결함 수정이 완료된 상태
Deferred 결함 수정이 연기된 상태
Closed 결함이 해결되어 테스터와 담당자가 종료 승인한 상태
Clarified 종료 승인한 결함 검토해 결함 아니라고 확인된 상태

결함 추이 분석

테스트 완료 후 발견된 결함에 대해  결함 관리 측정 지표 속성값 분석

 

결함 관리 측정지표

결함 분포 모듈 또는 컴포넌트 특정 속성에 해당하는 결함 수 측정
결함 추세 테스트 진행 시간에 따른 결함 수 추이 분석
결함 에이징 특정 결함 상태로 지속되는 시간 측정

결함 식별 및 우선순위

결함 분류

시스템 결함 시스템 다운, 애플리케이션 작동 정지, 데이터베이스 에러
기능 결함 사용자 요구사항 미반영 / 불일치, 부정확한 비즈니스 프로세스, 스크립트 오류, 타 시스템 연동 시 오류 등
GUI 결함 UI 비일관성, 데이터 타입 표시 오류, 부정확한 커서, 메시지 오류 등 사용자 화면 설계에서 발생된 결함
문서 결함 사용자 요구사항과 기능 요구사항 불일치로 인한 불완전한 상태 문서, 사용자 온라인 / 오프라인 매뉴얼 불일치

결함 심각도

- 애플리케이션에 발생한 결함이 전체 시스템에 미치는 치명도 나타내는 척도

- 치명적 (critical), 주요 (major), 보통 (normal), 경미 (minor), 단순 (simple)


결함 우선순위

- 결함 처리에 대한 신속성 나타내는 척도

- 업무 가중치와 결함 심각도에 따라 우선순위 결정

- 긴급 (Critical), 높음 (High), 중간 (Medium), 낮음 (Low)으로 나타냄


결함 관리 도구

Mantis 소프트웨어 설계 시 단위별 작업 내용 기록할 수 있어 결함 및 이슈 관리, 추적할 수 있는 도구
Trac 결함 추적 및 통합 관리할 수 있는 도구
Redmine 프로젝트 관리 및 결함 추적할 수 있는 도구
Bugzilla 결함 지속적으로 관리하고 심각도와 우선순위 저장할 수 있는 도구