현재 Jmeter 세팅
응답값 저장 방법
요청시 저장한 값 사용 방법
리뷰

현재 Jmeter 세팅은 쓰레드의 수, 계수기의 값을 맞춰
설정한 쓰레드의 수 만큼 여러명의 사용자의 토큰을 얻을 수 있는 세팅이다.

검사할 필드 : 응답 헤더들
생성된 변수 이름 : 추출 후 다른 곳 에서 이용될 때의 변수명 지정
정규표현식 : 응답 헤더에서 필요한 데이터를 정규표현식으로 추출
템플릿 : 추출해온 값에서 몇번째 데이터를 사용할 것 인지 지정(잘 모르겠음)
중복 매치 설정 : 정규표현식에 걸리는 매치가 여러개일 경우 몇 번째 데이터를 사용할 것 인지 지정
위 세팅은
응답 헤더에서 첫번째로 Authorization=에 일치하는 데이터를 찾아서 token이라는 변수로 저장한다.
이다.

요청 이후 응답에 대한 처리를 자바를 통해 처리 할 수 있다.
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
String extractedValue = vars.get("token");
String csvData = extractedValue + "\n";
String filePath = "C:/Users/qkrckstjq/Downloads/apache-jmeter-5.6.3/bin/responseTokens.txt";
try {
FileUtils.writeStringToFile(new File(filePath), csvData, true);
} catch (IOException e) {
log.error("Error writing to CSV file: " + e.getMessage());
}
정규표현식 추출기에서 token으로 저장한 변수를 가져와 지정해놓은 .txt파일에 밀어넣고 있는 작업이다.
파일은 엑셀파일에 저장도 가능하지만 토큰 한줄만을 필요로 하고 있기 때문에 더 간단한 txt파일에 저장하고 있다.
(실제로 파일이 존재해야 한다. 파일 명 및 위치는 맘대로 지정해도 상관 없음)

파일 이름 : BeanShell에서 저장한 파일 선택
변수 이름들 : 파일에서 가져온 데이터의 변수명 지정
구분자 : 파일에서 데이터를 뭐를 기준으로 가져올 것 인지 현재는 띄어쓰기를 기준으로 가져옴
지정한 파일에서 띄어쓰기를 기준으로 한 줄씩 token이라는 변수로 지정하여 사용으로 정리 할 수 있다.
각 쓰레드마다 파일에서 띄어쓰기를 기준으로 한 줄씩 token으로 변수를 사용할 수 있다.

위 설정에서는 요청 헤더에 "Cookie"를 키로 "Authorization=${token}"를 값으로 하여 token변수를 활용 하고 있다.
위 세팅에서의 문제점이 있다.
BeanShell 사후 처리기에서 해당 txt파일에 계속해서 밀어 넣고 있기 때문에 토큰을 처음부터 다시 저장하고 싶다면 수동적으로 txt파일을 지워줘야 한다.
BeanShell 사전 처리기로 로그인 쓰레드 작동 전에 먼저 txt파일을 초기화하는 작업을 넣어봤는데 원하는 데로 작동하지 않았다.
사전 처리기로 txt파일 초기화가 되긴 했으나 사전 처리기와 사후 처리기가 거의 동시에 작동을 해서 몇 개의 요청에 대해서 저장 하지를 못했다.
사전 처리기로 txt파일 초기화를 넣고 쓰레드를 10명으로 잡고 요청을 쏠 경우 평균적으로 2명에서 3명의 토큰이 저장되지 않고 날라갔다.
결국 토큰을 다시 저장하고 싶다면 수동적으로 직접 txt파일을 초기화해줘야 했다.
대단한 청년.