Chimy's Program
정보처리기사 실기 - 애플리케이션 테스트 관리 : 애플리케이션 성능 분석 본문
정보처리기사 실기 - 애플리케이션 테스트 관리 : 애플리케이션 성능 분석
애플리케이션 성능 점검의 개요
- 애플리케이션 성능 : 사용자의 요구 기능을 해당 애플리케이션이 최소의 자원을 사용하면 서 얼마나 빨리, 많은 기능을 수행하는가를 육안 또는 도구를 통하여 점검
① 애플리케이션의 성능을 측정하기 위한 지표
(1) 처리량(Throughput)
- 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수
- 웹 애플리케이션의 경우 시간당 페이지 수로 표현
(2) 응답 시간(Response Time)
- 사용자 입력이 끝난 후 애플리케이션의 응답 출력이 개시될 때까지의 시간
- 웹 애플리케이션의 경우 메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간
(3) 경과 시간(Turnaround Time)
- 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간
(4) 자원 사용률(Resource Usage)
- 애플리케이션이 트랜잭션 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량
② 유형별 성능 분석 도구
- 성능 분석 도구는 애플리케이션의 성능을 점검하는 도구와 시스템 자원 사용량을 모니터 링하는 도구로 분류
(1) 성능/부하/스트레스(Performance/Load/Stress) 점검 도구
- 애플리케이션의 성능 점검을 위해 가상의 사용자를 점검 도구 상에서 인위적으로 생성한 뒤 시스템의 부하나 스트레스를 통해 성능 측정 지표인 처리량, 응답 시간, 경과 시간 등을 점검하기 위한 도구
(2) 모니터링(Monitoring) 도구
- 애플리케이션 실행 시 자원 사용량을 확인하고 분석 가능한 도구
- 성능 모니터링, 성능 저하 원인 분석, 시스템 부하량 분석, 장애 진단, 사용자 분석, 용량 산정 등의 기능을 제공, 시스템의 안정적 운영을 지원하는 도구
애플리케이션 성능 저하 원인 분석
- 애플리케이션의 성능이 저하되는 원인은 크게 DB 연결 및 쿼리 실행, 내부적인 요인과 외부적인 요인, 기타 환경 설정이나 네트워크 등의 문제로 구분
① 데이터베이스 연결 및 쿼리 실행 시 발생되는 성능 저하 원인
- 일반적으로 DB에 연결하기 위해 Connection객체를 생성하거나 쿼리를 실행하는 애플리케이션 로직에서 성능 저하 또는 장애가 많이 발견
(1) 데이터베이스 락(DB Lock)
- 대량의 데이터 조회, 과도한 업데이트, 인덱스 생성 시 발생하는 현상
- 요청한 작업은 Lock의 해제 시까지 대기하거나 타임아웃
(2) 불필요한 데이터베이스 패치(DB Fetch)
- 실제 필요한 데이터보다 많은 대량의 데이터 요청이 들어올 경우 또는 결과 세트에서 마지막 위치로 커서를 옮기는 작업이 빈번한 경우 응답 시간 저하 현상이 발생
(3) 연결 누수(Connection Leak)/부적절한 커넥션 풀 크기(Connection Pool Size)
(가) 연결 누수(Connection Leak)
- DB 연결과 관련한 JDBC 객체를 사용 후 종료하지 않을 경우 발생
(나) 부적절한 커넥션 풀 크기(Connection Pool Size)
- 너무 작거나 크게 설정한 경우 성능 저하 현상이 발생
(4) 기타
- 트랜잭션이 확정(Commit)되지 않고 커넥션 풀에 반환되거나 잘못 작성된 코드로 인해 불필요한 Commit가 자주 발생하는 경우 성능이 저하될 가능성이 존재
② 내부 로직으로 인한 성능 저하 원인
(1) 웹 애플리케이션의 인터넷 접속 불량
- 웹 애플리케이션의 실행 시 인터넷 접속 불량으로 서버 소켓(Server Socket) 쓰기는 지속되나 클라이언트에서 정상적 읽기가 수행되지 않아 성능 저하 가능
(2) 특정 파일의 업로드/다운로드로 인한 성능 저하
- 대량의 파일을 업로드하거나 다운로드할 경우 처리시간이 길어져 애플리케이션의 성능이 저하 가능
(3) 정상적으로 처리되지 않은 오류 처리로 인한 성능 저하
- 오류 처리 로직과 실제 처리 로직 부분을 분리하지 않고 코딩하거나 예외가 발생할 경우에 제대로 처리되지 않아 행이 걸리는 상황이 발생하여 성능 저하 가능
③ 외부 호출(HTTP, 소켓 통신)로 인한 성능 저하 원인
- 임의의 트랜잭션이 수행되는 동안 외부 트랜잭션(외부 호출)이 장시간 수행되거나 타임아웃이 일어나는 경우 성능 저하 현상이 발생
④ 잘못된 환경 설정이나 네트워크 문제로 인한 성능 저하 원인
(1) 환경 설정으로 인한 성능 저하
- 스레드 풀(Thread Pool), 힙 메모리(Heap Memory)의 크기를 너무 작게 설정하면 Heap Memory Full 현상 발생으로 성능 저하
(2) 네트워크 장비로 인한 성능 저하
- 라우터, L4 스위치 등 네트워크 관련 장비 간 데이터 전송 실패 또는 전송 지연에 따른 데이터 손실 발생 시 애플리케이션의 성능 저하 또는 장애 발생
애플리케이션 성능 분석 수행
① 애플리케이션 성능 점검을 위한 도구의 유형 정리
- 애플리케이션 성능 점검을 위한 성능 테스트 도구 및 시스템 모니터링 도구의 유형 파악하고 그 특징을 간략하게 정리
(1) 성능 테스트 도구의 유형에 대해 파악
- 성능 테스트 도구의 도구 명, 도구 설명, 지원 환경, 지원 홈페이지 등의 정보를 파악하고 정리
(2) 시스템 모니터링 도구의 유형에 대해 파악
- 시스템 모니터링 도구의 도구 명, 도구 설명, 지원 환경, 개발 도구 지원 여부, 지원 홈페이지 등의 정보를 파악하고 확인
② 애플리케이션 성능 점검 계획서 작성
(1) 성능 점검 계획서에 포함될 항목에 대해 검토
(가) 애플리케이션 성능을 측정하기 위한 성능 점검 계획서의 각 항목에 대해 정의
- 해당 시스템의 성능 점검을 수행하는 목적 및 성능 점검 시 활용할 용어에 대해 정의
(나) 성능 점검 수행 전략 수립
(a) 대상 시스템의 구성도 파악
- 전체 시스템 중 성능을 점검해야 할 시스템을 파악하여 대상 구성도 작성
(b) 대상 서버의 정보 파악
- 대상 서버의 서버 명, IP주소, 설치된 운영 체제, CPU, 메모리, 설치된 솔루션 정보를 파악하여 작성
(c) 성능 점검 수행 도구 결정
- 성능 점검을 위한 오픈소스 또는 상업용 수행 도구를 결정하여 작성
(d) 성능 점검 환경 구성
- 성능 점검을 위한 점검 팀을 확정하고 부하 발생 장비, 부하 발생 환경에 대하여 확인
(다) 성능 점검 수행 일정 및 절차에 대해 확정
(a) 성능 점검 수행 일정에 대해 확정
- 계획 수립, 설계 및 개발, 테스트 환경 구축, 테스트 수행, 결과 분석, 보고서 작성 등에 대한 성능 점검 수행 일정에 대해 확정
(b) 성능 점검 수행 절차에 대해 확정
- 테스트 계획 수립, 테스트 시나리오 작성, 테스트 케이스 작성, 워크로드(Workload) 설계, 레코딩, 테스트 수행, 결과 분석 등 성능 점검 수행 절차 확정
(c) 성능 개선 절차에 대해 확정
- 기본 성능 자료를 도출하고 성능 테스트 결과를 분석하고 개선안을 적용하고 검증하여 성능 개선을 검증하는 절차에 대해 확정
(d) 성능 점검 역할별 수행 인력 확정
- 성능 팀, 공통 테스트 팀, 업무 개발 팀의 팀별 수행 인력 확정
(라) 성능 점검 수행 방안에 대해 작성
(a) 각 시스템의 단위 성능 테스트 방법에 대해 결정
- 성능 테스트의 경우 가상 인원이 몇 명인지, Think Time(서버로부터 응답 후, 다음 동작 때까지 대기하는 시간)의 경우 몇 초로 테스트할 것인지를 결정
(b) 시스템 성능 목표 설정
- 각 시스템별 테스트 유형과 대상 업무, 목표 부하, 테스트 시간 등을 확정하고 시스템의 성능 목표 설정
(c) 모니터링 및 성능 지표 수집 방안에 대해 결정
- 측정 대상을 구분하고 측정 목적, 시스템 명, 부하량, 배치 작업 소요 시간, SQL 등 의 모니터링 방안, 모니터링 측정 항목에 대해 설정
(d) 성능 테스트 시나리오 작성
- Ramp-Up Model, Ramp-Down Model, Think Time Model 등 다양한 성능 테스트 모델별 성능 테스트 시나리오를 작성
(2) 성능 테스트 계획서 작성
- 성능 점검 개요, 성능 점검 수행 전략, 성능 점검 수행 일정 및 절차, 성능 점검 수행 방안 등 결정된 항목을 포함하여 성능 테스트 계획서 작성
③ 애플리케이션 성능 테스트 수행
- 애플리케이션 성능 점검 목표에 따라 성능 테스트 수행
(1) 애플리케이션 성능 테스트 케이스 작성
- 애플리케이션 성능 측정을 위한 테스트 케이스를 아래 항목을 포함하여 작성
(가) 테스트 목표 및 목표 값을 설정하여 작성
- 테스트 상황 및 사용자 수, 호출 간격, TPS(Transaction Per Second), 응답 시간 등 목표 값을 설정
(나) 측정 항목을 기술하여 작성
- TPS, 응답 시간, 시스템 사용률, 거래 성공 비율 등 측정 항목에 대해 기술
(다) 테스트 시나리오 작성
- 성능 테스트에 대한 구체적인 방법 및 절차에 대해 작성
(라) 사전 확인 사항에 대해 작성
- 테스트 시작 시간, 종료 시간, 스크립트 수행 횟수, 부하 발생기 상태 확인, 데이터베이스 상태 확인, 투입인력 확인, 테스트 환경 설정, 테스트 데이터 등에 대해 작성
(2) 애플리케이션 성능 테스트 수행
- 작성된 테스트 케이스 및 테스트 시나리오에 따라 애플리케이션 성능 테스트 수행
(가) 선정된 성능 테스트 도구 설치
- 대상 시스템에 선정된 테스트 도구 설치
(나) 테스트 도구의 테스트 환경 설정
- 해당 시스템의 운영 체제, DBMS 버전, 네트워크 상태 등에 대해 설정
(다) 성능 테스트를 위한 시나리오를 생성
- 테스트 목적에 맞는 Load Type, 파라미터, 사용자 수, Ramp-up load, Periodic load, 수 행 시간, 모티터링 결과 저장 파일 등의 정보 설정
(라) 시나리오를 실행하면서 테스트 상황 모니터링
- 성능 테스트를 수행하면서 테스트 상황을 도구를 통해 모니터링
④ 성능 테스트 결과 분석을 통해 성능 저하 요인 발견
- 애플리케이션의 성능 테스트 결과를 분석하여 성능 저하 요인 발견
(1) 애플리케이션의 성능 테스트 결과 분석
- 애플리케이션 성능 목표 대비 결과 분석
- 사용자 수 증가에 따른 트랜잭션 성공 비율에 대해 추이 분석
- TPS, 응답 시간에 대해 분석
- 시스템 자원 사용률에 대해 분석, CPU 사용률, 메모리 사용률, DB 사용률에 대해 분석
(2) 애플리케이션의 성능 저하 요인을 발견하고 분석
- 응답 시간이 목표 이하로 발생되는 애플리케이션의 성능 저하 요인 분석
(가) 애플리케이션 성능 부하 테스트 분석 결과에서 성능 저하 요인 발견
- 각 애플리케이션별 가상 사용자, TPS, 목표 TPS, 응답 시간 평균, 응답 시간 90% 등의 데이터에서 목표를 달성하지 못한 애플리케이션을 발견하고 저하 요인 분석
(나) 응답 시간 측정 및 분석 결과에서 성능 저하 요인 발견
- 대상 업무별 응답 시간 평균, 응답 시간 90% 측정 결과 성능 목표 미달성 애플리케이 션의 성능 저하 요인 분석
(다) 장애 또는 성능 저하 요인에 대해 원인 분석
- 시스템 장애, 응답 시간 저하 등의 원인에 대해 분석
'BASE' 카테고리의 다른 글
정보처리기사 실기 - SQL 응용 : 프로시저 및 호출문 작성 (0) | 2020.08.01 |
---|---|
정보처리기사 실기 - 애플리케이션 테스트 관리 : 애플리케이션 성능 개선 (0) | 2020.07.31 |
정보처리기사 실기 - 애플리케이션 테스트 관리 : 애플리케이션 개선 조치사항 작성 (0) | 2020.07.29 |
정보처리기사 실기 - 애플리케이션 테스트 관리 : 애플리케이션 테스트 결과 분석 (0) | 2020.07.25 |
정보처리기사 실기 - 애플리케이션 테스트 관리 : 애플리케이션 통합 테스트 수행 (0) | 2020.07.24 |