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분간 실행한다.
내구성 테스트 (Endurance test, 어플리케이션을 장기간 실행하는 테스트. 지속적인 부하와 특정 부하를 유지하는 시나리오에서 어플리케이션의 안정성을 테스트)
초당 100명, 최대 100명이 10분간 접속
결과 확인
728x90