카테고리 없음

Locust 성능 테스트 - 부하 테스트 (stress test), 스파이크 테스트, 내구성 테스트(Endurance test)

whyHbr 2024. 11. 20. 17:13
728x90
반응형
@RestController
@RequestMapping("/search")
@Log4j2
@RequiredArgsConstructor
public class PostSearchController {

    private final PostSearchServiceImpl postSearchService;

    //조회에 조건이 많을 때는 post 형식으로 사용하기도 한다.
    @PostMapping
    public PostSearchResponse search(@RequestBody PostSearchRequest request){
        List<PostDTO> dtos = postSearchService.getPosts(request);
        return new PostSearchResponse(dtos);
    }
}

조회 성능을 테스트 할 것이다. 

 

import json

from locust import HttpUser, task, between
import random


class BoardServer(HttpUser):
  wait_time = between(1, 2)

  def on_start(self):
    # 로그인 요청을 전송하는 코드
    self.client.post("/members/sign-in", json={"memberId": "member",
                                             "password": "1234"})

  @task
  def view_item(self):
    sortStatus = random.choice(
      ["CATEGORIES", "NEWEST", "OLDEST", "HIGHPRICE", "LOWPRICE", "GRADE"])
    categoryId = random.randint(1, 10)
    name = '테스트 게시글'.join(str(random.randint(1, 10000)))
    headers = {'Content-Type': 'application/json'}
    data = {"sortStatus": sortStatus,
            "categoryId": categoryId,
            "name": name}
  
    self.client.post("/search", json=data, headers=headers)

 

검색 파라미터를 랜덤하게, 조회가 초당 50개씩, max가 500이 될 때를 테스트 할 것이다.


부하 테스트(stress test, 어플리케이션을 최대 부하에서 테스트):

조회 50에서 시작해 조회 500까지, 5분간 유지한다. 

 

이렇게 설정해주면 된다.

결과 확인


스파이크 테스트(갑작스러운 부하 증가에 대한 어플리케이션의 대응 능력을 테스트 )

초당 50씩 늘어나서 유저가 1000이 될 때 까지 5분간 실행한다. 

총 유저 1000, 50씩 늘어난다.
74,252번의 요청과 0번의 실패를 나타낸다.

 

 


내구성 테스트 (Endurance test, 어플리케이션을 장기간 실행하는 테스트. 지속적인 부하와 특정 부하를 유지하는 시나리오에서 어플리케이션의 안정성을 테스트)

초당 100명, 최대 100명이 10분간 접속

 

결과 확인

 

테스트 후 cache...

728x90