정보처리기사/소프트웨어 개발

애플리케이션 테스트 관리 9

RangA 2023. 5. 23. 23:36

성능 분석 및 품질 평가

01. 성능 점검의 개요

1) 성능 측정 지표

  1. Throughput(처리량)
    • 정해진 시간에 처리할 수 있는 트랜잭션의 수
    • 웹 프로그램은 시간당 페이지 수로 표현함
  2. Response Time(응답 시간)
    • 입력된 후 응답 출력이 개시될 때까지의 시간
    • 웹 프로그램은 메뉴 선택 후에 해당 웹 페이지가 열릴 때까지 걸리는 시간
  3. Turnaround Time(반환 시간, 경과 시간)
    • 사용자가 요구를 입력한 시점부터 트랜잭션 처리 후 결과의 출력이 완료할 때까지 걸리는 시간
  4. Resource Usage(자원 사용률)
    • 트랜잭션을 처리하는 동안 사용하는 중앙 처리 장치 사용량, 메모리 사용량, 네트워크 사용량 등을 말함

2) 성능 분석 도구

  1. Performance/Load/Stress(성능/부하/스트레스) 점검 도구
    • 시스템의 부하나 스트레스를 통해 성능 측정 지표인 처리량, 응답 시간, 경과 시간 등을 점검함
  2. Monitoring(모니터링) 도구
    • 실행 시 자원 사용량을 확인하고 분석하는 도구
    • 성능 모니터링, 성능 저하 원인 분석, 시스템 부하량 분석, 장애 진단, 사용자 분석, 용량 산정 등의 기능을 제공하며 시스템의 안정적 운영을 지원함



02. 성능 저하 원인 분석

1) 데이터베이스 연결 및 쿼리 실행 시 발생되는 성능 저하 원인

  1. 데이터베이스 잠금(Lock)
    • 대량의 데이터 조회, 과도한 갱신, 무분별한 인덱스 생성 시 성능이 저하됨
    • 요청한 작업이 잠금의 해제 시까지 대기하거나 타임 아웃됨
  2. 불필요한 데이터베이스 패치(Fetch)
    • 필요한 데이터보다 많은 대량의 데이터 요청이 들어올 경우 성능이 저하됨
    • 결과 세트(Set)에서 마지막 위치로 커서를 옮기는 작업이 빈번한 경우 응답 시간이 저하됨
  3. 연결 누수(Leak) / 부적절한 연결 풀 크기(Pool Size)
    • 연결 누수(Leak)는 데이터베이스 연결과 관련한 JDBC 객체를 사용 후 종료하지 않을 경우 발생함
    • 부적절한 연결 풀 크기(Pool Size)는 너무 작거나 크게 설정한 경우 성능이 저하됨
  4. 불완전한 완료(Commit)
    • 트랜잭션이 확정(Commit)되지 않고 연결(Connection) 풀에 반환되는 경우 성능이 저하됨
    • 잘못 작성된 코드로 인해 불필요한 Commit이 자주 발생하는 경우 성능이 저하됨

2) 내부 로직으로 인한 성능 저하 원인

  1. 웹 애플리케이션의 인터넷 접속 불량
    • 웹 실행 시 인터넷 접속 불량으로 서버 소켓(Socket) 쓰기는 지속되나, 클라이언트에서 정상적 읽기가 수행되지 않아 성능이 저하됨
      • 소켓(Socket)
        • 포트를 사용할 수 있도록 개방하거나 닫는 역할을 함
        • 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써 보내거나 소켓으로부터 데이터를 읽어들어야 함
  2. 특정 파일의 업로드, 다운로드로 인한 성능 저하
    • 대량의 파일을 업로드하거나 다운로드할 경우 처리 시간이 길어져 성능이 저하됨
  3. 정상적으로 처리되지 않은 오류 처리로 인한 성능 저하
    • 오류 처리 로직과 실제 처리 로직 부분을 분리하지 않고 코딩하거나 예외가 발생할 경우 제대로 처리되지 않아 성능이 저하됨

3) 외부 호출로 인한 성능 저하 원인

  • 임의의 트랜잭션이 수행되는 동안 외부 호출이 장시간 수행되거나, 타임아웃이 일어나는 경우 성능이 저하됨
    • 외부 호출
      • HTTP, 소켓 통신, FTP, Email 등과 같이 인터넷을 통해서 자신이 가지고 있는 서버에 서비스를 요청하는 것

4) 잘못된 환경 설정이나 네트워크 문제로 인한 성능 저하 원인

  1. 환경 설정으로 인한 성능 저하
    • 스레스 풀, 힙 메모리의 크기를 너무 작게 설정하면 Heap Memory Full 현상 발생으로 성능이 저하됨
  2. 네트워크 장비로 인한 성능 저하
    • 라우터, 스위치 등 네트워크 관련 장비 간 데이터 전송 실패 시 성능이 저하됨
    • 전송 지연에 따른 데이터 손실 발생 시 성능이 저하되거나 장애가 발생함



03. 테스트 관리 지원 도구의 분류

1) 테스트 지원 도구

  1. 오픈소스
    • 결함 관리 도구 : Mantis, Bugzilla
    • 테스트 케이스 도구 : Testlink
    • 형상, 버전 관리 도구 : CVS, SVN, Git, Bazaar
    • 커뮤니케이션 도구 : MediaWiki, DokuWiki
    • 통합 프로젝트 지원 도구 : Trac, nForge, Gorge
  2. 상용소스
    • 버그 추적 도구 : JIRA, TPMS, Test Director, Clear Quest
    • 형상 관리 : Visual Sourcesafe, IBM Ration Clear Case
    • 커뮤니케이션 도구 : Confiuence

2) 정적 분석 지원 도구

  1. 오픈소스 : pmd, Find Bug, checkstyle, cppcheck, Corbetura
  2. 상용소스 : Coverity, IBM Rational Software, PolySpace

3) 테스트 실행 및 로깅 지원 도구

  1. 오픈소스
    • 테스트 프레임워크 : XUnit, TestNG, Fit/FitNess, Jmock, Easymock, Googlemock
    • IC(지속적인 통합) 도구 : CruiseControl, hudson, jenkinson
    • 빌드 자동화 도구 : Ant, Maven, Make
    • 실행 자동화 도구 : STAF/STAX, Selenium
  2. 상용소스
    • 버그 추적 도구 : WinRunner, Jtest, CodeScroll

4) 성능 및 모니터링 지원 도구

  1. 오픈소스 : Jmeter, OpenSTA, allmon, Eclipse, TPTP
  2. 상용소스 : E-Load, LoadRunner, Webload, Eobot