정보처리기사/소프트웨어 개발
애플리케이션 테스트 관리 9
RangA
2023. 5. 23. 23:36
성능 분석 및 품질 평가
01. 성능 점검의 개요
1) 성능 측정 지표
- Throughput(처리량)
- 정해진 시간에 처리할 수 있는 트랜잭션의 수
- 웹 프로그램은 시간당 페이지 수로 표현함
- Response Time(응답 시간)
- 입력된 후 응답 출력이 개시될 때까지의 시간
- 웹 프로그램은 메뉴 선택 후에 해당 웹 페이지가 열릴 때까지 걸리는 시간
- Turnaround Time(반환 시간, 경과 시간)
- 사용자가 요구를 입력한 시점부터 트랜잭션 처리 후 결과의 출력이 완료할 때까지 걸리는 시간
- Resource Usage(자원 사용률)
- 트랜잭션을 처리하는 동안 사용하는 중앙 처리 장치 사용량, 메모리 사용량, 네트워크 사용량 등을 말함
2) 성능 분석 도구
- Performance/Load/Stress(성능/부하/스트레스) 점검 도구
- 시스템의 부하나 스트레스를 통해 성능 측정 지표인 처리량, 응답 시간, 경과 시간 등을 점검함
- Monitoring(모니터링) 도구
- 실행 시 자원 사용량을 확인하고 분석하는 도구
- 성능 모니터링, 성능 저하 원인 분석, 시스템 부하량 분석, 장애 진단, 사용자 분석, 용량 산정 등의 기능을 제공하며 시스템의 안정적 운영을 지원함
02. 성능 저하 원인 분석
1) 데이터베이스 연결 및 쿼리 실행 시 발생되는 성능 저하 원인
- 데이터베이스 잠금(Lock)
- 대량의 데이터 조회, 과도한 갱신, 무분별한 인덱스 생성 시 성능이 저하됨
- 요청한 작업이 잠금의 해제 시까지 대기하거나 타임 아웃됨
- 불필요한 데이터베이스 패치(Fetch)
- 필요한 데이터보다 많은 대량의 데이터 요청이 들어올 경우 성능이 저하됨
- 결과 세트(Set)에서 마지막 위치로 커서를 옮기는 작업이 빈번한 경우 응답 시간이 저하됨
- 연결 누수(Leak) / 부적절한 연결 풀 크기(Pool Size)
- 연결 누수(Leak)는 데이터베이스 연결과 관련한 JDBC 객체를 사용 후 종료하지 않을 경우 발생함
- 부적절한 연결 풀 크기(Pool Size)는 너무 작거나 크게 설정한 경우 성능이 저하됨
- 불완전한 완료(Commit)
- 트랜잭션이 확정(Commit)되지 않고 연결(Connection) 풀에 반환되는 경우 성능이 저하됨
- 잘못 작성된 코드로 인해 불필요한 Commit이 자주 발생하는 경우 성능이 저하됨
2) 내부 로직으로 인한 성능 저하 원인
- 웹 애플리케이션의 인터넷 접속 불량
- 웹 실행 시 인터넷 접속 불량으로 서버 소켓(Socket) 쓰기는 지속되나, 클라이언트에서 정상적 읽기가 수행되지 않아 성능이 저하됨
- 소켓(Socket)
- 포트를 사용할 수 있도록 개방하거나 닫는 역할을 함
- 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써 보내거나 소켓으로부터 데이터를 읽어들어야 함
- 소켓(Socket)
- 웹 실행 시 인터넷 접속 불량으로 서버 소켓(Socket) 쓰기는 지속되나, 클라이언트에서 정상적 읽기가 수행되지 않아 성능이 저하됨
- 특정 파일의 업로드, 다운로드로 인한 성능 저하
- 대량의 파일을 업로드하거나 다운로드할 경우 처리 시간이 길어져 성능이 저하됨
- 정상적으로 처리되지 않은 오류 처리로 인한 성능 저하
- 오류 처리 로직과 실제 처리 로직 부분을 분리하지 않고 코딩하거나 예외가 발생할 경우 제대로 처리되지 않아 성능이 저하됨
3) 외부 호출로 인한 성능 저하 원인
- 임의의 트랜잭션이 수행되는 동안 외부 호출이 장시간 수행되거나, 타임아웃이 일어나는 경우 성능이 저하됨
- 외부 호출
- HTTP, 소켓 통신, FTP, Email 등과 같이 인터넷을 통해서 자신이 가지고 있는 서버에 서비스를 요청하는 것
- 외부 호출
4) 잘못된 환경 설정이나 네트워크 문제로 인한 성능 저하 원인
- 환경 설정으로 인한 성능 저하
- 스레스 풀, 힙 메모리의 크기를 너무 작게 설정하면 Heap Memory Full 현상 발생으로 성능이 저하됨
- 네트워크 장비로 인한 성능 저하
- 라우터, 스위치 등 네트워크 관련 장비 간 데이터 전송 실패 시 성능이 저하됨
- 전송 지연에 따른 데이터 손실 발생 시 성능이 저하되거나 장애가 발생함
03. 테스트 관리 지원 도구의 분류
1) 테스트 지원 도구
- 오픈소스
- 결함 관리 도구 : Mantis, Bugzilla
- 테스트 케이스 도구 : Testlink
- 형상, 버전 관리 도구 : CVS, SVN, Git, Bazaar
- 커뮤니케이션 도구 : MediaWiki, DokuWiki
- 통합 프로젝트 지원 도구 : Trac, nForge, Gorge
- 상용소스
- 버그 추적 도구 : JIRA, TPMS, Test Director, Clear Quest
- 형상 관리 : Visual Sourcesafe, IBM Ration Clear Case
- 커뮤니케이션 도구 : Confiuence
2) 정적 분석 지원 도구
- 오픈소스 : pmd, Find Bug, checkstyle, cppcheck, Corbetura
- 상용소스 : Coverity, IBM Rational Software, PolySpace
3) 테스트 실행 및 로깅 지원 도구
- 오픈소스
- 테스트 프레임워크 : XUnit, TestNG, Fit/FitNess, Jmock, Easymock, Googlemock
- IC(지속적인 통합) 도구 : CruiseControl, hudson, jenkinson
- 빌드 자동화 도구 : Ant, Maven, Make
- 실행 자동화 도구 : STAF/STAX, Selenium
- 상용소스
- 버그 추적 도구 : WinRunner, Jtest, CodeScroll
4) 성능 및 모니터링 지원 도구
- 오픈소스 : Jmeter, OpenSTA, allmon, Eclipse, TPTP
- 상용소스 : E-Load, LoadRunner, Webload, Eobot