테스트/부하테스트

How to use HTTP(S) Test Script Recorder in JMeter in chrome browser using macOS

blogger903 2024. 8. 12. 08:41
728x90

How to use HTTP(S) Test Script Recorder in JMeter in chrome browser using macOS

 

두 가지 방법으로 jmeter로 https script를 recording합니다

  • jmeter에서 주는 가이드로 test script recorder 만들기
  • proxyman을 이용해 test script recorder 만들기

jmeter에서 주는 가이드로 test script recorder 만들기

test script recorder 생성

여기는 아무거나 입력해도됩니다

잘 생성된것을 확인했습니다

Start 클릭해줍니다

이렇게 RootCA가 jmeter bin 디렉토리에 생성되었으니 browser에 RootCA를 설치하랍니다

그러면 이렇게 뜹니다 jmeter에서 8888포트로 프로세스를 올렸습니다

 

포트가 정상적으로 열렸는지 확인합니다

lsof -i:8888

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 17579 nohys 177u IPv6 0xdb7954184aaafad 0t0 TCP *:ddi-tcp-1 (LISTEN)

 

자 이제 다시 꺼줍니다 jmeter proxy 켜는 법을 알았으니 JmeterRootCA를 브라우저에 추가한후 다시 하겠습니다

브라우저에서 chrome://settings, arc://settings 입력한후

인증서 검색해서 설정합니다

키체인으로 접근하세요

jmeter 설치위치 학인

brew info jmeter
==> jmeter: stable 5.6.3 (bottled)
Load testing and performance measurement application
https://jmeter.apache.org/
Installed
/opt/homebrew/Cellar/jmeter/5.6.3 (2,658 files, 213.5MB) *
  Poured from bottle using the formulae.brew.sh API on 2024-01-08 at 13:56:16
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/j/jmeter.rb
License: Apache-2.0
==> Dependencies
Required: openjdk@21 ✘
==> Analytics
install: 2,407 (30 days), 8,380 (90 days), 43,245 (365 days)
install-on-request: 2,405 (30 days), 8,377 (90 days), 43,234 (365 days)
build-error: 0 (30 days)

/opt/homebrew/Cellar/jmeter/5.6.3/libexec/bin
위 경로에서 ApacheJMeterTemporaryRootCA.crt를 찾습니다

키체인을 인증서에 복붙해주고 항상 신뢰해줍니다

 

 

 

브라우저에서 chrome://settings, arc://settings 입력한후

해서 proxy 또는 프록시를 검색해서 프록시 설정 열기로 갑니다

이제 여기서 jmeter 로 돌아가서 recording start합니다

그러면 8888포트로 jmeter 프록시 프로세스가 올라갔죠

그러면 이제 브라우저 프록시를 다음으로 설저해줍니다

이제 recording 하시면 됩니다

proxyman을 이용해 test script recorder 만들기

이 방법이 훨씬 간단합니다

인증서 부분을 안써도 되기 때문에 한 단계가 빠지는데 그 한 단계가 rootCA라서 훨씬 간단합니다

문제는 recording할때 proxyman 포함되기 때문에 proxyman도 같이 실행해야합니다

그래서 결과적으로는 JmeterTemporaryRootCA.crt를 통해 https 통신 모두를 프록시해야합니다

 

JmeterTemporaryRootCA.crt 를 이용해서 사용할때는 아래와 같은 구조로 통신합니다

 

Proxyman을 끼면

이 구조이고 Proxyman은 ProxymanCA 를 install해서 쓰고 있기 때문에 https 요청을 다 읽을 수 있습니다

jmeter로 전달하면 됩니다 

 

우선 http recording하려는 도메인의 ssl proxy list에 추가해주세요

 

추가 된것을 확인합니다

 

Https Test Script Recorder에 Test Plan Creation에 Target group > Recording Controller를 해주시면 
하위에 아래와같이 Recording Controller > Transaction Controller > Http Request가 담깁니다

 

start 버튼을 누르신후 Recorder: Transactions Controller가 올라간 후에  external proxy를 해주시고 순서 지켜서 실행해야합니다

jmeter proxy가 올바르게 올라가지 않았는데 external proxy설정해도 recording이 정상적으로 안됩니다

 

이제 proxyman external proxy로 트래픽을 jmeter proxy로 전달합니다

Proxyman > Tools

 

https만 선택해주세요

Done 눌러주시고

브라우저 탭을 많이 띄워두시면 많은 요청이 전달되니 Inclusive List에 도메인을 추가해주세요

jmeter에서도 많은 요청을 recording할때 loading이 많이 발생할겁니다

 

 

 

java.lang.OutOfMemoryError 이슈

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread

vuser마다 메모리를 잡기 때문에 많은수의 vuser 생성시 java outofMemory가 발생합니다 

cd /opt/homebrew/Cellar/jmeter/5.6.3/libexec/bin
java -Xms3G -Xmx6G -jar ApacheJMeter.jar



minimum heap size를 넉넉하게 잡아주세요

참고: https://arc.net/l/quote/oubcrnsh

 

'테스트 > 부하테스트' 카테고리의 다른 글

ngrinder docker-compose 로 생성후 로컬테스트  (1) 2024.06.13