반응형

기본 테스트 예제

API

@RestController
public class EchoController {
    @PostMapping("/api/echo")
    public Map<String, Object> echo(
        @RequestHeader(required = false) Map<String, Object> headers,
        @RequestParam(required = false) Map<String, Object> params,
        @RequestBody(required = false) String body,
        @RequestPart(required = false) List<MultipartFile> files
    ) {
        Map<String, Object> result = new LinkedHashMap<>();
        result.put("headers", headers);
        result.put("params", params);
        result.put("body", body);
        result.put("files", Optional.ofNullable(files).orElseGet(ArrayList::new).stream().map(MultipartFile::getOriginalFilename).collect(Collectors.toList()));
        return result;
    }
}

Thread Group 추가

  • Test Plan 우클릭 -> Add -> Threads -> Thread Group
  • Number of Threads (users) : 100
  • Ramp-up period (seconds) : 1
  • Loop Count : Infinite
  • Specify Thread lifetime : 체크
  • Duration (seconds) : 10

HTTP Request 추가

  • Thread Group 우클릭 -> Add -> Sampler -> HTTP Request
  • Protocol : http
  • Server Name or IP : localhost
  • Port Number : 8080
  • Http Method : POST
  • Path : /api/echo
  • Parameters
    • Name : message, Value : Hello World, URL Encode : 체크, Content-Type : text/plain

Listener 추가

  • Thread Group 우클릭 -> Add -> Listener -> View Results in Table
  • Thread Group 우클릭 -> Add -> Listener -> View Results Tree
  • Thread Group 우클릭 -> Add -> Listener -> Summary Report

테스트

  • Thread Group 우클릭 -> start
  • Listener로 추가한 항목의 내용 확인

PreProcessor

JSR223 PreProcessor 추가

  • Thread Group 우클릭 -> Add -> Pre Processors -> JSR223 PreProcessor
  • Language : groovy
  • Script
    def threadNumber = ctx.getThreadNum()
    def id = threadNumber.toString()
    def uuid = UUID.randomUUID().toString()
    def random = new Random().nextInt(20).toString() // 0 ~ 19
    
    vars.put("id", id) // 세팅되는 값을 ${id} 형식으로 사용 가능
    vars.put("uuid", uuid)
    vars.put("random", random)
    
    log.info("id : ${id}")
    log.info("uuid : ${uuid}")
    log.info("random : ${random}")
    

HTTP Request

  • Parameters
    • Name : message, Value : Hello World - ${uuid}, URL Encode : 체크, Content-Type : text/plain

Header

HTTP Header Manager 추가

  • Thread Group 우클릭 -> Add -> Config Element -> HTTP Header Manager
  • Add 눌러 필요한 헤더값 추가
    • Name : Content-Type, Value : application/json
    • Name : tx-id, Value : ${uuid}

File Upload

HTTP Request

  • 하단에 Files Upload 탭 -> Add
  • File Path : test_image.png, Parameter Name : files, MIME Type : image/png

주의

  • Content-Type이 강제로 application/json과 같은걸로 지정되면 안됨. Content-Type이 multipart/form-data여야 정상 동작하기 때문.
  • MIME Type을 비워서 전송하면 Invalid content type 오류 발생
반응형

'Development > ETC' 카테고리의 다른 글

[Kakao] 웹으로 카카오 지도 연동하기  (0) 2023.12.24
[Naver] 웹으로 네이버 지도 연동하기  (0) 2023.12.01
[HTTP] Transfer-Encoding  (0) 2023.05.09
[Gradle] Multi-Project  (0) 2021.05.22
[PostgreSQL] 설치  (0) 2021.05.16

+ Recent posts