상세 컨텐츠

본문 제목

정보처리기사 필기시험 준비 [18]

정보처리기사/정보처리기사_필기

by JORDON 2023. 2. 12. 23:56

본문

반응형

소프트웨어개발 - 어플리케이션테스트관리 / 어플리케이션 통합테스트 / 어플리케이션 성능 개선

어플리케이션 통합테스트

  • 결함관리
    • 테스트 결함 관리란 각 단계별 테스트 수행 후 발생한 결함의 재발 방지를 위해 유사 결함 발견시 시간단축을 위해 결함을 추적하고 관리하는 활동이다.
  • 결함관리 프로세스
    • 에러발견 -> 에러등록 -> 에러분석 -> 결함확정 -> 결함할당 -> 결함조치 -> 결함조치 검토 및 승인
  • 결함의 식별
    • 기획시 유입되는 결함
      • 사용자요구사항의 표준 미준수로 인해 테스트 불가능과 요구사항 불명확,불완전, 불일치
    • 설계시 유입되는 결함
      • 기획단계에서 유입되는 결함 또는 설계 표준미준수로 인해 테스트 불가능과 기능설계 불명확, 불완전, 불일치
    • 코딩시 유입되는 결함
      • 설계단계에서 유입된 결함 또는 코딩표준 미준수로 인해 기능 불일치 및 불완전, 데이터결함, 인터페이스결함
    • 테스트 부족으로 유입되는 결함 
      • 테스트 수행시 테스트 완료 기준의 미준수와 의사소틍의 부족, 코딩의 실수

결함 추이 분석

  • 테스트 완료 후 발견된 결함의 결함 관리 측정 지표의 속성 값들을 분석하고 향후 어플리케이션의 어떤 모듈 또는 컴포넌트에서 결함이 발생할지 추정하는 작업
  • 분석유형
    • 결함의 분포분석
    • 결함추세분석
    • 결함에이징분석
  • 결함관리 측정지표
    • 결함분포
      • 각 어플리케이션 모듈 또는 컴포넌트들의 특정 속성에 해당하는 결함의 수를 측정하여 결함의 분포를 분석
    • 결함추세
      • 테스트 진행 시간의 흐름에 따른 결함의 수를 측정하여 결함 추세를 분석
    • 결함에이징
      • 등록된 결함에 대해 특정한 결함 상태의지속 시간을 측정하여 분석

테스트 커버리지(Test Coverage)

  • 주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준
  • 테스트의 정확성과 신뢰성을 향상시키는 역활
  • 기능기반 커버리지
    • 테스트 대상 어플리케이션의전체 기능을 모수로 설정하고 실제 테스트가 수행된 기능의 수를 측정
    • 100% 달성을 목표로 하며 일반적으로 UI가 많은 시스템의 경우 화면 수를 모수로 사용할 수 있다.
  • 라인커버리지(Line Coverage)
    • 어플리케이션 전체 소스 코드의 Line 수를 모수로 테스트 시나리오가 수행한 소스코드의 Line의 수를 측정하는 방법
    • 단위테스트에서는 이 라인 커버리지를 척도로 삼기도 함
  • 코드커버리지(Code Coverage)
    • 소프트웨어 테스트 충분성 지표 중 하나로 소스 코드의 구문, 조건, 결정 등의 코드 자체가 얼마나 테스트 되었는지 측정하는 방법
    • 구문커버리지(Statement Coverage)
    • 조건커버리지(Condition Coverage)
    • 결정커버리지(Decision Coverage)
    • 변형조건 / 결정 (Modified Condition / Decision)커버리지
      • 조건과 결정을 복합적으로 고려한 측정방법
      • 결정 포인트 내의 다른 개별적은 조건식 결과에 상관없이 독립적으로 전체 조건식의 결과에 영향을 주는 테스트 커버리지

테스트 결함 식별 및 관리

  • 결함 심각도별 분류
    • 어플리케이션에 발생한 결함이 어떤영향을 미치며 그 결함이 얼마나 치명적인지 나타내는 척도
    • 치명적결함, 주요결함, 보통결함, 경미한결함, 단순결함
  • 결함 심각도 관리
    • 결함관리의 정확성과 신뢰성 향상을 위해 결함의 심각도의 각 단계별 표준호된 용어를 사용하여 정의
    • 프로젝트 및 조적차원에서 결함을 관리
  • 결함 우선순위
    • 결함 심각도와 결함 우선순위
      • 결함 우선 순위는 발생한 결함이 얼마나 빠르게 처리되어야 하는지를 결정하는 척도
      • 결함 심각도가 높아도 우선순위가 반드시 높은 것은 아니며 어플리케이션의 특성에 따라 우선순위가 결정
    • 결함 우선순위 표현 사례
      • 결정적, 높음, 보통, 낮음 또는 즉시해결, 주의요망, 대기, 개선권고 등으로 분류
  • 결함관리 항목
    • 테스트수행 후 발견된 결함은 결함관리시스템에 등록하여 관리해야하며 등록시 다음 항목들은 필수로 등록한다.
    • 결함내용, 결함ID, 결함유형, 발견일, 심각도, 우선순위, 시정조치예정일, 수정담당자, 재테스트 결과, 종료일

테스트 자동화 도구

  • 테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현함으로써 테스트 시간 단축과 인력투입 비용을 최소화한다.
  • 쉽고 효율적인 테스트를 수행할 수 있는 방법
  • 테스트도구의 장점
    • 반복되는 테스트 데이터 재입력 작업이 자동화
    • 테스트결과값에 대한 객관적인 평가기준 제공
    • 테스트결과의 통계 작업과 그래프 등 다양한 표시 형태 제공
    • UI가 없는 서비스의 경우에도 정밀한 테스트 가능
  • 테스트도구의 단점
    • 도구 도입 후 도구사용에 대한 교육 및 학습 필요
    • 단계별 시간과 비용, 노력 필요
    • 상용 도구의 경우 고가, 유지 관리 비용이 높아 추가 투자가 필요
  • 테스트 자동화 도구 유형
    • 정적분석도구
      • 어플리케이션을 실행하지 않고 분석
      • 소스코드에 대한 코딩 표준, 코딩스타일, 코드복잡도 및 남은 결함을 발견하기 위해 사용
      • 테스트를 수행하는 사람이 작성된 코드에 대한 이해를 바탕으로 도구를 이용해서 분석
    • 테스트실행도구
      • 테스트를 위해 작성된 스크립트를 실행
      • 작성된 스크립트는 각 스크립트마다 특정 데이터와 테스트 수행방법을 포함
      • 데이터주도 접근방식
        • 테스트 데이터를 스프레드시트에 저장하고 데이터를 읽고 실행할 수 있도록 한다.
      • 키워드주도 접근방식
        • 테스트를 수행할 동작을 나타내는 키워드와 테스트 데이터를 스프레드시트에 저장
    • 성능테스트 도구(Performance Test Tools) 
      • 어플리케이션의 처리량, 응답시간, 경과시간, 자원 사용률에 대해 가상의 사용자를 생성하고 테스트를 수행함으로써 성능 목표를 달성하는지 확인하는 도구 
    • 테스트통제 도구(Test Control Tools)
      • 테스트통제 도구에는 테스트 계획 및 관리를 위한 테스트 관리도구와 테스트 수행에 필요한 데이터와 도구를 관리하는 형상관리도구, 테스트에서 발생한 결함에 대해 관리하거나 협업을 지원하기 위한 결함 추적관리도구 등이 있다.
      • 조직의 요구사항에 최적화된 형태의 정보를 생성관리하기위해 스프레드시트 등다른 도구들과 연계하여 사용할 수 있다.
    • 테스트장치(Test Harness)
      • 어플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로 테스트를 지원하기 위한 코드와 데이터를 말하며 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성한다.
      • 테스트드라이버(Test Driver) - 테스트 대상 하위의 모듈을호출하여 파라미터를 전달하고 모듈 테스트 수행 결과를 도출하는 상향식 테스트에 필요
      • 테스트스텁(Test Stub)  - 제어모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로 하향식 테스트에 필요
      • 테스트슈트(Test Suites) - 테스트 대상 컴포넌트나 모듈의 시스템에 사용되는 테스트 케이스의 집합
      • 테스트케이스(Test Case) - 입력값, 실행조건, 기대결과 등의 집합
      • 테스트스크립트(Test Script) - 자동화된 테스트 실행절차에 대한 명세
      • 목오브젝트(Mock Object) - 사용자의 행위를 조건부로 사전에 입력해 두면 그 상황에 예정된 행위를 수행하는 객체

통합테스트

  • 어플리케이션 통합 테스트는 소프트웨어 각 모듈간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법이다.
  • 단위테스트가 끝난 모듈 또는 컴포넌트 단위의 프로그램이 설계 단계에서 제시한 어플리케이션과 동일한 구조와 기능으로 구현된 것인지를 확인하는 것이다.
  • 통합테스트 수행 방법의 분류
    • 비점증적인 방식 - 모든 컴포넌트를 사전에 통합하여 전체 프로그램을 한꺼번에 테스트 하는 것
    • 점증적인 방식 - 상향식 통합, 하향식통합

하향식통합

  • 메인 제어모듈로부터 아래방향으로 제어의 경로를 따라 이동하면서 하향식으로 통합하면서 테스트를 진행하며 메인 제어 모듈에 통합되는 하위모듈과 최하위 모듈은 길이우선 또는 너비우선 방식으로 통합된다.

상향식통합

  • 어플리케이션 구조에서 최하위 레벨 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동하며서 구축과 테스트를 시작한다.

회귀테스팅(Regression Testing)

  • 통합 테스트가 완료된 후 변경된 모듈이나 컴포넌트가 있다면 새로운 오류 여부를 확인하기 위해 회귀테스트를 수행한다.
  • 통합테스트 과정에서 오류를 제거하거나 수정한 프로그램이 새로운 형태의 오작동이나 오류를 일으킬수 있다.
  • 회귀테스트는 모듈이나 컴포넌트의 변화로 인해 의도하지 않은 오류가 생기지 않았음을 보증하기 위해 반복 테스트하는 것을 말한다.
  • 회귀테스트 선정방법
    • 대표적인 샘플을 도출
    • 변경에 의한 영양도가 가장 높은 어플리케이션 기능에 집중한 추가적인 테스트
    • 실제 수정이 발생한 모듈 또는 컴포넌트에서부터 시행하는 테스트케이스를 도출한다.

소스코드 품질분석 도구

  • 소스코드에 대한 코딩스타일 및 설정된 코딩표준, 코드의 복잡도, 코드내에 존재하는 메모리 누수현황, 스프레드의 결함 등을 발견하기 위하여 사용하는 분석 도구
  • 정적분석도구
    • 작성된 소스 코드를 실행시키지 않고 코드 자체만으로 코딩 표준 준수여부, 코딩 스타일 적정여부, 잔존 결함여부를 확인하는 코드분석도구
  • 동적분석도구
    • 어플리케이션을 실행하여 코드에 존재하는 메모리 누수 현황을 발견 및 발생한 쓰레드의 결함들을 분석

 

 

 

반응형

관련글 더보기

댓글 영역