본문 바로가기

TIL(Today I Learned)

TIL-231104(성능테스트 진행 목적)

 

📝오늘 공부한 것

  • 성능 테스트 공부
  • 프로그래머스 문제풀기

 

📌 성능 테스트의 목적

📍 성능 테스트 목적

부트캠프를 하는 동안 3번의 프로젝트를 진행하였다. 멘토님께 매번 피드백을 들었던 부분이 있었는데, 바로 성능테스트 였다. '좋아요 버튼을 여러명이 한번에 눌렀을 때 어떻게 되는지 확인해 봤나요?', '갑자기 많은 유저가 요청보냈을 때 어떤 에러가 나는지 확인해봤나요?' 등의 질문에 대한은 항상 '아니요..모르겠습니다.'였다. 

 

기능 개발 과정에서는 테스트 코드를 작성하는 것뿐만 아니라 성능 테스트도 해야한다. 그래야 이를 통해 발생할 수 있는 문제점을 미리 파악하고, 배포를 했을 때 안정적인 서비스를 제공할 수 있기 때문이다. 

 

성능 테스트를 통해서 실제 사용자가 몰렸을 때의 트래픽과 유사한 트래픽을 재현해낼 수 있다.

예상 트래픽을 얼마나 감당할 수 있는지,어느 정도의 자원을 할당해야하는지, 또는 악의적 공격에 대비하여 어떻게 대응할 수 있는지 등을 판단할 근거를 마련할 수 있기 때문이다.

 

부하테스트는 성능 테스트의 한 종류로, 시스템이 동시에 많은 요청을 처리할 수 있는지, 그리고 많은 사용자가 동시에 접속할 때 시스템이 어떻게 작동하는지를 확인하는 테스트이다.

예를 들어, 가상의 여러 유저를 생성해서 특정 API를 100번, 1000번 요청해보는 것이다.

 

📍 성능 테스트 프로세스

대부분의 성능 테스트 프로세스는 6가지의 주요 단계가 있다.

 

1. 성능 테스트 전량

성능 테스트 프로세스를 시작하는 첫 번째 단계는 테스트 환경을 아는 것이다. 수동 또는 자동 수행 여부에 대한 결정을 포함하여 사용 가능한 테스트 도구를 파악하고 잠재적인 성능 테스트 전략을 식별한다.

 

2. 성과기준

테스트의 목표와 목표로 하는 성공 기준을 식별하는 것이 중요하다. 이는 테스트마다 다를 것이다.

예를 들어 처리량 제약 조건과 예상 응답 시간을 식별하고 리소스를 할당한다.

이 시점에서 성능 목표를 설정하기 위해 비교할 유사한 시스템을 식별하는 것이 유용할 수 있다.

 

3. 성능 테스트 계획

시스템이 적절하게 응답하도록 하기 위해 시뮬레이션할 수 있는 주요 시나리오와 응용 프로그램의 사용 가능성을 결정한다. 얻고자 하는 성능 테스트 데이터, 획득 방법 및 사용할 메트릭을 계획한다.

 

4. 성능 테스트 설계

모든 계획이 종합적으로 완료되면 테스트 환경을 물리적으로 설계 및 구성하고 필요한 도구와 리소스를 준비할 수 있다.

그런 다음, 설계에 따라 성능 테스트를 생성하고 실행을 시작할 준비를 한다.

 

5. 테스트

성능 테스트가 실행되는 지점이다. 진행되는 프로세스를 모니터링하고 전체에 걸쳐 KPI를 문서화하는 로그를 생성하는 것이 중요하다.

 

6. 분석 및 재시험

결과를 통합하고 분석 프로세스를 시작한다.

기대치와 비교했을 때 어떤 측정항목이 측정되었으며 시스템이 어떻게 반응했는지 확인한다.  그런 다음 성능 테스트를 수정하고 다시 테스트하여 성능 향상 또는 감소를 식별한다. 개선은 각 재검사에서 감소해야 합니다.

진행 중인 모든 결과를 기록한다.

 

 

⭐ 프로젝트 기간은 끝났지만, 이미 배포가 되어있는 서비스에 대해 성능 테스트를 통해서 프로젝트의 안정성을 확보하고, 많은 사용자가 동시에 접속했을 때 발생할 수 있는 문제에 대해서 대비하기 위해 부하테스트를 해보고자 한다.

 

 

 

 

 

 

 

 

 

 

 

References :

https://www.zaptest.com/ko/%EC%84%B1%EB%8A%A5-%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C-%EC%9C%A0%ED%98%95-%EC%82%AC%EB%A1%80-%EB%8F%84%EA%B5%AC-%EB%8F%84%EC%A0%84%EA%B3%BC%EC%A0%9C