본문 바로가기

테스트툴/JMeter

JMeter Regular Expression Extractor

Regular Expression Extractor ? HTTP Request Sampler로 웹 서버에서 받아온 결괏값을 정규식을 이용해 파싱 해서 값을 찾아내는 방법


검색 결과에서 URL 얻어오는 실습

저와 같이 완전 초심자가 Apache JMeter 책을 사용하면 설명이 부족할 경우가 있을 것입니다

이 게시물이 조금이라도 도움이 되길 바랍니다

 

/jmeter/search/index.html에서 검색 결과
/jmeter/search/search 소스 일부

class="url">( <a href="http://www.java.com/"와 같은 코드를 이용해 테스트

 

Test Plan에 Thread Group Add

Loop Count는 10

Thread Group에 HTTP Request Sampler인 /jmeter/search/search Add

/jmeter/search/search에 CSV Data Set Config Add

CSV Data Set Config에는 검색할 키워드들이 담겨 있습니다

Browse...를 클릭하여 CSV 파일을 불러옵니다

jmeter/search/search에 Regular Expression Extractor Add

Name of created variable - 변수

Regular Expression - 원하는 문자열을 얻어올 때 사용할 정규표현식이다. 위 설명과 같이

class="url">( <a href="http://www.java.com/" 와 같은 코드를 이용할 것이므로 위와 같이 입력해줍니다

Match No. - 1개 이상의 문자열이 매칭 되었을 때 어떤 값을 설정할 것인지 정한다. 랜덤으로 할 것이므로 0

 

Regular Expression Extractor로 추출된 url을 요청하는 HTTP Request Sampler 추가

Name은 나중에 View Results Tree에서 보기 편하게 하기 위해 next - ${next_url}로 표현합니다 

위에서 Regular Expression Extractor의 변수명을 next_url로 설정함으로 인해 View Results Tree 리스트에는

next - www.python.org와 같이 표시 

http://www.embarcadero.com/products/interbase에서 

http - protocol

www.emabarcadero.com - IP

products/interbase - Path

설정된 변수명 뒤에 추가로 붙는 _gNum은 N번째 그룹의 값이라는 것을 의미합니다

 

여태 설정한 것을 run 하면

위와 같은 결과를 얻을 수 있습니다

오류 하나는 /jmeter/search/search의 결과 중 CSV 파일에 정규식에 부합하는 문자열이 없기 때문입니다

간단히 말하면 검색 결과에 url이 존재하지 않는다는 의미입니다


정규표현식

JMeter의 정규표현식은 Perl의 문법과 유사하므로 perldoc.perl.org/perlretut

 

perlretut - Perl regular expressions tutorial - Perldoc Browser

Principle 3: If there are two or more elements in a regexp, the leftmost greedy quantifier, if any, will match as much of the string as possible while still allowing the whole regexp to match. The next leftmost greedy quantifier, if any, will try to match

perldoc.perl.org

위 페이지를 참고해도 괜찮습니다

대신, Perl처럼 '//'로 감싸지 않아도 됩니다

간단히 요약하자면

Charater

분류

설명

( )

grouping

Group을 생성

[ ]

character classes

[0-9] : 숫자

[a-z] : 영문 소문자

[ab^c] : c를 포함하지 않는 a, b 문자

{ }

repetition

반복을 몇 번할지

[a-z]{4,5} : 영소문자가 4~5번 반복

* + ?

repetition

* : 0번 이상 반복

+ : 1번 이상 반복

? : 첫 번째 Match가 되면 검색 중지

.

wild-card character

모든 Charater

\

escape character

Meta Character에 해당하는 문자를 쓰려면 '\'로 escape 해야 한다

|

alternatives

선택적인 적용

^$

start and end of

^는 라인의 시작, $는 라인의 끝

정규표현식을 정확히 작성했는지 확인하는 방법은 View Result Tree를 활용합니다

RegExp Tester를 보면 원하는 정규표현식을 입력하고 실제로 결과가 어떻게 나오는지 확인할 수 있습니다

'테스트툴 > JMeter' 카테고리의 다른 글

JMeter Logic Controller  (0) 2021.04.13
JMeter Regular Expression 설정 레퍼런스  (0) 2021.04.09
JMeter HTTP Cookie Manager  (0) 2021.03.18
JMeter를 이용한 간단한 test plan  (0) 2021.03.08
성능 테스트  (0) 2021.03.04