본문 바로가기
개발/프로젝트-식당 웨이팅 앱 FOOD LINE

230616 실전프로젝트16 [Nest.js] Jmeter로 부하테스트하기

by 코딩하는짱구 2023. 6. 15.
반응형

✅오늘 학습  Keyword

애플리케이션 통합 완료 후 JMeter를 이용하여 부하테스트를 해보기로 했다.

JMeter란 Apache에서 만든 자바로 만들어진 웹 어플리케이션 성능 테스트 오픈소스이고, GUI, CLI 방법을 지원하고 있어서 이용하기에도 편리할 것 같다고 판단이 들어 사용하기로 결정했다.

 

부하테스트를 진행하기전에 정확히 부하 테스트가 뭔지, 목적과 전략은 어떻게 세워야하는지 개념을 정리했다. 

 

✅성능 테스트, 부하 테스트, 스트레스 테스트란?

1. 성능 테스트 (Performance Test)
시스템이 특정 상황에서 어느정도 수준의 성능을 보이는지 확인하는 테스트, 시스템의 결함을 찾는 것이 아니기 때문에 성공과 실패의 개념으로 결과를 분석하지 않는다. 현재 시스템의 정확하고 면밀한 객관적인 데이터를 확보하고 성능에 대한 현재 상황을 이해하는 것이 중요하다. 포괄적인 성능 테스트로 감지할 수 있는 일반적인 문제에는 긴 시스템 로드 시간, 느린 응답 시간, 동시 사용자 수를 감당하기에 어려운 환경 등이 있다. 

ex) 특정 시나리오 상황에서의 API 평균처리 속도를 파악하는 테스트, 디스크 시간, 초당 수신된 요청 비율, 스레드 수, 메모리 사용


2. 부하 테스트 (Load Test) 
임계 값 한계에 도달하는 순가나까지 시스템의 부하를 지속적으로 증가하면서 진행하는 테스트이다. 
목적은 부하를 증가시키면서 생기는 다양한 시스템의 한계를 찾아 내는 것이 목표. 
(버퍼 오버플로우, 메모리 누수, DB 병목점 등등) 

ex) 서비스 오픈 이벤트를 대비한 최대 부하 확인, 
무료 경품 이벤트로 인한 시스템 부하 대비 등을 위해 진행하는 테스트 

3. 스트레스 테스트 (Stress Test)
시스템이 과부하 상태에서 어떤 동작을 보이는지 확인하는 테스트이다. 과부하 상태에서 모니터링 도구는 정상적으로 동작하는지, 시스템의 Failover는 적용되는지, SPoF 혹은 보안 상의 문제가 존재하는지 등을 확인한다. 

ex)시스템 과부하 상태에서 모니터링의 알림이 잘 오거나, 시스템의 Auto Scaling 계획이 잘 동작하는지 확인하는 테스트

 

 

 

부하 테스트의 일반적인 수행 방법

  1. 부하 테스트 환경 구축
  2. 부하 테스트 시나리오 정의
    예시) 동시에 웹 페이지를 보는 40명의 사용자의 로드 시간이5초를 초과하지 않는지?
  3. 정의된 테스트 시나리오에 따른 부하 테스트 수행
  4. 테스트 완료 후, 부하 테스트 결과를 통해 시스템 성능 분석 및 테스트 성공/실패 판정
  5. 결과가 테스트의 성공/실패 여부를 판단하기 어려울 경우, 부하 테스트 재실행
    이때, 응답 시간, 통과 또는 실패한 트랜잭션 수, 통과 또는 실패한 트랜잭션 수, 메모리 사용률, 평균 대기 시간 및 CPU 사용률은 시스템에 대한 부하 테스트 수행의 결과로써 우선적으로 최적화해야 하는 주요 지표로 사용된다.

 

 

 

✅JMeter로 애플리케이션 성능테스트 해보기

1 차 통합 API(기술 적용x) 기준 1명이 1회, 100명, 1000명, 10000명 test

 

a. 1명이 1회

 

b. 100명이 1회 

c. 1000명이 1회

d. 10000명이 1회 

반응형