본문 바로가기

정보처리기사

[정보처리기사] 실기 노트 - 애플리케이션 테스트 관리 2

  1. 애플리케이션 성능 측정 지표 및 분석 도구
    1. 테스트 케이스 (Test Case): 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서
    2. 테스트 시나리오 (Test Scenario): 테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스를 묶은 집합
    3. 테스트 오라클 (Test Oracle): 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값을 대입하여 비교하는 기법 및 활동을 말함
    4. 테스트 자동화 도구
      1. 테스트 자동화: 사람이 반복적으로 수행하던 테스트 절차를 스크립트 형태로 구현하는 자동화 도구를 적용함으로써 쉽고 효율적으로 테스트를 수행할 수 있도록 한 것
      2. 정적 분석 도구 (Static Analysis Tools): 프로그램을 실행하지 않고 분석하는 도구
      3. 테스트 실행 도구 (Test Execution Tools): 스크립트 언어를 사용하여 테스트르 실행하는 도구
      4. 성능 테스트 도구 (Performance Test Tools): 애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률 등을 인위적으로 적용한 가상의 사용자를 만들어 테스트를 수행함으로써 성능의 목표 달성 여부를 확인하는 도구
      5. 테스트 통제 도구 (Test Control Tools): 테스트 계획 및 관리, 테스트 수행, 결함 관리 등을 수행하는 도구
      6. 테스트 하네스 도구 (Test Harness Tools): 테스트가 실행될 환경을 시뮬레이션 하여 컴포넌트 및 모듈이 정상적으로 테스트 되도록 하는 도구
      7. 테스트 하네스의 구성 요소: 테스트 드라이버 (Test Driver), 테스트 스텁 (Test Stub), 테스트 슈트 (Test Suites), 테스트 케이스 (Test Case), 테스트 스크립트 (Test Script), 목 오브젝트 (Mock Object)
      8. 테스트 수행 단계별 테스트 자동화 도구: 요구사항 관리, 테스트 케이스 생성, 테스트 자동화, 정적 분석, 동적 분석, 성능 테스트, 모니터링, 커버리지 분석, 형상 관리, 결함 추적 / 관리
    5. 결함관리
      1. 결함 (Fault): 오류 발생, 작동 실패 등과 같이 소프트웨어가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생되는 것을 의미함
      2. 결함 관리 프로세스: 결함 관리 계획 -> 결함기록 -> 결함 검토 -> 결함 수정 -> 결함 재확인 -> 결함 상태 추적 및 모니터링 활동 -> 최종 결함 분석 및 보고서 작성
      3. 결함 상태 추적: 테스트에서 발견된 결함은 지속적으로 상태 변화를 추적하고 관리해야 함
      4. 결함 추적 순서: 결함 등록 -> 결함 검토 -> 결함 할당 -> 결함 수정 -> 결함 조치 보류 -> 결함 종료 -> 결함 해제
      5. 결함 분류: 시스템 결함, 기능 결함, GUI 결함, 문서 결함
      6. 결함 심각도: 애플리케이션에 발생한 결함이 전체 시스템에 미치는 치명도를 나타내는 척도
      7. 결함 우선순위: 발견된 결함 처리에 신속성을 나타내는 척도
      8. 결함 관리 도구: Mantis, Trac, Redmine, Bugzilla
  2. 애플리케이션 성능 개선을 위한 소스 코드 최적화 개념과 소스코드 분석도구
    1. 애플리케이션 성능 분석
      1. 애플리케이션 성능
        1. 애플리케이션 성능: 최소한의 자원을 사용하여 최대한 많은 기능을 신속하게 처리하는 정도를 나타냄
        2. 애플리케이션 성능 측정 지표: 처리량 (Throughput), 응답 시간 (Response Time), 경과 시간 (Turn Around Time), 자원 사용률 (Resource Usage)
      2. 성능 테스트 도구: 애플리케이션의 성능을 테스트하기 위해 애플리케이션에 부하나 스트레스를 가하면서 애플리케이션의 성능 측정 지표를 점검하는 도구
      3. 시스템 모니터링 (Monitoring) 도구: 애플리케이션이 실행되었을 때 시스템 자원의 사용량을 확인하고 분석하는 도구
    2. 복잡도
      1. 복잡도 (Complexity): 시스템이나 시스템 구성 요소 또는 소프트웨어의 복잡한 정도를 나타내는 말
      2. 시간 복잡도: 알고리즘을 수행하기 위해 프로세스가 수행하는 연산 횟수를 수치화한 것을 의미
      3. 빅오 표기법으로 표현한 최악의 알고리지므 시간 복잡도: O(1), O(log2n), O(n), O(nlog2n), O(n2), O(2n)
      4. 순환 복잡도 (Cylomatic Complexity): 한 프로그램의 논리적인 복잡도를 측정하기 위한 소프트웨어 척도
    3. 애플리케이션 성능 개선
      1. 소스 코드 최적화: 나쁜 코드 (Bad Code)를 배제하고, 클린 코드 (Clean Code)로 작성하는 것
      2. 클린 코드 작성 원칙: 가독성, 단순성, 의존성 배제, 중복성 최소화, 추상화
      3. 소스 코드 최적화 유형: 클래스 분할 배치, 느슨한 결함 (Loosely Coupled)
      4. 소스 코드 품질 분석 도구: 소스 코드의 코딩 스타일, 코드에 설정된 코딩표준, 코드의 복잡도, 코드에 존재하는 메모리 누수 현상, 스레드 결함 등을 발견하기 위해 사용하는 분석 도구
      5. 소스 코드 품질 분석 도구의 종류: pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura, Avalanche, Valgrind