JMeter - 어떻게 JMeter 를 사용 하여 쿠키 를 편리 하 게 관리 합 니까?
업무 배경:
우 리 는 업무 중 에 자주 다음 과 같은 압력 측정 장면 을 만 날 수 있다.
로그 인 후 조회, 충전, 구 매... 등 업 무 를 압력 측정 한다.
이런 장면 익숙 하 죠?많은 업무 작업 은 로그 인 에 의존 해 야 하지만 한 사용자 가 로그 인 할 때마다 쿠키 를 생 성 합 니 다. 그리고 다음 작업 에 서 는 쿠키 를 휴대 해 야 합 니 다. 서버 는 후속 요청 에 대해 검 사 를 합 니 다.
먼저 생각 나 는 것 은 로그 인 응답 에서 정규 표현 식 으로 cookies 를 추출 한 다음 다른 작업 에서 호출 하면 되 지 않 습 니까?
안 돼!
cookies 는 로그 인 응답 결과 에서 생 성 된 것 이 아니 라 response header 에 지 니 고 있 기 때문에 정규 표현 식 으로 추출 할 수 없습니다.
그럼 무엇으로 구 할 까요?jmeter 공식 문서 에서 어떻게 말 하 는 지 먼저 살 펴 보 겠 습 니 다.
2. Jmeter 공식 문서 해독
Jmeter 공식 문 서 는 이렇게 쓰 여 있 습 니 다.
다음은 제 가 간단하게 번역 하 겠 습 니 다.
쿠키 관리자 키 트 는 두 가지 기능 이 있 습 니 다.
우선 웹 브 라 우 저 처럼 cookies 를 저장 하고 보 낼 수 있 습 니 다.
만약 에 HTTP 요청 과 응답 이 쿠키 를 포함 하고 있다 면 쿠키 관리 자 는 이 쿠키 를 자동 으로 저장 하고 해당 사이트 의 다음 모든 요청 에서 이 쿠키 를 사용 할 수 있 습 니 다.
JMeter 의 모든 스 레 드 에는 자신의 '쿠키 저장 소' 가 있 습 니 다.따라서 세 션 정 보 를 저장 하기 위해 쿠키 를 사용 하 는 사 이 트 를 테스트 하고 있다 면 모든 JMeter 스 레 드 는 자신의 세 션 이 있 습 니 다.이러한 cookies 는 쿠키 관리자 에 표시 되 지 않 지만 '결과 트 리 보기' 에서 볼 수 있 습 니 다.
JMeter 는 받 은 cookies 가 URL 에 유효한 지 확인 합 니 다.이것 은 도 메 인 을 뛰 어 넘 는 쿠키 가 저장 되 지 않 는 다 는 것 을 의미한다.도청 행위 가 있 거나 크로스 도 메 인 cookies 를 저장 하려 면 jmeter. poperties 에 설정 해 야 합 니 다. " CookieManager.check.cookies = false”。
받 은 Cookies 는 JMeter 의 스 레 드 변수 로 저장 할 수 있 습 니 다.cookies 를 변수 로 저장 하려 면 설정 이 필요 합 니 다.
“ CookieManager.save.cookies =true”。
또한, 기본적으로 jmeter 의 cookies 는 저장 할 때 이름 접두사 가 "입 니 다. COOKIE_ ”,이 접 두 사 를 사용 하지 않 으 려 면 "CookieManager. name. prefix =" 속성 을 정의 해 야 합 니 다. ”(하나 이상 의 빈 칸). 접 두 사 를 사용 했다 면 TEST 라 는 쿠키 값 은 ${COOKIE TEST} 을 통 해 얻 을 수 있 습 니 다.
그 다음 쿠키 관리자 에 쿠키 를 수 동 으로 추가 할 수 있 습 니 다. 단, 이렇게 하면 이 쿠키 는 모든 JMeter 스 레 드 에 공 유 됩 니 다. 이러한 cookies 는 생 성 후 수명 주기 가 길 어 집 니 다.
비 어 있 는 cookies 는 기본적으로 무시 되 었 습 니 다. 이 는 JMeter 의 속성 을 설정 하여 변경 할 수 있 습 니 다: CookieManager. delete null cookies = false. 이것 은 수 동 으로 정 의 된 cookies 도 적 용 됩 니 다. - 이러한 cookies 는 업데이트 후 cookie manager 에서 삭 제 됩 니 다.
또한 주의해 야 할 것 은 쿠키 이름 이 유일한 것 이 어야 한 다 는 것 입 니 다. 만약 에 쿠키 의 이름 이 기 존 쿠키 와 같 으 면 기 존의 쿠키 를 대체 할 것 입 니 다.
sampler 역할 영역 에 여러 개의 쿠키 관리자 가 있 으 면 현재 사용 할 쿠키 를 지정 할 수 없습니다. 또한 하나의 쿠키 관리자 에 저 장 된 쿠키 는 다른 쿠키 관리자 에 의 해 사용 되 지 않 으 므 로 여러 개의 쿠키 manger 를 사용 하 는 것 을 삼가 야 합 니 다.
이해 하기 어 려 울 것 같 지 않 아 요?
괜찮아, 다음은 우리 가 정리 해 보 자.
Cookie Manager 는 주로 두 가지 역할 을 합 니 다.
1. 쿠키 자동 관리:
브 라 우 저 처럼 쿠키 를 자동 으로 저장 하고 전송 할 수 있 습 니 다. http 요청 응답 에 쿠키 가 포함 되 어 있 으 면 쿠키 관리 자 는 이 쿠키 를 자동 으로 저장 하고 나중에 이 사이트 로 보 내 는 모든 요청 에 이 쿠키 의 값 을 사용 합 니 다. 각 스 레 드 는 쿠키 영역 을 스스로 저장 합 니 다.
쿠키 관리자 에서 자동 으로 저 장 된 쿠키 가 보이 지 않 습 니 다. 결과 트 리 View Results Tree 에서 요청 한 쿠키 데 이 터 를 볼 수 있 습 니 다.
쿠키 를 스 레 드 변수 에 저장 하려 면 속성 'CookieManager. save. cookies = true' 를 정의 해 야 합 니 다. 스 레 드 변 수 는 COOKIE + Cookie 이름 입 니 다. 속성 CookieManager. name. prefix = 기본 COOKIE 값 을 변경 할 수 있 습 니 다.
2. 쿠키 수 동 관리:
쿠키 관리자 에 쿠키 를 수 동 으로 추가 하면 이 쿠키 의 값 은 모든 스 레 드 에서 공 유 됩 니 다.
비교적 간단 한 방법 은 fireforx 의 firebug 를 사용 하여 cookies 를 내 보 내 는 것 입 니 다. ,그리고 jmeter 의 cookie manager 에 가 져 옵 니 다. 물론 Add 단 추 를 통 해 수 동 으로 cookies 를 추가 할 수 있 습 니 다.
Tips:
1. 주의해 야 할 것 은 도 메 인, 경로, 특히 도 메 인 입 니 다. Jmeter 현 버 전 은 기본적으로 도 메 인 간 요청 을 지원 하지 않 기 때문에 채 우지 않 으 면 설 정 된 Cookie 를 가 져 오지 않 습 니 다.
2. 쿠키 가 필요 한 스 레 드 에 Http Cookie 관리 자 를 추가 하면 기본적으로 비어 있 지만 반드시 추가 해 야 합 니 다. 그렇지 않 으 면 쿠키 변 수 를 저장 하지 않 습 니 다.
3, 이렇게 같은 라인 (그룹) 에서 다른 작업 구성 요 소 는 ${COOKIE xxxx} 를 통 해 직접 가 져 올 수 있 습 니 다
4. 현재 jmeter 는 하나의 sampler 에서 여러 개의 쿠키 manager 를 동시에 사용 할 수 없습니다.
5. 도 메 인 을 넘 어 cookies 를 저장 하려 면 설정 이 필요 합 니 다. CookieManager.check.cookies =false
3. 스 레 드 그룹 내부 전달 cookies
쿠키 관리 자 를 알 게 되 었 습 니 다. 이제 우 리 는 업무 장면 으로 돌아 갑 니 다.
어떻게 조회 인터페이스 (먼저 로그 인하 고 쿠키 를 휴대 해 야 함) 에 대해 압력 측정 을 실현 합 니까?
이것 은 매우 간단 한 장면 입 니 다. 그러나 위 와 같은 방식 으로 직접 실행 하면 결과 가 틀 릴 수 있 습 니 다. jmeter 는 기본적으로 cookies 를 저장 하지 않 기 때문에 cookie manager 를 추가 해 야 합 니 다. 다음 과 같 습 니 다.
예 를 들 어 빈 쿠키 관리 자 를 추가 하면 쿠키 를 자동 으로 저장 할 수 있 고 같은 라인 그룹 사이 에서 쿠키 를 전달 할 수 있 습 니 다. 이때 스 크 립 트 를 다시 실행 하면 통 과 됩 니 다.
그러나 저 희 는 로그 인 작업 에 대해 동시에 테스트 를 할 필요 가 없습니다. 즉, 저 는 한 사용자 로 로그 인 한 다음 에 다른 업무 작업 을 순환 해 야 합 니 다. 이 럴 때 로그 인 과 조회 작업 을 각각 두 개의 스 레 드 그룹 에 두 어야 합 니 다. 그러나 jmeter 공식 문서 에서 cookies 는 도 메 인 을 넘 어 전달 할 수 없다 고 했 습 니 다. 즉, 온라인 스 레 드 그룹 에서 공유 할 수 없다 고 했 습 니 다. 그러면 어떻게 실현 해 야 합 니까??
4. 크로스 스 레 드 그룹 전달 cookies
공식 문서 에서 쿠키 변 수 는 스 레 드 내 에서 유효 하고 스 레 드 외 에 유효 하지 않 지만 실제 테스트 같은 스 레 드 그룹의 다른 스 레 드 는 직접 방문 할 수 있 습 니 다.
크로스 스 레 드 그룹의 경우 직접 방문 할 수 없 으 며 다른 방식 으로 쿠키 변 수 를 공유 할 수 있 습 니 다. 몇 가지 방식 을 시험 해 보 았 습 니 다. 다음 과 같은 방식 이 가장 간단 합 니 다.
JMeterUtils. setProperty 와 JMeterUtils. getPropDefault 방법 으로 구현
1. 쿠키 생 성 요청 에 beanshell postprocessor 를 추가 하고 다음 스 크 립 트 를 추가 하여 Jmeter 속성 파라미터 에 쿠키 를 저장 합 니 다.
import org.apache.jmeter.util.JMeterUtils;
JMeterUtils.setProperty(“cookie_name”, “cookie_value”);
그 중에서 cookie name 과 cookie value 는 각각 해당 하 는 쿠키 이름 (COOKIE 접두사 없 음) 과 쿠키 값 으로 바 꿉 니 다.
2. 쿠키 를 사용 해 야 하 는 다른 스 레 드 그룹의 요청 에 beanshell preprocessor 사전 프로 세 서 를 추가 하고 다음 스 크 립 트 를 추가 하여 쿠키 의 값 을 추출 하고 스 레 드 변수 에 저장 합 니 다.
import org.apache.jmeter.util.JMeterUtils;
String value = JMeterUtils.getPropDefault(“cookie_name”);
Vars.put(“cookie_name”,value);
이곳 의 cookie name 은 앞에서 설정 한 이름과 같 습 니 다.
그리고 이 스 레 드 그룹 에서 ${cookie name} 을 사용 하여 쿠키 의 값 을 얻 을 수 있 습 니 다. 즉, 크로스 스 레 드 그룹 이 쿠키 를 전달 하 는 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Sessions and Cookies #02백엔드의 각 세션들은 id를 가지고 있었고 그 id를 브라우저한테 보냈다. 그러면 브라우저가 요청을 보낼때마다 그 id를 같이 보내준다. 백엔드에 요청을 보낼때 마다 id를 같이 보내줘야 한다. 그리고 세션 id를 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.