1. 성능 테스트란?
서비스 및 서비스 시스템의 성능을 확인하기 위해서 실제 사용 환경과 비슷한 환경에서 테스트를 진행하는 것을 말한다.
이를 통해서 "응답시간", "처리량", "병목구간", "서버 리소스(CPU, Memory, DISK)" 측정해서 문제점을 확인하고 튜닝하는 것
2. 테스트 종류
Load Test : 부하를 순차적으로 증가시키면서 응답시간이 급격히 증가시켜서 더는 처리량이
증가하지 않거나 CPU 와 메모리등의 리소스의 임계값을 찾아서 튜닝 포인트를 찾는 테스트
Stress Test : 임계값 이상의 요청이나 비정상적인 요청을 보내 비정상적인 상황의 처리 상태를 확인하고 시스템의 최고 성능 한계를 측정
화기 위한 테스트
Spike Test : 값자기 사용자가 몰렸을때를 정상적으로 처리되는지 확인하고 부하가 줄었을때 정상적으로 반응하는지를 확인하기 위한 테스트
Stability /Soak Test : 긴 시간 동안 테스트를 진행해서 테스트 시간에 따른 시스템의 메모리 증가, 성능 정보의 변화 등을 확인하는 테스트.
3. 성능 테스트 프로세스
단계 | 프로세스 | 내용 |
1 | 요구사항 분석 | - 테스트 목적 과 범위를 정하는 단계로, 효율적인 테스트를 위해서는 목적을 정확히 설정해야 한다. |
2 | 테스트 계획 | - 언제, 누가, 어떤 방법으로 , 어디서 테스트할 것인진 정하는 단계 |
3 | 테스트 환경 구축 | - 최대한 테스트 타켓 장비 와 가까이에 구축 한다. 요즘은 클라우드 환경의 테스트 팜을 구성하는 경우가 |
4 | 테스트 설계 | - 테스트 케이스 와 필요한 데이터 셋을 준비 한다. |
5 | 테스트 수행 과결과 수집 | - Pre-Test : 쓰레드를 1개로 하고 기능 테스트를 한다. Main 테스트를 하면 많은 사람들이 투입되기 때문에 |
6 | 테스트 분석 | - 테스트 결과 자료와 시스템 성능 자료를 모아서 테스트 결과를 분석하고, 문제점을 발견 한다. |
7 | 문제점 수정 및 재테스트 | - 테스트 결과를 개발팀 과 운영팀에 전달하여 문제점을 수정하고 다시 한 번 테스트를 한다. |
8 | 결과 리포트 작성 | - 테스트 리포트는 테스트 목적에 따라 해당 목적을 가장 잘 표현할 수 있는 방식으로 작성하는 것이 좋다. |
4. 테스트 인력 구성
테스트 인력 | 역할 |
Test Leader | - 전체적인 테스트 계획, 목적수립, 시나리오 작성, 일정 관리와 인력 배치를 담당한다. |
Test Scripter(Designer) | - 정의된 테스트 목적 및 범위에 따라 작성된 시나리오로 사이트를 분석하고 이를 바탕으로 상세 케이스를 작성한다. |
Test Operation | - 작성된 테스트 스크립트를 이용해서 실제 테스트를 수행한다. |
Development Team | - 테스트에 필요한 데이터를 준비하고 애플리케이션을 모니터링하며 발견은 문제점과 개선점을 찾아낸다. |
System Engineer | - 테스트 환경을 구축하고 시스템(OS, 네트워크, 스토리지)를 모니터링 하여 발견된 문제점과 개선점을 찾아낸다. |
5. 주요 용어 와 개념
용어 | 개념 |
Active User | 실제 서버에 연결된 상태로 요청을 처리 중인 사용자를 말한다. |
InActive User | 웹 브라우저에 결과 화면이 출력된 상태에서 화면의 내용을 읽거나 정보를 입력하고 있는 사용자 |
Concurrent User(Active User + InActive User) | 보통 '동시 접속 사용자수'라고 표현한다. 일반적으로 사용자 수의 많고 적음을 표현하는 값으로 |
Vitural User | 가상 사용자 수로, Jmeter에서는 Thread수로 표현하기도 한다. |
Ramp-Up Period | Thread 생성에 걸리는 시간을 의미한다. Ramp=Up Period 동안 차례대로 Thread를 생성한다. |
Thoughput | 단위 시간당 대상 서버에서 처리되는 요청의 수를 말한다. 보통 TPS라고 한다. |
Response Time/Load Time | 응답시간 또는 처리시간이라고 표현한다. 요청을 보낸 후 응답이 완료되어 사용자 화면에 출력될 때까지의 시간을 나타낸다. |
Latency | 요청을 보낸 후 데이터를 받기 시작할 때까지 시간 |
Think Time | 하나의 요청에 응답을 수신하고 다음 요청을 보낼 때까지 시간을 의미한다. |
Request Interval Time | 요청을 보낸 후 다음 요청을 보낼 때까지 시간을 의미 한다. 비교적으로 Load Time >= Latency |
6. Test Process
Step | 진행절차 |
1 | QA는 부하 테스트 환경 정보를 개발팀에서 제공을 받는다 |
2 | QA는 터미널에서 부하 테스트 스크립트를 작성한다. |
3 | QA는 개발팀에 전체 시스템 모니터링을 요청 한다. |
4 | QA는 부하 테스트 결과 와 시스템 모니터링 정보를 취합해서 리포팅 한다. |