[JMeter] KostaEdu Scouter를 사용한 JMeter 실습 과정 (3/3)일차
3일차
#####.Correlation 중요성
#. .net으로 돌아가는 부하 테스트는 프레임웍 구조가 코릴레이를 할 수 밖에 없는 구조
ㅁ.레코딩할 때 봤던 request, response를 보고 동적으로 만들어진 것들을 확인해야한다.
#####.response assertion
#.welcome test 001이라는 문구가 나오면 성공
#.변수처리를 하게 되면
#.request한 페이지가 맞는지 assertion을 꼭 해야한다.
#.이유는 정확한 대상에 부하가 가는지를 확인해야 하기 때문이다.
#.json타입으로 오게 되면 json path를 사용할 수 있다.(더 쉬워진다)
#.XPath타입도 마찬가지이다.
#.일반적인 것은 response assertion이다.
#.기본적으로 베리피케이션은 전체 스레드마다 사용하는 것이 원칙이다.
#.부하를 줘야하는 페이지를 명확하게 아는 것이 가장 중요하다.
#####.TG_Thread Group
#.모델 구성 시 F12를 이용하여 직접 작성할 수도 있다
#.sourcePage의 경우 보통 암호화가 되어있기 때문에 코릴레이션화 시킨다.
#.CSV를 등록할 때에는 절대경로보다는 상대경로를 사용하는 것이 좋다.(../data/member.csv)
#.스크립트 구조를 짤 때는 gloval Script를 상단에 위치하고, local script를 하위에 위치하는게 가독성이 좋다
ㅁ.ex)variables, defaults, cookieManager /// LISTENER /// TRY /// 부하모델 /// Recorder
#####.Logic Controller
#.If Loop While은 거의 쓰지 않는다.
#.Once OnlyController
ㅁ.해당 컨트롤러 하위에 속성은 단 한번만 실행된다.
ㅁ.그래서 Login, CSV(current Thread Group으로 바꿔주는게 좋다)는 once컨트롤러에 넣어준다.
#####.Response Time Graph
#.리스너 종류도 한 곳에 모아주는 것이 좋다
#.결과 파일을 남겨야 한다.
#.JMeter의 결과 파일은 뭐든지 남겨 놓아야한다.
#.../result 디렉토리를 만든다.
ㅁ.해당경로를 설정해서 jlt으로 만든다
ㅁ./result/jpetstore.jtl
######.Constant Time
#.default는 300ms -> 1000ms
#####.Ramp up period
#.비탈길이라는 의미
#.비탈길을 올라가는 의미
#.동시에 팍 가는게 아니라 천천히 한명씩 올라간다는 의미
#.user 60 /// ramp 60 /// Duration 300 ---> 60명의 유저가 60초동안 나눠서 부하를 준다. 300초동안
ㅁ.60초동안 한명씩 증가하는 패턴이다. 60초가 되면 60명의 가상유저가 다 들어간다.
#####.Summary Report
#.검색, 장바구니 등 request를 묶어서 비지니스 TPS를 계산하지만
#.Scouter는 각각을 하나의 트랜잭션으로 보기 때문에
#.고객사와 잘 소통하여 이해관계를 형성해야 한다.
##########.JMeter Plugin
#####.category
#.Jmeter에는 카테고리 별로 95개의 Plugin을 제공한다.
#.https://jmeter-plugins.org/install/Install/
ㅁ.plugins-manager.jar 파일을 /lib/ext 디렉토리에 복사한 후
ㅁ.Available Plugins -> jpgc - Standard Set 설치
#####.향상된 Listener
#.jp@gc Acitve
#.jp@gc AcitveResponse
#.jp@gc Threads Over Time
#.jp@gc Trans perSec
#####.자원 모니터링 Perfmon
#.Perfmon Agent를 각 서버에 심는다.
#.Agent는 주기적으로 JMeter에게 자원 정보를 전달한다.
#.Summary Report 분석 자료는 무조건 남겨 놓는다.
#.모니터링 대상은 CPU, Process, Disk I/O, Network등이 있다.
#.결과 파일의 머지를 피하기 위해서는 ../result/${__time(YMDHMS,)}_jpetstore.jtl를 입력
#####.Pacing Time
#.지정한 시간 이내에 트랜잭션이 완료되면 남은 시간을 대기한다.
#.트랜잭션이 지정 시간 이내에 완료될 경우 성능 목표 TPS기준을 보다 정확하게 할 수 있는 특징
#.응답 시간이 Pacing 시간 이내일 경우
#.PT 50 = RespTime 10 + Wait 40
#.PT 50 = RespTime 30 + Wati 20
ㅁ.응답 시간이 Pacing Time 이상일 경우
ㅁ.RespTime = PT 50 + 지연시간 10
#####.TPS 제어 (부하량 제어)
#.Pacing Controllr
ㅁ.부하량 제어를 위해 Load Runner의 Pacing을 참고하여 개발함
ㅁ.jpetstore 부하량에 맞게 Pacing Controller를 이용하여 부하를 발생
#.Rmap Model, saturation (포화 지점) test
#pacing Controller는 시간별, 단계별로 나누어 점차 부하를 주는 컨트롤러이다.
#.시간별, 단계별이란?
ㅁ.지정된 시간을 정하고 단계(ramp)별로 사용자수를 증가시킴
ㅁ.ex)단계를 5번 씩 나눠서 가상 유저를 10식 증가, 단계 별로 5분씩 부하를 줌
#####.https Recording (SSL)
#.NAVER에 부하를 주려면 https
#.설정 -> 인증서 -> 인증서 설치 -> 인증서 보기
#.->Jmeter roopt -> 가져오기 -> 신뢰된 인증기관(체크)
#.->certmgr.msc 확인
#####.Proxy 서버가 제한될 경우
#.어떻게든 Proxy server를 허용하게 하는게 좋지만!
#.안될 경우는 크롬 F12 개발자 모드로 진입하여 key값을 가져와서 작업해야한다.
#####.https Recording(har -> jmx)
#.크롬 F12 개발자 모드로 진입
#.Network tap
ㅁ.아래 화살표 모양 Exprt HAR 다운로드
ㅁ.www.naver.com.har를 확인
#.HAR파일 저장하여 열어보면 json형태의 자료가 있다.
ㅁ.편집기 또는 메모장으로 열어본 후 "ctrl + f"로 uid를 검색해보자
ㅁ.uid = unique identifier
#har -> jmx로 변환
ㅁ.https://converter.blazemeter.com/
ㅁ.해당사이트로 접속하여 www.naver.com.har을 jmx파일로 바꿔준다
#.변환된 jmx를 Jmeter로 열어보면 Cookie Manager의 uid값이 같음을 확인할 수 있다.