본문 바로가기
other

[정보처리기사] 애플리케이션 테스트 관련 요약

by Jayson Jeong 2022. 7. 18.

2022.07.21 - [정보처리기사] - [정보처리기사] 실기 꼼수로 합격하기

 

테스트

1. 애플리케이션 테스트의 기본 원칙

종류 내용
완벽한 테스트 불가능 무한 경로, 무한 입력 값, 무한 시간이 소요되어 완벽하게 테스트할 수 없으므로 리스크 분석과 우선순위를 토대로 테스트에 집중해야 한다.
테스팅은 결함이 존재함을 밝히는 활동 테스팅은 소프트웨어의 잠재적인 결함을 줄일 수 있지만, 결함이 발견되지 않아도 결함이 없다고 증명할 수 없음
결함 집중
(파레토의 법칙)
전체 결과의 80%가 전체 원인의 20%에서 일어난다는 현상을 의미하며 애플리케이션 결함의 대부분은 소수의 특정한 모듈에 집중되어 존재한다는 원리
살충제 패러독스 동일한 테스트 케이스로 동일한 테스트를 반복하게 되면 더 이상 그것에 관련된 결함은 발견되지 않기 때문에 테스트 케이스는 지속 보완하고 개선해야 한다는 원리
테스팅 정황 의존 정황과 비즈니스 도메인에 따라 테스트를 다르게 수행하여야 한다.
오류-부재의 궤변 소프트웨어 결함을 완벽하게 제거 했더라도 사용자의 요구사항을 만족시키지 못하면 해당 애플리케이션의 품질이 높다고 말할 수 없다. 
사용자 요구와 기대에 만족하지 못해 사용성이 현저히 낮다면 결함을 찾는 과정은 아무 소용이 없다. 
테스트의 개발 초기 시작/
별도 팀 수행
애플리케이션의 개발 단계에 테스트를 계획하고 SDLC의 각 단계에 맞춰 전략적으로 접근하는 것을 고려해야 한다.

→완존초집살정오

 

2. 테스트 유형

(1) 프로그램 실행 여부에 따른 테스트

정적 테스트 ㆍ프로그램을 실행하지 않고 명세서나 소스 코드를 분석하는 테스트
ㆍ소프트웨어 개발 초기에 결함을 발견할 수 있기 때문에 소프트웨어 개발 비용을 낮출 수 있다.
ㆍ워크스루, 인스펙션, 코드검사
동적 테스트 ㆍ프로그램을 실행하여 오류를 찾는 테스트
블랙박스 테스트, 화이트박스 테스트

 

(2) 테스트 기반에 따른 테스트

명세 기반 테스트 ㆍ사용자의 요구사항에 대한 명세를 테스트 케이스로 활용
ㆍ동등 분할 테스트, 경계값 분석 테스트
구조 기반 테스트 ㆍ소프트웨어 내부의 논르 흐름에 따라 테스트 케이스를 활용
ㆍ구문 기반 테스트, 결정 기반 테스트, 조건 기반 테스트, 조건 결정 기반
경험 기반 테스트 ㆍ테스터의 경험에 기반한 테스트 케이스를 활용
ㆍ에러 추정 테스트, 체크리스트 테스트, 탐색적 테스트

 

(3) 시각에 따른 테스트

검증테스트 ㆍ개발자의 시각에서 테스트
ㆍ단위테스트, 통합테스트, 시스템 테스트
확인테스트 ㆍ사용자의 시각에서 테스트
ㆍ인수테스트(알파테스트, 베타테스트)

 

(4) 목적에 따른 테스트

회복(Recovery)테스트 ㆍ시스템에 결함을 주어 실패하도록 유도한 후 올바르게 복구되는지를 확인하는 테스트
안전(Security)테스트 ㆍ불법적인 침입으로부터 시스템을 안전하게 보호할 수 있는지 확인하는 테스트
강도(Stress)테스트 ㆍ과부하 시 소프트웨어가 정상적으로 작동하는지 확인하는 테스트
성능(Performance)테스트 ㆍ실시간 성능이나 전체적인 효율성을 검증하는 테스트
구조(Structure)테스트 ㆍ소프트웨어 내부의 논리적인 구조, 소스 코드 등을 평가하는 테스트
회귀(Regression)테스트 ㆍ유지보수 단계에서 결함의 수정 이후 기능이 정상적으로 수행되는지 확인하게 위해 반복테스트 하는 것
ㆍ이미 해결된 이슈가 또 다시 발생하는지, 새로운 이슈가 발생하는지 확인하는 테스트 
ㆍ소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트
병행(Parallel)테스트 ㆍ변경된 소프트웨어와 기존 소프트웨어의 동일한 데이터를 입력 후 결과를 비교하는 테스트

 

(5) 테스트 기법에 따른 애플리케이션 테스트

화이트 박스 테스트

  • 원시코드의 논리적인 모든 경로를 테스트
  • 모듈 안의 작동을 직접 관찰한다.
  • 원시 코드(모듈)의 모든 문장을 한 번이상 실행함으로써 수행된다.
기초 경로 검사
(Base Path Testing)
ㆍ테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법
제어 구조검사
(Control Structure Testing)
ㆍ조건 검사 : 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
ㆍ루프 검사 : 프로그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
ㆍ데이터 흐름 검사 : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법

 

화이트 박스 테스트의 검증 기준

  • 문장 검증 기준 : 모든 실행문이 한 번 이상 수행되도록 설계
  • 분기 검증 기준 : 분기점. 즉, 모든 조건문에 대해 모든 조건이 한 번 이상 수행되도록 설계
  • 조건 검증 기준 : 조건문에 포함된 개별 조건식이 한 번 이상 수행되도록 설계
  • 경로 검증 기준 :  경로 검사

 

블랙박스 테스트

  • 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로, 기능 테스트라고도 한다. 
  • 사용자의 요구사항 명세를 보면서 테스트한다. 
  • 주로 구현된 기능을 테스트한다. 
  • 소프트웨어 인터페이스를 통해 실시된다. 

 

  • 블랙박스 테스트 기법 유형
동등 분할 기법
(Equivalent Analysis), 
동등 분할 검사
ㆍ입력값의 범위를 유사한 특징을 갖는 동등 그룹으로 나누고, 각 그룹마다 대표 값을 선정하여 테스트케이스를 선정하는 기법
경계값 분석 기법
(Boundary Value Analysis)
ㆍ경계값 분석은 등가 분할된 경계의 유효한 값과 경계에서 가장 가까운 유효하지 않은 값을 테스트 데이터로 선택하여 컴포넌트나 시스템을 테스트하는 기법
원인 효과 그래프 기법
(Cause Effect Graph)
ㆍ입력값을 원인으로, 효과를 출력 값으로 정하고 이에 따른 원인 결과 그래프를 만들어서 테스트 케이스를 작성하는 기법
의사결정테이블 테스팅 기법 ㆍ생성될 수 있는 결과를 테이블로 나열하여 가능한 모든 조합을 테스트하는 기법

 

(6)  개발 단계에 따른 테스트

소프트웨어 개발 단계와 애플리케이션 테스트를 연결하여 표현한 것

  • 소프트웨어 개발 단계에 따라 단위테스트, 통합테스트, 시스템 테스트, 인수 테스트로 분류된다. 
  • V모델

 

단위테스트

단위테스트는 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트하는 것.

자바에서는 junit을 활용한 단위 테스트가 일반적임

단위테스트는 구조 기반 테스트와 명세 기반 테스트로 나뉘지만 주로 구조 기반 테스트를 진행

 

통합 테스트

통합 테스트는 단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 통합하는 테스트

 

하향식 통합 테스트

  • 프로그램의 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법
  • 깊이 우선 통합법이나 넓이 우선 통합법을 사용한다. 
    • 깊이 우선 통합법 : 주요 제어 모듈을 중심으로 해당 모듈에 종속된 모든 모듈을 통합하는 것
    • 넓이 우선 통합법 : 구조의 수평을 중심으로 해당하는 모듈을 통합하는 것
  • 하향식 테스트 간 하위 모듈을 대체하는 더미 모듈을 스텁(Stub)이라고 한다.

 

상향식 통합 테스트

  • 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법
  • 하위 모듈들을 클러스터로 결합한다. 
  • 상위 모듈에서 데이터의 입출력을 확인하기 위한 더미 모듈인 드라이버(Driver)를 작성한다.

 

시스템 테스트

시스템 테스트는 개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는가를 점검하는 테스트

기능적 요구사항 요구사항 명세서, 비즈니스 절차, 유스케이스 등 명세서 기반의 블랙박스 테스트 시행
비기능 요구사항 성능 테스트, 회복 테스트, 보안테스트 등 구조적 요소에 대한 화이트박스 테스트 시행

 

인수테스트

인수 테스트는 개발한 소프트웨어가 사용자의 요구사항을 충족하는지를 중점으로 확인하는 테스트

사용자 인수 테스트 사용자가 적절성 여부를 테스트
운영상의 인수 테스트 시스템 관리자가 수행하는 테스트 기법으로 백업테스트, 재난 복구, 정기 점검 등을 확인
계약 인수 테스트 계약상의 조건을 준수하는지 여부를 확인
규정 인수 테스트 소프트웨어가 법규, 규정 등에 맞게 개발되었는지 확인
알파 테스트 ㆍ개발자의 장소에서 사용자가 개발자 앞에서 행해지며, 오류와 사용상의 문제점을 사용자와 개발자가 함께 확인하면서 검사하는 기법(즉, 개발자 환경에서 테스트하는 기법)
베타 테스트 ㆍ다수의 사용자를 제한되지 않은 환경에서 프로그램을 사용하게 하고 오류가 발견되면 개발자에게 통보하는 방식(즉, 사용자 환경에서 테스트하는 기법)

 

 

3. 테스트 자동화 도구 유형

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

 

(1) 정적 분석 도구

  • 애플리케이션을 실행하지 않고, 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위해 사용하는 도구
구조 검사 소프트웨어의 내부 구조를 검사
데이터 분석 소프트웨어의 내부 데이터 흐름을 분석
순서 검사 소프트웨어의 실행 순서를 분석

(2) 테스트 실행 도구 

스크립트 언어를 사용하여 테스트를 실행하는 방법, 테스트 데이터와 테스트 방법 등이 포함된 스크립트를 실행한다.

(3) 성능 테스트 도구

애플리케이션의 처리량, 응답 시간 등을 인위적으로 적용한 가상의 사용자를 만들어 테스트를 수행함으로써 성능 달성 여부를 확인

(4) 테스트 통제 도구

테스트 계획 및 관리, 테스트 수행, 결함 관리 등을 수행하는 도구, 형상관리 도구, 결함 추적 도구 등이 있다. 

(5) 테스트 하네스 도구

애플리케이션의 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로 테스트를 지원하기 위해 생성된 코드와 데이터를 의미한다.

(6) 테스트 하네스 구성요소

테스트 드라이버 테스트 대상의 하위 모듈을 호출, 파라미터 전달, 수행 결과 도출
테스트 스텁 제어 모듈이 호출하는 타 모듈의 기능을 수행하는 도구, 일시적인 테스트용 모듈
테스트 슈트 모듈, 시스템에 사용되는 테스트 케이스의 집합
테스트 케이스 요구사항을 준수했는지 확인하기 위한 조건, 값, 등으로 만들어진 테스트 항목 명세서
테스트 스크립트 자동화된 테스트 실행 절차에 대한 명세서
목 오브젝트 사용자의 행위를 조건부로 입력하면 그 상황에 맞게 수행하는 객체

 

제품소프트웨어 패키징

 

(1) 제품 소프트웨어 패키징

  • 개발이 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 포장하는 과정

 

(2) 릴리즈 노트

  • 최종 사용자인 고객에게 개발 과정에서 정리된 제품의 릴리즈 정보를 제공하는 문서

 

  • 릴리즈 노트 작성 항목
작성 항목 내용
머릿말/헤더(Header) 릴리즈 노트 이름, 제품 이름, 버전번호, 릴리즈 일자, 노트 버전 등
개요 제품 및 변경에 대한 간략한 개요
목적 릴리즈 노트의 목적에 대한 간략한 개요
이슈 요약 버그의 간단한 설명 및 릴리즈 노트 추가 항목 요약
재현 항목 버그 내용 및 버그 재현 항목 작성
개선 내용 개선사항에 대한 간단한 설명
사용자 영향도 버전 변경에 따른 최종 사용자 기준의 기능 및 영향도 설명
소프트웨어 지원 영향도 버전 변경에 따른 소프트웨어 지원 프로세스 및 영향도 기술
노트 소프트웨어, 하드웨어 설치 항목, 제품, 문서를 포함한 업그레이드 항목 기술
면책 조항 회사 표준 제품과 관련한 메세지, 불법 복제 방지 등 고지사항
연락처 사용자 지원 및 문의 연락처

(3) 디지털 저작권 관리

구성 요소 내용
컨텐츠 제공자 컨텐츠를 제공하는 저작권자
컨텐츠 분배자 암호화된 컨텐츠를 제공하는 제공자
패키저 컨텐츠를 메타 데이터와 함께 배포 가능한 단위로 묶는 기능
보안 컨테이너 원본을 안전하게 유통하기 위한 전자적 보안 장치
DRM 컨트롤러 배포된 컨텐츠의 이용 권한을 통제
클리어링 하우스 소비자와 유통업자 사이에 발생하는 거래에 대해 디지털 저작권 라이선싱을 중개하고 라이선스 발급을 수행하는 장소

 

(4) 디지털 저작권 관리의 기술 요소

구성 요소 내용
암호화 컨텐츠 및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술
키 관리 컨텐츠를 암호화한 키에 대한 저장 및 분배 기술
암호화 파일 생성 암호화된 컨텐츠를 생성하기 위한 기술
식별 기술 컨텐츠에 대한 식별 체계 표현 기술
저작권 표현 라이선스의 내용 표현 기술
정책 관리 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
크랙방지 크랙에 의한 컨텐츠 사용 방지 기술
인증 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술

 

DB 데이터베이스 관련 요약

네트워크/운영체제 관련 요약

응집도와 결합도 관련 요약

소프트웨어 및 디자인 패턴 관련 요약

UI, UML, 다이어그램 관련 요약