[정보처리기사] 실기 정리 - 7과목 (2)

peach·2020년 10월 14일
3

정보처리기사

목록 보기
20/34
post-thumbnail

🧀 통합 테스트


1. 개념

소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법


2. 상향식 통합 테스트

(1) 개념

애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동하면서 구축과 테스트를 수행

(2) 장단점

  • 장점
    • 장애 위치 파악 쉬움
    • 모든 모듈 개발을 위한 시간 낭비가 불필요
  • 단점
    • 이른 프로토타입 어려움
    • 중요 모듈들이 마지막에 테스트될 가능성이 높음

(3) 수행 단계

  • 하위 레벨의 모듈 또는 컴포넌트들이 하위 모듈의 기능을 수행하는 클러스터로 결합
  • 상위 모듈에서 데이터의 입력과 출력을 확인하기 위한 더미 모듈인 드라이버 작성
  • 각 통합된 클러스터 단위 테스트
  • 테스트가 완료되면 각 클러스터들은 프로그램의 위쪽으로 결합되며, 드라이버는 실제 모듈 또는 컴포넌트로 대체

3. 하향식 통합 테스트

(1) 개념

메인 제어 모듈로부터 아래 방향으로 제어의 경로를 따라 이동하며 하향식으로 통합하면서 테스트를 진행

(2) 장단점

  • 장점
    • 장애 위치 파악이 쉬움
    • 이른 프로토타입 가능
    • 중요 모듈을 먼저 테스트 가능
  • 단점
    • 많은 스텁이 필요
    • 하위 모듈들의 불충분한 테스트 수행

(3) 수행 단계

  • 메인 제어 모듈은 작성된 프로그램을 사용하고, 아직 작성되지 않은 하위 모듈을 제어함
  • 위에서 아래로 내려오기 때문에 검사 초기에 시스템의 구조가 파악되어야 함
  • 모듈 및 모든 하위 컴포넌트를 대신하여 더미 모듈인 스텁 개발
  • 깊이 우선 방식이나 너비 우선 방식에 따라 하위 모듈인 스텁이 한 번에 하나씩 실제 모듈로 대체
  • 각 모듈 또는 컴포넌트를 통합하면서 테스트 수행
  • 테스트가 완료되면 스텁이 실제 모듈 또는 컴포넌트로 작성

4. 빅뱅 테스트

(1) 개념

모든 모듈을 동시에 통합 후 수행

(2) 장단점

  • 장점
    • 단시간 테스트 가능
    • 작은 시스템에 유리
  • 단점
    • 장애 위치 파악이 어려움
    • 모든 모듈이 개발되어야 테스트 가능



🧀 테스트 자동화 도구


1. 개념

테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현함으로써 테스트 시간 단축과 인력 투입 비용을 최소화하고 쉽고 효율적인 테스트를 수행할 수 있는 방법


2. 장단점

(1) 장점

  • 반복되는 테스트 데이터 재입력 작업의 자동화
  • 사용자 요구 기능의 일관성 검증에 유리
  • 테스트 결괏값에 대한 객관적인 평가 기준 제공
  • 테스트 결과의 통계 작업과 그래프 등 다양한 표시 형태 제공
  • UI가 없는 서비스의 경우에도 정밀한 테스트 가능

(2) 단점

  • 도구 도입 후 도구 사용 방법에 대한 교육 및 학습 필요
  • 도구를 프로세스 단계별로 적용하기 위한 시간, 비용, 노력이 필요
  • 상용 도구의 경우 도구 및 유지 관리 비용이 높아 추가 투자가 필요

3. 유형

(1) 정적 분석 도구 (Static Analysis Tools)

  • 만들어진 애플리케이션을 실행하지 않고 분석하는 도구
  • 소스코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위해 사용

(2) 테스트 실행 도구 (Test Execution Tools)

  • 테스트를 위해 작성된 스크립트를 실행하고, 작성된 스크립트는 각각 특정 데이터와 테스트 수행 방법을 포함함

    • 데이터 주도 접근 방식
      테스트 데이터를 스프레드시트에 저장

    • 키워드 주도 접근 방식
      테스트를 수행할 동작을 나타내는 키워드와 테스트 데이터를 스프레드시트에 저장

(3) 성능 테스트 도구 (Performance Test Tools)

  • 애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률에 대해 가상의 사용자를 생성하고 테스트를 수행함으로써 성능 목표를 달성하였는지 확인하는 도구

(4) 테스트 통제 도구 (Test Control Tools)

  • 테스트 관리 도구 : 테스트 계획 및 관리
  • 형상 관리 도구 : 테스트 수행에 필요한 데이터와 도구를 관리
  • 결함 추적 및 관리 도구 : 테스트에서 발생한 결함에 대해 관리하거나 협업을 지원

4. 테스트 하네스

(1) 개념

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

(2) 구성 요소

  • 테스트 드라이버
    테스트 대상 하위 모듈을 호출하고, 파라미터를 전달하고, 모듈 테스트 수행 후의 결과를 도출하는 상향식 테스트에 필요

  • 테스트 스텁
    제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로 하향식 테스트에 필요

  • 테스트 슈트
    테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합

  • 테스트 케이스
    입력값, 실행 조건, 기대 결과 등의 집합

  • 테스트 스크립트
    자동화된 테스트 실행 절차에 대한 명세

  • 목 오브젝트
    사용자의 행위를 조건부로 사전에 입력해두면 그 상황에 예정된 행위를 수행하는 객체


5. 테스트 단계별 도구

(1) 테스트 계획

  • 요구 사항 관리 도구

(2) 테스트 분석 및 설계

  • 테스트 케이스 생성 도구

(3) 테스트 수행

  • 테스트 자동화 도구
  • 정적 분석 도구
  • 동적 분석 도구
  • 성능 테스트 도구
  • 모니터링 도구

(4) 테스트 관리

  • 커버리지 측정
  • 형상 관리
  • 결함 추적 및 관리



🧀 테스트 결과 분석


1. 소프트웨어 결함

(1) 에러/오류

일반적으로 사람에 의해 생성된 실수

(2) 결함/결점/버그

에러/오류가 원인이 되어 소프트웨어 제품에 포함되어 있는 결함

(3) 실패/문제

소프트웨어 제품에 포함된 결함이 실행될 때 발생하는 현상


2. 테스트 리포팅

(1) 테스트 결과 정리

모든 테스트가 완료되면 테스트 계획부터 테스트 결과까지 모두 포함된 문서를 작성함

(2) 테스트 요약 문서

테스트 계획, 소모 비용, 테스트 결과로 판단 가능한 대상 소프트웨어의 품질 상태를 포함한 문서를 작성함

(3) 품질 상태

정량화된 품질 지표인 테스트 성공률, 테스트 커버리지, 발생한 결함 수와 결함의 중요도 등이 포함됨

(4) 테스트 결과서

결함과 관련한 사항을 중점적으로 기록하며 결함의 ㄴ용 및 자원 정보, 결함의 재현 순서를 상세하게 기록함

(5) 테스트 실행 절차 및 평가

단계별 테스트 종료 시 테스트 실행 절차를 리뷰하고 결과에 대한 평가를 수행하고, 그 결과에 따라 실행 절차를 최적화하여 다음 테스트에 적용


3. 결함 관리

(1) 개념

각 단계별 테스트 수행 후 발생한 결함의 재발 방지와 유사 결함 발견 시 처리 시간을 단축하기 위해 결함을 추적하고 관리하는 활동

(2) 활동 기준

  • 단위 테스트 : 기준 없음
  • 통합 테스트 : 설계 문서 결함 발견, 통합 테스트 평가 완료
  • 시스템 테스트 : 요구 사항 명세서 결함 발견, 시스템 테스트 평가 완료
  • 운영 테스트 : 요구 사항 명세서 결함 발견, 운영 테스트 평가 완료
  • 입력물 : 테스트 활동 로그, 결함 관리 대장
  • 출력물 : 테스트 활동 로그, 결함 관리 대장, 테스트 결과 보고서
  • 종료 조건 : 심각도 상위 수준의 결함 해결 여부 확인

4. 결함 추이 분석

(1) 개념

테스트 완료 후 발견된 결함의 결함 관리 측정 지표의 속성값들을 분석하고, 향후 발생할 결함을 추정하는 작업

(2) 유형

  • 결함 분포 분석
    각 애플리케이션 모듈 또는 컴포넌트의 특정 속성에 해당하는 결함의 수를 측정

  • 결함 추세 분석
    테스트 진행 시간의 흐름에 따른 결함의 수를 측정

  • 결함 에이징 분석
    등록된 결함에 대해 특정 결함 상태의 지속 시간을 측정



🧀 테스트 커버리지


1. 개념

주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준으로, 테스트의 정확성과 신뢰성을 향상시키는 역할


2. 유형

(1) 기능 기반 커버리지

애플리케이션의 전체 기능을 모수로 설정하고, 실제 테스트가 수행된 기능의 수를 측정하는 방법

(2) 라인 커버리지

애플리케이션 전체 소스 코드의 라인 수를 모수로 설정하고, 테스트 시나리오가 수행한 소스 코드 라인 수를 측정하는 방법

(3) 코드 커버리지

소스 코드의 구문, 조건, 결정 등의 구조 코드 자체가 얼마나 테스트 되었는지 측정하는 방법

  • 구문 커버리지
    프로그램 내 모든 명령문을 적어도 한 번 수행하는 커버리지
    ex. a = a + 5;

  • 결정 커버리지
    프로그램 내 전체 결정문이 적어도 한 번은 참과 거짓의 결과를 수행하는 커버리지
    ex. x >= -2 and y < 4

  • 조건 커버리지
    결정 명령문 내 각 조건이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 커버리지
    ex. x >= -2 y < 4

  • 조건/결정 커버리지
    전체 조건식뿐만 아니라 개별 조건식도 한 번은 참과 거짓의 결과가 되도록 수행하는 커버리지
    ex. x >= -2 and y < 4 x >= -2 y < 4

  • 변경 조건/결정 커버리지
    개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 커버리지

  • 다중 조건 커버리지
    결정 조건 내 모든 개발 조건식의 모든 가능한 조합을 100% 보장하는 커버리지



🧀 결함의 식별 및 관리


1. 결함 유입 종류

(1) 기획 시 유입

사용자 요구 사항의 표준 미준수로 인해 테스트 불가능, 요구 사항 불명확/불완전/불일치, 기타 결함 발생

(2) 설계 시 유입

기획 단계에 유입된 결함 또는 설계 표준 미준수로 인해 테스트 불가능, 기능 설계 불명확/불완전/불일치, 기타 결함 발생

(3) 코딩 시 유입

설계 단계에 유입된 결함 또는 코딩 표준 미준수로 인해 기능의 불일치/불완전, 데이터 결함, 인터페이스 결함, 기타 결함 발생

(4) 테스트 부족으로 유입

테스트 수행 시 테스트 완료 기준의 미준수, 테스트 팀과 개발 팀의 의사소통 부족, 개발자의 코딩 실수로 인한 결함 발생


2. 결함 심각도

(1) 치명적(Critical) 결함

기능이나 제품의 테스트를 완전히 방해하거나 못하게 하는 결함

(2) 주요(Major) 결함

기능이 기대와 많이 다르게 동작하거나 그 기능이 해야 하는 것을 못하는 결함

(3) 보통(Normal) 결함

제품이나 프로그램이 특정 기준을 충족하지 못하거나 전체에 영향을 주지 않는 일부 기능이 부자연스러운 결함

(4) 경미한(Minor) 결함

사용상의 불편함을 유발하는 결함

(5) 단순(Simple) 결함

사소한 버그라고 하며 기능에는 영향이 없지만 수정되어야 하는 결함


3. 결함 우선순위

(1) 결정적(Critical)

전체 기능이 동작하지 않고 어떤 테스트도 더 이상 진행할 수 없으므로 24시간 내에 즉시 수정해야 함

(2) 높음(High)

이 결함으로 인해 다른 기능을 사용할 수 없을 때

(3) 보통(Midium)

실패가 발생했을 때 올바른 에러 메시지가 출력되지 않는 것과 같은 에러

(4) 낮음(Low)

디자인에서 일부 강화하거나 사용자 경험을 향상시키기 위한 작은 기능 구현에 대한 요청

4. 결함 관리 항목

  • 결함 내용
  • 결함 ID
  • 결함 유형
  • 발견일
  • 심각도
  • 우선순위
  • 시정 조치 예정일
  • 수정 담당자
  • 재 테스트 결과
  • 종료일




🐭 참고문헌

  • NCS 정보처리기술사 연구회. (2020). 수제비 정보처리기사 실기 (2판). 건기원.

0개의 댓글