본문 바로가기

TIL(Today I Learned)

TIL-231103(성능테스트란 무엇인가)

📝오늘 공부한 것

  • 성능 테스트 공부
  • 커리어톤 참여하기
  • 프로그래머스 문제풀기
  • 이력서 수정하기 & 강의 듣기

📌 성능 테스트

📍 성능 테스트

  • 특정 제품이 다양한 작업 부하에서 예상 프로세스를 잘 수행하는지 여부를 식별하기 위해 수행되는 프로세스
  • 웹 성능테스트는 개발자가 이해 관계자에게 응용 프로그램 성능에 대한 신뢰할 수 있는 정보를 제공하고 다양한 수준의 트래픽에 응답하는 방식을 예측할 수 있도록 하는데 필수적이다.
  • 성능 테스트는 또한 제품이 출시되기 전이나 출시된 후에 개선해야 할 사항을 보여주어 성능 저하, 불일치 및 사용성 저하를 방지한다. 예상대로 작동할 수 있도록 예상 사용자 수에 대해 테스트한다.
  • 즉, 성능 테스트는 특정 이벤트에 대해 미리 동시 접속자 수에 대한 성능 테스트를 수행함으로써 서버가 몇 명까지 동시 접속자수를 케어할 수 있는지, 어디에서 부하가 많이 발생하는지에 대해 사전에 예측하고 대비할 수 있다.

 

[ 성능 테스트 유형 ]

Load Test(부하 테스트) :

  • 시스템이 예상 사용량을 처리할 수 있는지 확인하는 테스트
  • 시스템이 동시에 많은 요청을 처리할 수 있는지, 그리고 많은 사용자가 동시에 접속할 때 시스템이 어떻게 작동하는지를 확인한다.

Stress Test(스트레스 테스트) :

  • 시스템이 지속적인 부하를 처리할 수 있는지를 확인하는 테스트
  • 임계값 이상의 요청이나 비정상적인 요청을 보내 비정상적인 상황의 처리상태를 확인하고 시스템의 최고 성능 한계를 특정하기 위한 테스트

Spike Test :

  • 비상상황을 가정하고, 언제 이것이 정상상태로 돌아오는지 테스트하는 테스트
  • 갑자기 사용자가 몰렸을 때 요청이 정상적으로 처리되는지, 그 업무 부하가 줄어들 때 정상적으로 반응하는지를 확인

Soak Test :

  • 다른 테스트에 비해, 긴 시간동안 테스트를 하면서, 시스템의 메모리 증가나 상태를 확인하는 테스트

 

📍 Apache JMeter

  • 기능적 동작을 로드 테스트하고 성능을 측정하도록 설계된 100% 순수 Java 애플리케이션인 오픈 소스 소프트웨어
  • 원래 웹 애플리케이션 테스트용으로 설계되었지만 이후 다른 테스트 기능으로 확장되었다.

 

[ 무엇을 할 수 있는지? ]

  • 정적 및 동적 리소스, 웹 동적 애플리케이션 모두에서 성능을 테스트하는 데 사용될 수 있다.
  • 서버, 서버 그룹, 네트워크 또는 개체의 과도한 로드를 시뮬레이션하여 강도를 테스트하거나 다양한 로드 유형에서 전반적인 성능을 분석하는 데 사용할 수 있다.

✔ Apache JMeter 기능

  • 다양한 애플리케이션/서버/프로토콜 유형을 로드하고 성능을 테스트하는 기능
     - 웹 - HTTP, HTTPS(Java, NodeJS, PHP, ASP.NET, …)
     - SOAP/REST 웹 서비스
     - FTP
     - JDBC를 통한 데이터베이스
     - LDAP
     - JMS를 통한 메시지 지향 미들웨어(MOM)
     - Mail - SMTP(S), POP3(S) 및 IMAP(S)
     - 기본 명령 또는 shell 스크립트
     - TCP
     - 자바 객체
  • 빠른 테스트 계획 기록(브라우저 또는 기본 애플리케이션에서), 빌드 및 디버깅을 가능하게 하는 모든 기능을 갖춘 테스트 IDE
  • 모든 Java 호환 OS(Linux, Windows, Mac OSX 등)에서 테스트를 로드하기 위한 CLI모드
  • 완전하고 동적인 HTML 보고서
  • 가장 널리 사용되는 응답 형식인 HTML, JSON, XML 또는 모든 테스트 형식에서 데이터를 추출하는 기능을 통해 쉽게 상관관계를 분석할 수 있음.
  • 완전한 이식성과 100% Java 순수성
  • 전체 멀티스레딩 프레임워크를 사용하면 여러 스레드를 통한 동시 샘플링과 별도의 스레드 그룹을 통한 다양한 기능의 동시 샘플링이 가능
  • 테스트 결과의 캐싱 및 오프라인 분석/재생
  • 확장성이 뛰어난 코어:
     - 무제한 테스트 기능이 가능한 플러그형 샘플러
     - 스크립트 가능한 샘플러
     - 플러그형 타이머를 사용하여 여러가지의 부하 통계 선택 가능
     - 데이터 분석 및 시각화 플러그인을 사용하여 확장성과 개인화 가능
     - 함수를 사용하여 테스트애 동적 입력을 제공하거나 데이터 조작 가능
     - Maven, Gradle 및 Jenkins용 타사 오픈 소스 라이브러리를 통한 지속적 통합 가능

 

 

 

 

 

 

 

 

 

 

References :

https://jmeter.apache.org/

https://12bme.tistory.com/272