– 먼저 설치를 진행합니다.
아래 링크에서 설치하거나 Mac 사용자의 경우 homebrew를 통해 설치할 수 있습니다.
압축을 풀면 bin 폴더에 jmeter.sh 파일과 jmeter.bat 파일이 있습니다.
Windows에서는 bat, Mac에서는 sh에서 실행할 수 있습니다.
https://jmeter.apache.org/download_jmeter.cgi
Apache JMeter – Apache JMeter 다운로드
Apache JMeter 다운로드 미러를 사용하여 릴리스 빌드를 다운로드하는 것이 좋지만 기본 배포 디렉터리에서 다운로드한 서명을 사용하여 다운로드한 파일의 무결성을 확인해야 합니다.
현재 버전(48시간)은 아직 제공되지 않을 수 있습니다.
jmeter.apache.org
– Homebrew를 통해 설치한 경우 다음 명령으로 Jmeter를 실행합니다.
(지능적인)
열기 /usr/local/bin/jmeter
(m1)
열기 /opt/homebrew/bin/Jmeter
– 제이미터 실행
실험 계획 -> 전체 테스트 시나리오 모니터링. 여기서 전역 환경 변수를 사용하는 것이 좋습니다.
주제 그룹 -> 시나리오. 구성원이 시나리오에 로그인하여 항목을 주문할 때 이 흐름을 연결합니다.
샘플러 -> API 엔터티입니다.
누구나 로그인하여 상품을 주문하면 이런 방식으로 등록하여 사용할 수 있습니다.
테스트 계획을 마우스 오른쪽 버튼으로 클릭하여 모든 구성을 추가할 수 있습니다.
– 테스트 시나리오 생각
이번에 만들 테스트 시나리오는
이용자 등록 -> 선착순 이벤트 참여.
그러기 위해서는 여러 회원이 로그인을 하여 테스트 중에 발급되는 토큰을 반복적으로 깨물어야 합니다.
이 경우 최초 로그인 테스트 시 여러 구성원이 로그인하는 상황을 만들어야 합니다.
csv를 사용하려고합니다.
아래와 같이 자바를 사용하고 있습니다.
tester1, abcd1234?
tester2, abcd1234?
..
이렇게 생성되는 CSV 파일을 만들었습니다.
암튼 비밀번호는 똑같은데 왜 만들었는지 모르겠음.. ㅎ 아무 생각 없이 하기엔 너무 무섭다.
package com.project.stress_traffic_system.event;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class tester {
public static void main(String() args) {
String csvFile = "/Users/yuhyeonseung/Desktop/file.csv";
FileWriter writer = null;
try {
writer = new FileWriter(csvFile);
// CSV 데이터 작성
List<List<String>> data = new ArrayList<>();
int length = 51;
for (int i = 1; i < length; i++) {
data.add( Arrays.asList("tester" + i, "abcd1234?"));
}
//위에서 추가된 애들에서 안에 들어있는 elements를 하나의 string으로 묶되 ,로 구분하고 개행
for (List<String> row : data) {
String rowStr = String.join(",", row);
writer.write(rowStr + "\n");
}
System.out.println("CSV file created successfully!
");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
– 시나리오 쓰기(BlazeMeter 사용)
다음은 스크립트 작성입니다.
물론 아무 시나리오나 작성할 수 있지만 매우 번거롭습니다.
테스트 시나리오 자체가 간단한 경우 아래 이미지와 같이 스레드 그룹과 HTTP 요청 샘플러를 생성합니다.
자신을 등록하고 API를 사용할 수 있습니다.
사실 한두개면 쉽지만 많은 상황에서 너무 번거롭고 할 일도 많습니다.
그래서 BlazeMeter라는 크롬 확장 프로그램을 사용하고 싶습니다.
이미 실행해서 사진은 없지만,
확장 프로그램을 클릭하면 로그인할 수 있는 탭이 있습니다.
등록을 계속하십시오.
그런 다음 테스트 시나리오를 적용할 사이트로 이동하여 BlazeMeter를 클릭합니다.
그 후에는 사용하기 쉽습니다.
녹화 버튼을 누르고 테스트하려는 시나리오를 계속 진행한 다음 중지 버튼을 누르세요.
녹음이 완료되면 편집을 눌러보십시오.
위와 같은 창이 뜹니다.
내가 사용하는 API가 제대로 기록되었는지 확인해보자.
문제가 없으면 위의 .jmx 버튼을 눌러 내보냅니다.
이제 Jmeter에 저장된 jmx 파일을 불러옵니다.
파일 – 열기로 열 수 있습니다.
파일을 열면 아래와 같이 표시되는 것을 볼 수 있습니다.
(등록/선착순, 임의로 이름을 변경했습니다.
원래는 API 주소로 이름을 지었습니다.
)
– 생성된 CSV 파일을 드롭
(이전 사진과 다르지만 별차이 없음)
CSV 레코드 구성을 추가합니다.
설정은 아래 사진과 같습니다.
생성된 CSV 파일을 파일 이름으로 지정할 수 있으며,
파일 인코딩은 utf-8 입니다 (다른 방법을 선택하셔도 되지만 저는 널리 사용되는 utf-8만 기본으로 사용합니다)
변수 이름은 중요하며 CSV 파일이 생성된 순서대로 변수 이름을 지정해야 합니다.
예를 들어 csv 파일을 만들 때 아이디와 비밀번호의 순서로 생성되었습니다.
(tester1, abcd123!
그렇게 썼는데 아이디와 비밀번호 순서입니다.
)
CSV 파일이 내 것과 동일한 형식으로 생성된 경우 다른 설정을 더 이상 변경할 필요가 없습니다.
-리스너 만들기
테스트 결과를 확인하기 위해 리스너를 추가해 보겠습니다.
짧은 보고서 -> 테스트 내용의 요약을 보여줍니다.
결과 트리 표시 -> 요청 헤더, 응답 헤더, 본문 값 등을 확인할 수 있습니다.
차트 결과 -> 그래픽 형태로 테스트 결과를 확인합니다.
– csv로 로그인 실행
이제 로그인에 해당하는 HTTP 요청 샘플러를 클릭하고 본문 값을 입력하십시오.
미리 csv를 설정했다면 변수 설정을 사용하십시오.
내 경우에는 변수를 사용자 이름/비밀번호로 설정하므로 값에서 ${username}을 대체합니다.
(암호는 어차피 똑같아서 그대로 두었습니다.
)
이것은 csv 파일의 데이터로 로그인합니다.
그러나 테스트를 계속하면 모든 로그인이 유지되지 않는 문제가 있습니다.
로그인 상태를 유지하기 위해 응답으로 온 토큰을 변수로 저장하는 방법을 사용하여 다음 API에서 사용하겠습니다.
위 이미지와 같이 정규식 추출기를 추가합니다.
내 경우 토큰은 응답 헤더에서 이와 같이 제공됩니다.
정규 표현식을 통해 내림차순 토큰을 인식하고 값을 저장하여 사용할 계획입니다.
이제 정규 표현식 추출기를 클릭하고 위와 같이 값을 입력하십시오.
생성된 변수의 이름 -> 변수로 사용할 이름.
정규식 -> 정규식으로 어떤 값을 변수의 값으로 설정해야 하는지 지정합니다.
위 이미지의 경우 Authorization: if it start with Bearer 하고 Bearer 뒤에 번호를 저장합니다.
프레젠테이션 -> 정규식을 사용하여 특정 문자열 패턴을 일치시킬 때 패턴 내부에 괄호를 사용하여 여러 그룹을 세분화할 수 있습니다.
예를 들어 다음과 같이 문자열에서 숫자만 추출하려는 경우:
This is an example string containing numbers 1234 and 5678.
정규식으로 다음과 같이 작성할 수 있습니다.
numbers (\d+) and (\d+)
이렇게 하면 각 괄호가 그룹으로 인식됩니다.
$1$는 첫 번째 괄호를 의미하고 $2$는 두 번째 괄호를 의미합니다.
rf.
https://www.blazemeter.com/blog/jmeter-regular-expressions-extractor
JMeter 정규식 추출기: 변수에서 토큰 및 세션 ID를 추출하는 방법 | Perforce의 블레이즈미터
요청 헤더에 토큰과 세션 ID를 보낼 때 변수로 처리해야 하는 경우가 있습니다.
JMeter 정규식 추출기를 사용하여 쉽게 만드는 방법을 알아보세요.
www.blazemeter.com
이제 토큰이 필요한 API의 헤더에 토큰을 추가합니다.
위 이미지와 같이 변수를 이용하여 토큰을 사용할 수 있습니다.
– 테스트 진행
과목 수 -> 사용자 수를 나타냅니다.
시작 단계 -> 스레드가 증가하는 시간 간격을 나타냅니다.
예를 들어 100개의 스레드(사용자)가 있고 램프 업 시간이 10초이면 1초마다 10개의 스레드가 추가됩니다.
이 기간이 너무 짧으면 트래픽이 너무 많이 증가하고 너무 길면 시스템 과부하를 피할 수 있습니다.
루프 카운트 -> 각 스레드가 이 테스트 요청을 실행하는 빈도를 결정합니다.
무한대가 활성화되면 실행이 계속됩니다.
1로 설정하면 각 스레드는 한 번만 실행되고 더 이상 실행되지 않습니다.
– 실행 결과 확인
기본 설정으로 작동을 테스트했습니다.
이런 식으로 제 서버가 Jmeter로 얼마나 견딜 수 있는지 테스트에서 간단히 확인했습니다.