- 응답 시간(Response Time)
- 클라이언트가 서버에 요청을 하고 그 요청에 대한 응답을 받을 때까지 걸린 시간
- 응답 시간 분류
- 처리 시간(Processing Time): 실제 서버가 요청을 처리하는 데 걸린 시간
- 대기 시간(Latency Time): 클라이언트와 서버 간에 데이터를 주고받는 데 걸리는 시간
- 응답 시간(Response Time) = [동시 사용자 수 / 초당 요청 수(TPS)] - 인지시간(Think Time)
- 인지 시간(Think Time): 두 가지 연속적인 작업 사이에 소비하는 시간
- TPS(Throughput)
- 서버가 초당 처리할 수 있는 요청의 개수
- TPS가 높을수록 초당 처리할 수 있는 요청의 수가 많음
Apache JMeter 설치 및 실행
다음 링크에서 apache-jmemter-x.x.x.zip 파일을 다운로드 후 압축 풀기를 한다.
https://jmeter.apache.org/download_jmeter.cgi
압축이 풀린 폴더의 bin 경로에 있는 jmeter.bat 파일을 실행한다.
cmd 창과 함께 Apache JMeter 창이 뜨면 실행 성공이다.
Apache JMeter 사용방법
Test Plan → [Add] → [Threads (Users)] → [Thread Group]
Thread Properties 설정
- Number of Threads (users): 가상 사용자(Thread)의 수
- Ramp-up period (seconds): 요청 주기(초)
- Loop Count: 테스트를 반복하는 횟수, Infinite - 무한대 호출
다음 이미지는 1000명의 사용자가 1초에 한 번씩 계속 요청을 보내는 설정이다. (1초당 1000회의 요청)
Loop Count를 별도 설정하지 않으면 Infinite가 자동 체크 됨
Thread Group → [Add] → [Sampler] → [HTTP Request]
HTTP Request 설정
- Protocol [http]: http 또는 https로 설정
- Server Name or IP: 로컬 테스트는 localhost로 설정
- Port Number: 서버의 포트(예: 8080)
- Http Request
- Http Method 지정: GET / POST / PUT / DELETE 등
- Path: 요청을 보낼 URI(예: /todos)
Thread Group → [Listener] → [View Result Tree]
Listener: Sampler의 요청에 대한 결과를 수집해서 결과 값을 보여줌(요청을 보낸 후 성공, 실패, 응답 시간, 응답 메시지 등을 확인할 수 있음)
[Start]
[Yes]: 설정한 내용을 파일로 저장
실행 결과에 대해 Request, Response를 확인할 수 있다.
Thread Group → [Add] → [Listener] → [Summarty Report] → [Start]
테스트에 대한 요약 결과를 확인할 수 있다.
- #Samples: 서버에 요청한 횟수
- Average: 평균 응답 시간(ms)
- Min: 최소 응답 시간(ms)
- Max: 최대 응답 시간(ms)
- Std. Dev.: 표준 편차, 요청에 대한 응답 시간이 일정하고 안정적인가를 확인, 값이 작을수록 안정적
- Error: 에러율(%), 400 또는 500대 에러가 발생한 경우
- Throughput: 처리량(초당 처리 건수) = TPS
- KB/sec: 처리량(초당 처리 KB)
테스트 결과를 그래프로 보기 위한 설정
다음 링크에서 압축 파일 다운로드 후 압축을 풀고 lib 폴더 내 파일들을 JMeter의 lib 폴더 내 추가한다.
https://jmeter-plugins.org/?search=jpgc-graphs-basic
Thread Group → [Add] → [Listener] → [jp@gc - Transactions per Second]
그래프는 다음과 같이 보여준다.
'TIL(Today I Learned)' 카테고리의 다른 글
TIL - Connection Pool (0) | 2024.07.10 |
---|---|
TIL - Apache Tika로 이미지 타입 검사 (0) | 2024.07.09 |
TIL - 조회수 증가 테스트 코드에서 조회수가 반영되지 않는 문제 해결 (0) | 2024.07.05 |
TIL - Spring Boot에서 In-memory Cache 적용 (0) | 2024.07.04 |
TIL - Spring Boot Test 시 JPA metamodel must not be empty (0) | 2024.07.03 |