반응형
기본 테스트 예제
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 |