20. 함수와 변수

JMeter 함수는 샘플러의 필드나 테스트 트리의 다른 요소를 채울 수 있는 특수 값입니다. 함수 호출은 다음과 같습니다.

${__functionName(var1,var2,var3)}

여기서 "__functionName"은 함수의 이름과 일치합니다. ${__time(YMD)}
와 같이 함수에 전송된 매개변수를 괄호로 묶습니다 . 실제 매개변수는 함수마다 다릅니다. 매개변수가 필요하지 않은 함수는 괄호를 생략할 수 있습니다(예 : ${__threadNum} ) .

함수 매개변수에 쉼표가 있으면 " \ "로 이스케이프 처리해야 합니다. 그렇지 않으면 JMeter가 이를 매개변수 구분 기호로 처리합니다. 예를 들어:

${__time(EEE\, d MMM yyyy)}
쉼표가 이스케이프 처리되지 않은 경우 - 예: ${__javaScript(Math.max(2,5))} - 다음과 같은 오류가 발생합니다.
오류 - jmeter.functions.JavaScript: Javascript 처리 오류: [Math.max(2]
    org.mozilla.javascript.EvaluatorException: 누락된 인수 목록(<cmd>#1)
 
이는 문자열 " Math.max(2,5) "가 __javascript 함수에 대한 두 개의 매개변수로 처리되기 때문입니다.
Math.max(25)
기타 오류 메시지가 발생할 수 있습니다.

변수는 다음과 같이 참조됩니다.

${변수}

정의되지 않은 함수나 변수가 참조되면 JMeter는 오류를 보고/기록하지 않습니다. 참조는 변경되지 않고 반환됩니다. 예를 들어 UNDEF 가 변수로 정의되지 않은 경우 ${UNDEF}의 값은 $ { UNDEF} 입니다. 변수, 함수(및 속성)는 모두 대소문자를 구분합니다. JMeter는 사용하기 전에 변수 이름에서 공백을 잘라냅니다. 예를 들어 ${__Random(1,63, LOTTERY )} 는 ' LOTTERY ' 대신 '  LOTTERY  ' 변수를 사용합니다 .

속성은 변수와 동일하지 않습니다. 변수는 스레드에 대해 로컬입니다. 속성은 모든 스레드에 공통적이며 __P 또는 __property 함수를 사용하여 참조해야 합니다.
예를 들어 C:\test\${test} 와 같은 Windows 경로의 변수 앞에 \ 를 사용할 때 \ 를 이스케이프 처리해야 합니다. 그렇지 않으면 JMeter가 변수를 해석하지 않습니다(예: C:\\test\\${test} ) . 또는 경로 구분 기호 대신 / 를 사용하십시오. 예를 들어 C:/test/${test} - Windows JVM은 필요에 따라 구분 기호를 변환합니다.

느슨하게 유형으로 그룹화된 함수 목록입니다.

기능 유형이름논평부터
정보 스레드 번호스레드 번호 가져오기1.X
정보 스레드 그룹 이름스레드 그룹 이름 가져오기4.1
정보 샘플러 이름샘플러 이름(레이블) 가져오기2.5
정보 기계IP로컬 컴퓨터 IP 주소 얻기2.6
정보 기계 이름로컬 머신 이름 얻기1.X
정보 시각다양한 형식으로 현재 시간 반환2.2
정보 시간 이동지정된 초/분/시/일을 추가하여 다양한 형식의 날짜를 반환합니다.3.3
정보 통나무메시지를 기록(또는 표시)하고 값을 반환합니다.2.2
정보 로그인메시지 기록(또는 표시)(빈 반환 값)2.2
입력 문자열에서 파일파일에서 한 줄 읽기1.9
입력 파일로 문자열전체 파일 읽기2.4
입력 CSV읽기CSV로 구분된 파일에서 읽기1.9
입력 XPathXPath 표현식을 사용하여 파일에서 읽기2.0.3
입력 StringToFile파일에 문자열 쓰기5.2
계산 카운터증가하는 숫자를 생성1.X
서식 날짜시간변환날짜 또는 시간을 소스에서 대상 형식으로 변환4.0
계산 요람다이제스트 생성(SHA-1, SHA-256, MD5...)4.0
계산 정수정수 추가1.8.1
계산 롱섬긴 숫자 추가2.3.2
계산 무작위의난수를 생성1.9
계산 임의 날짜특정 날짜 범위 내에서 임의의 날짜 생성3.3
계산 RandomFromMultipleVars| 로 구분된 변수 집합의 값에서 요소를 추출합니다.3.1
계산 랜덤 문자열임의의 문자열 생성2.6
계산 UUID임의의 유형 4 UUID 생성2.9
스크립팅 그루비Apache Groovy 스크립트 실행3.1
스크립팅 빈쉘BeanShell 스크립트 실행1.X
스크립팅 자바스크립트JavaScript(Nashorn) 처리1.9
스크립팅 jexl2Commons Jexl2 표현식 평가jexl2(2.1.1)
스크립팅 jexl3Commons Jexl3 표현식 평가jexl3 (3.0)
속성 isPropDefined 속성이 있는지 테스트4.0
속성 재산 속성을 읽다2.0
속성 속성 읽기(약식 방법)2.0
속성 setPropertyJMeter 속성 설정2.1
변수 나뉘다문자열을 변수로 분할2.0.2
변수 평가변수 표현식 평가2.3.1
변수 평가변수변수에 저장된 표현식 평가2.3.1
속성 isVarDefined 변수가 있는지 테스트4.0
변수 V변수 이름 평가2.3RC3
숫자 목록에서 유니코드 문자 값 생성2.3.3
변경 케이스다른 모드에 따라 대소문자 변경4.0
탈출 HTMLHTML 인코딩을 사용하여 문자열 인코딩2.3.3
탈출OroRegexpCharsORO 정규식에서 사용하는 인용 메타 문자2.9
탈출XmlXML 인코딩을 사용하여 문자열 인코딩3.2
정규식 함수정규식을 사용하여 이전 응답 구문 분석1.X
탈출Java 이스케이프를 포함하는 문자열 처리(예: \n & \t)2.3.3
이스케이프 HTMLHTML 인코딩 문자열 디코딩2.3.3
URL디코드application/x-www-form-urlencoded 문자열 디코딩2.10
urlencode문자열을 application/x-www-form-urlencoded 문자열로 인코딩2.10
테스트 계획 이름현재 테스트 계획의 이름 반환2.6

20.1 함수가 할 수 있는 일

함수에는 사용자 정의 정적 값(또는 변수)과 내장 함수의 두 가지 종류가 있습니다.
사용자 정의 정적 값을 사용하면 테스트 트리가 컴파일되고 실행을 위해 제출될 때 정적 값으로 대체될 변수를 정의할 수 있습니다. 이 교체는 테스트 실행이 시작될 때 한 번 발생합니다. 이것은 모든 HTTP 요청의 DOMAIN 필드를 대체하는 데 사용할 수 있습니다. 예를 들어 동일한 테스트로 다른 서버를 대상으로 테스트를 변경하는 것이 간단합니다.

변수는 현재 중첩될 수 없습니다. 즉 , ${Var${N}} 이(가) 작동하지 않습니다. ${__V( Var ${N})} __V (변수) 함수를 사용하여 이를 수행할 수 있습니다 . ${__BeanShell(vars.get("Var${N}")} 을 사용할 수도 있습니다 .

이러한 유형의 교체는 기능 없이 가능하지만 덜 편리하고 직관적이지 않았습니다. 샘플러의 빈 값을 채울 기본 구성 요소를 사용자가 생성해야 했습니다. 변수를 사용하면 빈 값을 채우는 것이 아니라 주어진 값의 일부만 바꿀 수 있습니다.

내장 함수를 사용하면 사용자는 이전 응답 데이터, 함수가 속한 스레드, 시간 및 기타 여러 소스를 기반으로 런타임에 새 값을 계산할 수 있습니다. 이 값은 테스트 과정 동안 모든 요청에 ​​대해 새로 생성됩니다.

기능은 스레드 간에 공유됩니다. 테스트 계획에서 함수 호출이 발생할 때마다 별도의 함수 인스턴스가 처리됩니다.

20.2 함수와 변수는 어디에 사용할 수 있습니까?

함수와 변수는 테스트 구성 요소의 모든 필드에 작성할 수 있습니다(TestPlan 제외 - 아래 참조). 일부 필드는 숫자를 예상하기 때문에 임의의 문자열을 허용하지 않으므로 함수를 허용하지 않습니다. 그러나 대부분의 필드는 기능을 허용합니다.

테스트 계획에서 사용되는 기능에는 몇 가지 제한 사항이 있습니다. 함수가 처리될 때 JMeter 스레드 변수가 완전히 설정되지 않았으므로 매개변수로 전달된 변수 이름이 설정되지 않고 변수 참조가 작동하지 않으므로 split()regex() 및 변수 평가 함수가 ' 일. threadNum() 함수 는 작동하지 않습니다(테스트 계획 수준에서 의미가 없음). 다음 기능은 테스트 계획에서 정상적으로 작동해야 합니다.

  • 정수
  • 롱섬
  • 기계 이름
  • 빈쉘
  • 그루비
  • 자바스크립트
  • jexl2/jexl3
  • 무작위의
  • 시각
  • 속성 함수
  • 로그 함수

구성 요소는 별도의 스레드에서 처리됩니다. 따라서 __threadNum 과 같은 함수 는 사용자 정의 변수와 같은 요소에서 제대로 작동하지 않습니다. 또한 UDV 요소에 정의된 변수는 요소가 처리될 때까지 사용할 수 없습니다.

SQL 코드(등)에서 변수/함수 참조를 사용할 때 텍스트 문자열에 필요한 모든 따옴표를 포함하는 것을 기억하십시오.
name='${VAR}'인 테이블에서 항목 선택
~ 아니다
name=${VAR}인 테이블에서 항목 선택
( VAR 자체에 따옴표가 포함되지 않은 경우)

20.3 변수와 함수를 참조하는 방법

테스트 요소에서 변수 참조는 변수 이름을 ' ${ ' 및 ' } '로 묶음으로써 수행됩니다.

함수는 같은 방식으로 참조되지만 관례에 따라 함수 이름은 사용자 값 이름 * 과의 충돌을 피하기 위해 " __ "로 시작합니다 . 일부 함수는 구성하기 위해 인수를 사용하며 이는 쉼표로 구분된 괄호 안에 있습니다. 함수에 인수가 없으면 괄호를 생략할 수 있습니다.

쉼표를 포함하는 인수 값은 필요에 따라 이스케이프해야 합니다. 매개변수 값에 쉼표를 포함해야 하는 경우 ' \, '와 같이 이스케이프하십시오. 이것은 예를 들어 자바스크립트, Beanshell, Jexl, groovy와 같은 스크립팅 기능에 적용되며, 여기서 스크립트 메소드 호출에 필요할 수 있는 쉼표를 이스케이프 처리해야 합니다.

${__BeanShell(vars.put("이름"\,"값"))}

또는 테스트 계획과 같이 스크립트를 변수로 정의할 수 있습니다.

스크립트 vars.put("이름","값")
그러면 다음과 같이 스크립트를 참조할 수 있습니다.
${__BeanShell(${SCRIPT})}
변수가 해당 값으로 대체되기 전에 함수 호출이 구문 분석되기 때문에 SCRIPT 변수 에서 쉼표를 이스케이프할 필요가 없습니다 . 이것은 Javascript, Jexl 및 BeanShell 스크립트를 테스트하는 데 사용할 수 있으므로 JSR223 또는 BeanShell 샘플러와 함께 잘 작동합니다.

함수는 변수 및 기타 함수를 참조할 수 있습니다. 예를 들어 ${__XPath(${__P(xpath.file),${XPATH})} 는 " xpath.file " 속성 을 파일 이름으로 사용하고 변수 XPATH 의 내용을 다음과 같이 사용합니다. 검색할 표현입니다.

JMeter는 다양한 내장 함수에 대한 함수 호출을 구성하는 데 도움이 되는 도구를 제공합니다. 그런 다음 복사하여 붙여넣을 수 있습니다. 함수가 다른 함수에 대한 매개변수가 될 수 있고 리터럴로 의도한 값만 이스케이프해야 하므로 값을 자동으로 이스케이프하지 않습니다.

문자열에 백슬래시(' \ ')가 포함되어 있고 함수 또는 변수 참조도 포함되어 있는 경우 ' $ ' 또는 ' , ' 또는 ' \ ' 앞에 백슬래시가 나타나면 제거됩니다 . 이 동작은 쉼표 또는 문자열 ${ 을 포함하는 중첩 함수를 허용하는 데 필요합니다 . 문자열에 함수나 변수 참조가 포함되어 있지 않으면 ' $ ' 또는 ' , ' 또는 ' \ ' 앞의 백슬래시 가 제거되지 않습니다.

변수 또는 함수의 값은 __logn() 함수 를 사용하여 보고할 수 있습니다 . __logn () 함수 참조는 변수가 정의된 후 테스트 계획의 어느 곳에서나 사용할 수 있습니다. 또는 Java 요청 샘플러를 사용하여 변수 참조가 포함된 샘플을 생성할 수 있습니다. 출력은 적절한 리스너에 표시됩니다. 트리 뷰 리스너에서 변수 등의 값을 표시하는 데 사용할 수 있는 디버그 샘플러 가 있습니다.

* 내장 함수와 동일한 이름으로 사용자 정의 정적 변수를 정의하면 정적 변수가 내장 함수를 재정의합니다.

20.4 함수 도우미 대화 상자

함수 도우미 대화 상자는 JMeter의 도구 메뉴에서 사용할 수 있습니다.

함수 도우미 대화 상자
함수 도우미 대화 상자

함수 도우미를 사용하여 풀다운에서 함수를 선택하고 해당 인수에 값을 할당할 수 있습니다. 표의 왼쪽 열은 인수에 대한 간략한 설명을 제공하고 오른쪽 열은 해당 인수의 값을 쓰는 곳입니다. 다른 함수는 다른 인수를 취합니다.

이 작업을 완료하고 "생성" 버튼을 클릭하면 원하는 위치에 복사하여 테스트 계획에 붙여넣을 수 있는 적절한 문자열이 생성됩니다.

20.5 함수

__정규식 함수

Regex 함수는 사용자가 제공한 정규식을 사용하여 이전 응답(또는 변수 값)을 구문 분석하는 데 사용됩니다. 이 함수는 변수 값이 채워진 템플릿 문자열을 반환합니다.

__regexFunction 은 나중에 사용할 수 있도록 값을 저장할 수도 있습니다. 여섯 번째 매개변수에는 참조 이름을 지정할 수 있습니다. 이 함수가 실행된 후 사용자 정의 값에 대한 구문을 사용하여 나중에 동일한 값을 검색할 수 있습니다. 예를 들어 " refName "을 여섯 번째 매개변수로 입력하면 다음을 사용할 수 있습니다.

  • ${refName} 은(는) 이 함수에 의해 구문 분석된 두 번째 매개변수("대체 문자열에 대한 템플릿")의 계산된 결과를 참조합니다.
  • ${refName_g0} - 이 함수로 구문 분석된 전체 일치를 참조합니다.
  • ${refName_g1} 이 함수에 의해 구문 분석된 첫 번째 그룹을 참조합니다.
  • ${refName_g#} 는 이 함수에 의해 구문 분석된 n 번째 그룹을 참조합니다.
  • ${refName_matchNr} 은 이 함수에서 찾은 그룹 수를 나타냅니다.
분산 테스트를 사용 하는 경우 스트리핑이 되지 않도록 모드를 전환해야 합니다( jmeter.properties 참조). 버그 56376 을 참조하세요.

매개변수

기인하다
설명
필수의
첫 번째 인수
첫 번째 인수는 응답 데이터에 적용할 정규식입니다. 그것은 모든 경기를 잡을 것입니다. 템플릿 문자열에서 사용하려는 이 표현식의 모든 부분은 괄호로 묶어야 합니다. 예: <a href="(.*)"> . 이렇게 하면 링크 값을 가져와 첫 번째 그룹으로 저장합니다(그룹은 1개만 있음). 다른 예: <input type="hidden" name="(.*)" value="(.*)"> . 이것은 이름을 첫 번째 그룹으로 가져오고 값을 두 번째 그룹으로 가져옵니다. 이 값은 템플릿 문자열에서 사용할 수 있습니다.
두 번째 인수
이것은 런타임에 함수를 대체할 템플릿 문자열입니다. 정규식에 캡처된 그룹을 참조하려면 $[group_number]$ 구문을 사용합니다 . 예: $1$ 또는 $2$ . 템플릿은 모든 문자열이 될 수 있습니다.
세 번째 인수
세 번째 인수는 사용할 일치 항목을 JMeter에 알려줍니다. 정규 표현식에서 많은 일치 항목을 찾을 수 있습니다. 네 가지 선택이 있습니다.
  • 정수 - 해당 일치를 사용하도록 JMeter에 지시합니다. 처음 발견된 일치 항목의 경우 ' 1 ', 두 번째 일치 항목의 경우 ' 2 ' 등
  • RAND - 무작위로 일치하는 항목을 선택하도록 JMeter에 지시합니다.
  • ALL - JMeter에게 모든 일치 항목을 사용하고 각각에 대한 템플릿 문자열을 만든 다음 모두 함께 추가하도록 지시합니다. 이 옵션은 거의 사용되지 않습니다.
  • 0과 1 사이의 부동 소수점 수 - 가장 가까운 정수로 반올림된 (number_of_matches_found * float_number) 공식을 사용하여 X 번째 일치 항목을 찾도록 JMeter에 지시합니다.
아니요, 기본값=1
네 번째 인수
위의 인수 값에 대해 ' ALL '이 선택되면 이 인수는 템플릿 값의 추가된 각 복사본 사이에 삽입됩니다.
아니
다섯 번째 인수
일치하는 항목이 없는 경우 반환되는 기본값
아니
여섯 번째 인수
이 함수에 의해 구문 분석된 값을 재사용하기 위한 참조 이름입니다.
저장된 값은 ${refName} (대체 템플릿 문자열) 및 ${refName_g#} 입니다. 여기서 " # "은 정규식의 그룹 번호입니다(" 0 "은 전체 일치를 참조하는 데 사용할 수 있음).
아니
일곱 번째 인수
변수 이름을 입력합니다. 지정된 경우 이전 샘플 결과를 사용하는 대신 변수 값이 입력으로 사용됩니다.
아니
^^

__카운터

카운터는 호출될 때마다 1부터 시작하여 매번 +1씩 증가하는 새 번호를 생성합니다. 카운터는 시뮬레이션된 각 사용자의 값을 별도로 유지하거나 모든 사용자에 대해 동일한 카운터를 사용하도록 구성할 수 있습니다. 각 사용자의 값이 별도로 증가하면 테스트 계획을 통해 반복 횟수를 계산하는 것과 같습니다. 전역 카운터는 해당 요청이 실행된 횟수를 계산하는 것과 같습니다.

카운터는 정수 변수를 사용하여 카운트를 유지하므로 최대값은 2,147,483,647입니다.

카운터 함수 인스턴스는 완전히 독립적입니다. 전역 카운터 - " FALSE " -는 각 카운터 인스턴스에 의해 별도로 유지 관리됩니다.

동일한 반복에서 여러 __counter 함수 호출은 값을 더 이상 증가시키지 않습니다.
각 샘플에 대해 증가하는 카운트를 원하면 사용자 매개변수 와 같은 전처리기의 기능을 사용하십시오 .

매개변수

기인하다
설명
필수의
첫 번째 인수
각 시뮬레이션된 사용자의 카운터가 다른 사용자와 독립적이고 분리되도록 유지하려면 TRUE 입니다. 전역 카운터의 경우 FALSE 입니다.
두 번째 인수
이 함수에 의해 생성된 값을 재사용하기 위한 참조 이름입니다.
저장된 값은 ${refName} 형식 입니다. 이렇게 하면 하나의 카운터를 유지하고 여러 위치에서 해당 값을 참조할 수 있습니다.
아니
^^

__threadNum

스레드 번호 함수는 단순히 현재 실행 중인 스레드의 번호를 반환합니다. 이 숫자는 해당 ThreadGroup과 관련하여 로컬에서만 고유합니다. 즉, 이 기능의 관점에서 한 스레드 그룹의 스레드 #1은 다른 스레드 그룹의 스레드 #1과 구별할 수 없습니다.

이 함수는 1과 실행 중인 스레드의 최대 수 사이의 숫자를 반환합니다. JMeterContext 개체( ctx 변수) 와 함께 JSR223 코드를 사용하는 경우 아래 코드는 0에서 (실행 중인 스레드의 최대 수에서 1을 뺀 값) 사이의 숫자를 반환합니다.
ctx.getThreadNum()

이 함수에 대한 인수가 없습니다.

사용 예:

${__threadNum}
1과 포함하는 스레드 그룹에 구성된 실행 중인 스레드의 최대 수 사이의 숫자를 반환합니다.

이 기능은 별도의 스레드에서 실행되는 구성 요소(예: 사용자 정의 변수)에서 작동하지 않습니다. 테스트 계획에서 사용하는 것도 의미가 없습니다.
^^

__스레드 그룹 이름

스레드 그룹 이름 함수는 단순히 실행 중인 스레드 그룹의 이름을 반환합니다.

이 함수에 대한 인수가 없습니다.

사용 예:

${__threadGroupName}

이 기능은 별도의 스레드에서 실행되는 구성 요소(예: 사용자 정의 변수)에서 작동하지 않습니다. 테스트 계획에서 사용하는 것도 의미가 없습니다.
^^

__intSum

intSum 함수는 둘 이상의 정수 값의 합을 계산하는 데 사용할 수 있습니다.

참조 이름은 선택 사항이지만 유효한 정수가 아니어야 합니다.

매개변수

기인하다
설명
필수의
첫 번째 인수
첫 번째 정수 값입니다.
두 번째 인수
두 번째 정수 값입니다.
n번째 인수
n 번째 정수 값입니다.
아니
마지막 인수
이 함수에서 계산한 값을 재사용하기 위한 참조 이름입니다. 지정된 경우 참조 이름에는 숫자가 아닌 문자가 하나 이상 포함되어야 합니다. 그렇지 않으면 추가할 다른 int 값으로 처리됩니다.
아니

예:

${__intSum(2,5,MYVAR)}
7(2+5)을 반환하고 결과를 MYVAR 변수에 저장합니다. 따라서 ${MYVAR} 는 7과 같습니다.
${__intSum(2,5,7)}
14(2+5+7)를 반환하고 결과를 MYVAR 변수에 저장합니다.
${__intSum(1,2,5,${MYVAR})}
MYVAR 값이 8과 같으면 16을 반환합니다. 1+2+5+${MYVAR})

^^

__longSum

longSum 함수는 둘 이상의 긴 값의 합을 계산하는 데 사용할 수 있습니다. 값이 -2147483648 ~ 2147483647 사이에 있지 않을 것임을 알 때마다 __intSum 대신 이 함수를 사용하십시오.

매개변수

기인하다
설명
필수의
첫 번째 인수
첫 번째 긴 값입니다.
두 번째 인수
두 번째 긴 값입니다.
n번째 인수
n 번째 긴 값입니다.
아니
마지막 인수
이 함수에서 계산한 값을 재사용하기 위한 참조 이름입니다. 지정된 경우 참조 이름에는 숫자가 아닌 문자가 하나 이상 포함되어야 합니다. 그렇지 않으면 추가할 다른 긴 값으로 처리됩니다.
아니

예:

${__longSum(2,5,MYVAR)}
7(2+5)을 반환하고 결과를 MYVAR 변수에 저장합니다. 따라서 ${MYVAR} 는 7과 같습니다.
${__longSum(2,5,7)}
14(2+5+7)를 반환하고 결과를 MYVAR 변수에 저장합니다.
${__longSum(1,2,5,${MYVAR})}
MYVAR 값이 8과 같으면 16을 반환합니다. 1+2+5+${MYVAR})

^^

__StringFromFile

StringFromFile 함수는 텍스트 파일에서 문자열을 읽는 데 사용할 수 있습니다. 이것은 많은 변수 데이터가 필요한 테스트를 실행하는 데 유용합니다. 예를 들어 뱅킹 애플리케이션을 테스트할 때 100개 또는 1000개의 다른 계좌 번호가 필요할 수 있습니다.

사용하기 더 쉬울 수 있는 CSV 데이터 세트 구성 테스트 요소 도 참조하세요 . 그러나 현재 여러 입력 파일을 지원하지 않습니다.

호출될 때마다 파일에서 다음 줄을 읽습니다. 모든 스레드는 동일한 인스턴스를 공유하므로 다른 스레드는 다른 행을 갖게 됩니다. 파일의 끝에 도달하면 최대 루프 수에 도달하지 않는 한 처음부터 다시 읽기 시작합니다. 테스트 스크립트에 함수에 대한 여러 참조가 있는 경우 파일 이름이 같더라도 각각은 파일을 독립적으로 엽니다. [값을 다른 곳에서 다시 사용하려면 각 함수 호출에 대해 다른 변수 이름을 사용하십시오.]

함수 인스턴스는 스레드 간에 공유되며, 다음 입력 라인이 필요한 스레드에 의해 파일이 (다시) 열리므로 파일 이름의 일부로 threadNumber 를 사용하면 예측할 수 없는 동작이 발생합니다.

파일을 열거나 읽는 중에 오류가 발생하면 함수는 " **ERR** " 문자열을 반환합니다.

매개변수

기인하다
설명
필수의
파일 이름
파일 이름의 경로입니다. (경로는 JMeter 시작 디렉토리에 상대적일 수 있습니다.) 선택적 시퀀스 번호를 사용하는 경우 경로 이름은 DecimalFormat에 전달하기에 적합해야 합니다. 예는 아래를 참조하십시오.
변수 이름
이 함수에 의해 생성된 값을 재사용하기 위한 참조 이름 - refName -. 저장된 값은 ${refName} 형식 입니다. 기본값은 " StringFromFile_ "입니다.
아니
시작 시퀀스 번호
초기 시퀀스 번호(생략된 경우 종료 시퀀스 번호는 루프 카운트로 처리됨)
아니
끝 시퀀스 번호
최종 순번(생략 시 순번은 제한 없이 증가할 수 있음)
아니

파일 이름 매개변수는 파일이 열리거나 다시 열릴 때 확인됩니다.

참조 이름 매개변수(제공된 경우)는 함수가 실행될 때마다 확인됩니다.

시퀀스 번호 사용:

선택적 시퀀스 번호를 사용할 때 경로 이름은 java.text.DecimalFormat 의 형식 문자열로 사용됩니다 . 현재 시퀀스 번호가 유일한 매개변수로 전달됩니다. 선택적 시작 번호를 지정하지 않으면 경로 이름이 있는 그대로 사용됩니다. 유용한 서식 순서는 다음과 같습니다.

#
선행 0이나 공백 없이 숫자를 삽입하십시오.
000
필요한 경우 선행 0과 함께 세 자리로 압축된 숫자를 삽입합니다.
형식 문자열의 사용
다음은 몇 가지 형식 문자열과 생성할 해당 시퀀스입니다.
핀#'.'데이트
선행 0 없이 숫자를 생성하고 점을 문자 그대로
pin1.dat , …, pin9.dat , pin10.dat , …, pin9999.dat 처럼 취급합니다.
pin000'.'데이트
점을 유지하면서 선행 0을 생성합니다. 숫자가 이 형식이 제안하는 세 자리보다 더 많은 숫자를 갖기 시작하면 시퀀스는 pin001.dat
,pin099.dat , …, pin999.dat , …
핀'.'데이트#
점을 유지하면서 선행 0 없이 숫자를 추가하고
pin.dat1 , …, pin.dat9 , …, pin.dat999 를 생성합니다.

서식 문자보다 더 많은 숫자가 필요한 경우 필요에 따라 숫자가 확장됩니다.
서식 지정 문자가 해석되지 않도록 하려면 작은따옴표로 묶습니다. " . "는 형식 지정 문자이며 작은따옴표로 묶어야 합니다 ( #.000. 소수점도 " . "인 로케일에서 예상대로 작동함)
. 다른 로케일(예: fr )에서는 소수점 " , " - 이는 " #. "이 " nnn, "가 됨을 의미합니다. 자세한 내용은 DecimalFormat
문서를 참조 하십시오.
경로 이름에 특수 형식 지정 문자가 포함되어 있지 않으면 현재 시퀀스 번호가 이름에 추가되고, 그렇지 않으면 형식 지정 지침에 따라 번호가 삽입됩니다.
시작 시퀀스 번호가 생략되고 끝 시퀀스 번호가 지정되면 시퀀스 번호는 루프 카운트로 해석되며 파일은 최대 " end " 횟수만큼 사용됩니다. 이 경우 파일 이름은 형식이 지정되지 않습니다.
${__StringFromFile(PIN#'.'DAT,,1,2)} - PIN1.DAT , PIN2.DAT 읽기
${__StringFromFile(PIN.DAT,,,,2)} - PIN.DAT 를 두 번 읽습니다.
" . " 위 의 PIN.DAT 에서인용 하지 않습니다 . 이 경우 시작 번호를 생략하므로 파일 이름을 그대로 사용합니다.

^^

__머신 이름

machineName 함수는 로컬 호스트 이름을 반환합니다. 이것은 Java 메소드 InetAddress.getLocalHost() 를 사용하고 이를 getHostName() 에 전달합니다.

매개변수

기인하다
설명
필수의
변수 이름
이 함수에서 계산한 값을 재사용하기 위한 참조 이름입니다.
아니

예:

${__머신 이름()}
머신의 호스트 이름을 반환합니다.
${__머신 이름}
머신의 호스트 이름을 반환합니다.

^^

__머신IP

machineIP 함수는 로컬 IP 주소를 반환합니다. 이것은 Java 메소드 InetAddress.getLocalHost() 를 사용하여 getHostAddress() 에 전달합니다.

매개변수

기인하다
설명
필수의
변수 이름
이 함수에서 계산한 값을 재사용하기 위한 참조 이름입니다.
아니

예:

${__머신IP()}
머신의 IP 주소를 반환합니다.
${__머신IP}
머신의 IP 주소를 반환합니다.

^^

__자바스크립트

javaScript 함수는 JavaScript(Java가 아님!) 코드를 실행하고 해당 값을 반환합니다.

JMeter Javascript 기능은 독립형 JavaScript 인터프리터를 호출합니다. Javascript는 스크립팅 언어로 사용되므로 계산 등을 할 수 있습니다.

자바스크립트는 JMeter의 성능을 위한 최고의 스크립팅 언어가 아닙니다. 계획에 많은 수의 스레드가 필요한 경우 __jexl3 또는 __groovy 함수를 사용하는 것이 좋습니다.
Nashorn 엔진의 경우 Java 플랫폼, Standard Edition Nashorn 사용자 안내서 를 참조하십시오 .
Rhino 엔진의 경우 Mozilla Rhino 개요 를 참조하세요.

스크립트에서 다음 변수를 사용할 수 있습니다.

Rhinoscript에서는 Packages 개체를 통해 정적 메서드에 액세스할 수 있습니다. 스크립팅 Java 문서를 참조하십시오 . 예를 들어 다음과 같이 JMeterContextService 정적 메소드에 액세스할 수 있습니다. Java.type("org.apache.jmeter.threads.JMeterContextService").getTotalThreads()

JMeter는 브라우저가 아니며 다운로드한 페이지에서 JavaScript를 해석하지 않습니다.

매개변수

기인하다
설명
필수의
표현
실행할 JavaScript 표현식입니다. 예를 들어:
  • new Date() - 현재 날짜와 시간을 반환
  • Math.floor(Math.random()*(${maxRandom}+1)) - 0 과 변수 maxRandom 사이의 난수
  • ${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)) - 변수 minRandommaxRandom 사이의 난수
  • "${VAR}"=="abcd"
변수 이름
이 함수에서 계산한 값을 재사용하기 위한 참조 이름입니다.
아니
텍스트 문자열과 JMeter 변수에 필요한 따옴표를 포함하는 것을 잊지 마십시오. 또한 표현식에 쉼표가 있는 경우 반드시 이스케이프 처리하십시오. 예:
${__javaScript('${sp}'.slice(7\,99999))}
7 뒤의 쉼표 는 이스케이프됩니다.

예:

${__javaScript(새 날짜())}
2016년 1월 9일 토요일 16:22:15 GMT+0100(CET) 반환
${__javaScript(new Date(),MYDATE)}
Sat Jan 09 2016 16:22:15 GMT+0100 (CET) 을 반환 하고 변수 MYDATE 에 저장합니다.
${__javaScript(Math.floor(Math.random()*(${maxRandom}+1)),MYRESULT)}
maxRandom 변수를 사용하고 0과 maxRandom 사이의 임의 값을 반환하고 MYRESULT에 저장합니다.
${__javaScript(${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)),MYRESULT)}
maxRandomminRandom 변수 를 사용 하고 maxRandomminRandom 사이의 임의 값을 반환하고 변수 MYRESULT 아래에 저장합니다 .
${__javaScript("${VAR}"=="abcd",MYRESULT)}
VAR 변수의 값을 abcd 와 비교하고 true 또는 false 를 반환 하고 결과를 MYRESULT에 저장합니다.

^^

__랜덤

random 함수는 주어진 최소값과 최대값 사이에 있는 난수를 반환합니다.

매개변수

기인하다
설명
필수의
최소값
번호
최대값
더 큰 숫자
변수 이름
이 함수에서 계산한 값을 재사용하기 위한 참조 이름입니다.
아니

예:

${__Random(0,10)}
0에서 10 사이의 임의의 숫자를 반환합니다.
${__Random(0,10, MYVAR)}
0과 10 사이의 임의의 숫자를 반환하고 MYVAR 에 저장합니다 . ${MYVAR} 에는 임의의 숫자가 포함됩니다.

^^

__임의날짜

RandomDate 함수는 지정된 시작 날짜와 종료 날짜 값 사이에 있는 임의의 날짜를 반환합니다.

매개변수

기인하다
설명
필수의
시간 형식
DateTimeFormatter의 형식 문자열(기본값 yyyy-MM-dd )
아니
시작일
시작 날짜, 기본값은 지금 입니다.
아니
종료일
종료일
형식에 사용할 로케일
로케일의 문자열 형식입니다. 언어 코드는 소문자여야 합니다. 국가 코드는 대문자여야 합니다. 구분 기호는 밑줄이어야 합니다(예: en_EN ) . http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html 을 참조 하십시오 . 생략하면 기본적으로 이 함수는 Apache JMeter 로케일을 사용합니다.
아니
변수 이름
설정할 변수의 이름입니다.
아니

예:

${__RandomDate(,,2050-07-08,,)}
지금2050-07-08 사이의 임의의 날짜를 반환합니다 . 예: 2039-06-21
${__RandomDate(dd MM yyyy,,08 07 2050,,)}
04 03 2034 와 같은 사용자 지정 형식으로 임의의 날짜를 반환합니다.

^^

__RandomString

RandomString 함수는 사용할 문자의 문자를 사용하여 길이의 임의의 문자열을 반환합니다.

매개변수

기인하다
설명
필수의
길이
생성된 String의 숫자 길이
사용할 문자
문자열을 생성하는 데 사용되는 문자
아니
변수 이름
이 함수에서 계산한 값을 재사용하기 위한 참조 이름입니다.
아니

예:

${__RandomString(5)}
읽을 수 있거나 읽을 수 없는 임의의 5자 문자열을 반환합니다.
${__RandomString(10,abcdefg)}
cdbgdbeebd 또는 adbfeggfad 와 같이 abcdefg 세트 에서 선택한 10개의 임의 문자열을 반환합니다 .
${__RandomString(6,a12zeczclk, MYVAR)}
a12zeczclk 세트 에서 선택한 6개의 임의 문자열을 반환 하고 결과를 MYVAR 에 저장합니다. MYVAR 에는 2z22ak 또는 z11kce 와 같은 문자열이 포함됩니다 .

^^

__RandomFromMultipleVars

RandomFromMultipleVars 함수는 소스 변수 에서 제공하는 변수 값을 기반으로 임의의 값을 반환합니다 .

변수는 다음 추출기에 의해 생성될 수 있으므로 단순하거나 다중값일 수 있습니다. 다중 값 변수는 Match Numbers 에 -1 을 설정할 때 추출되는 변수 입니다. 이로 인해 varName_matchNr 이라는 일치 번호 변수가 생성 되고 각 값에 대해 n = 1, 2, 3 등인 변수 varName_n 이 생성됩니다.

매개변수

기인하다
설명
필수의
소스 변수
| 로 구분된 변수 이름 무작위 계산을 위한 입력으로 사용될 값을 포함하는
변수 이름
이 함수에서 계산한 값을 재사용하기 위한 참조 이름입니다.
아니

예:

${__RandomFromMultipleVars(val)}
다중 값인지 여부를 고려하여 변수 val의 내용을 기반으로 임의의 문자열을 반환합니다.
${__RandomFromMultipleVars(val1|val2)}
다중 값인지 여부를 고려하여 변수 val1 및 val2의 내용을 기반으로 임의의 문자열을 반환합니다.
${__RandomFromMultipleVars(val1|val2, MYVAR)}
다중 값인지 여부를 고려하여 변수 val1 및 val2의 내용을 기반으로 임의의 문자열을 반환하고 결과를 MYVAR 에 저장합니다.

^^

__UUID

UUID 함수는 의사 임의 유형 4 UUID(Universally Unique IDentifier)를 반환합니다.

매개변수

기인하다
설명
필수의

예:

${__UUID()}
다음 형식의 UUID를 반환합니다. c69e0dd1-ac6b-4f2b-8d59-5d4e8743eecd

^^

__CSV읽기

CSVRead 함수는 CSV 파일에서 문자열을 반환합니다(cf StringFromFile ).

참고: JMeter는 여러 파일 이름을 지원합니다.

대부분의 경우 최신 CSV 데이터 세트 구성 요소 를 사용하는 것이 더 쉽습니다.

파일 이름이 처음 발견되면 파일이 열리고 내부 배열로 읽힙니다. 빈 줄이 감지되면 파일의 끝으로 처리됩니다. 이를 통해 후행 주석을 사용할 수 있습니다.

동일한 파일 이름에 대한 모든 후속 참조는 동일한 내부 배열을 사용합니다. NB 파일 이름 대소문자는 함수에 중요합니다. OS가 상관하지 않더라도 CSVRead(abc.txt,0)CSVRead(aBc.txt,0) 는 다른 내부 배열을 참조합니다.

*ALIAS 기능을 사용하면 동일한 파일을 두 번 이상 열 수 있으며 더 짧은 파일 이름도 사용할 수 있습니다.

각 스레드에는 파일 배열의 현재 행에 대한 자체 내부 포인터가 있습니다. 스레드가 파일을 처음 참조할 때 배열의 다음 빈 행이 할당되므로 각 스레드는 다른 모든 스레드와 다른 행에 액세스합니다. [배열에 있는 행보다 스레드가 더 많지 않은 경우.]

이 함수는 기본적으로 모든 쉼표에서 줄을 분할합니다. 쉼표가 포함된 열을 입력하려면 다음 속성을 설정하여 구분 기호를 열 데이터에 나타나지 않는 문자로 변경해야 합니다. csvread.delimiter

매개변수

기인하다
설명
필수의
파일 이름
읽을 파일(또는 *ALIAS )
열 번호
파일의 열 번호입니다. 0 = 첫 번째 열, 1 = 두 번째 등. " next " - 파일의 다음 줄로 이동합니다. *ALIAS - 파일을 열고 별칭에 할당

예를 들어 다음과 같이 일부 변수를 설정할 수 있습니다.

  • COL1a ${__CSVRead(random.txt,0)}
  • COL2a ${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
  • COL1b ${__CSVRead(random.txt,0)}
  • COL2b ${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
이것은 한 줄에서 두 개의 열을 읽고 사용 가능한 다음 줄에서 두 개의 열을 읽습니다. 모든 변수가 동일한 사용자 매개변수 전처리기에 정의되어 있으면 행이 연속됩니다. 그렇지 않으면 다른 스레드가 다음 줄을 잡을 수 있습니다.

이 기능은 전체 파일이 메모리에 저장되기 때문에 대용량 파일에는 적합하지 않습니다. 더 큰 파일의 경우 CSV 데이터 세트 구성 요소 또는 StringFromFile 을 사용하십시오 .
^^

__속성

속성 함수는 JMeter 속성 값을 반환합니다. 속성 값을 찾을 수 없고 기본값이 제공되지 않은 경우 속성 이름을 반환합니다. 기본값을 제공할 때 함수 이름을 제공할 필요가 없습니다. 매개변수는 null로 설정될 수 있으며 무시됩니다.

예를 들어:

  • ${__property(user.dir)} - user.dir 의 반환 값
  • ${__property(user.dir,UDIR)} - user.dir 의 값을 반환 하고 UDIR 에 저장
  • ${__property(abcd,ABCD,atod)} - 속성 abcd (또는 정의되지 않은 경우 " atod ")의 값을 반환하고 ABCD 에 저장
  • ${__property(abcd,,atod)} - 속성 abcd (또는 정의되지 않은 경우 " atod ")의 값을 반환하지만 저장하지 않습니다.

매개변수

기인하다
설명
필수의
속성 이름
검색할 속성 이름입니다.
변수 이름
이 함수에서 계산한 값을 재사용하기 위한 참조 이름입니다.
아니
기본값
속성의 기본값입니다.
아니
^^

__P

이것은 명령줄에 정의된 속성과 함께 사용하기 위한 단순화된 속성 함수입니다. __property 함수 와 달리 변수에 값을 저장하는 옵션이 없으며, 기본값이 제공되지 않으면 1로 가정합니다. 루프, 스레드 수, 램프 업 등

예를 들어:

속성 값을 정의합니다.

jmeter -Jgroup1.threads=7 -Jhostname1=www.realhost.edu
값을 가져옵니다.
${__P(group1.threads)} - group1.threads 의 값을 반환합니다.
${__P(group1.loops)} - group1.loops 의 값을 반환합니다.
${__P(hostname,www.dummy.org) } - 정의되지 않은 경우 속성 hostname 또는 www.dummy.org
의 반환 값 위의 예에서 첫 번째 함수 호출은 7 을 반환 하고 두 번째 함수 호출은 1 을 반환 하고 마지막 함수는 www.dummy.org 를 반환합니다 (해당 속성이 정의되지 않은 경우) . 다른 곳!)

매개변수

기인하다
설명
필수의
속성 이름
검색할 속성 이름입니다.
기본값
속성의 기본값입니다. 생략하면 기본값은 " 1 "로 설정됩니다.
아니
^^

__로그

log 함수는 메시지를 기록하고 입력 문자열을 반환합니다.

매개변수

기인하다
설명
필수의
기록할 문자열
문자열
로그 수준
OUT , ERR , DEBUG , INFO (기본값), WARN 또는 ERROR
아니
던질 수 있는 텍스트
비어 있지 않은 경우 로거에 전달할 throwable을 만듭니다.
아니
논평
존재하는 경우 문자열에 표시됩니다. 기록 중인 항목을 식별하는 데 유용합니다.
아니

OUTERR 로그 수준 이름은 출력을 각각 System.outSystem.err 로 보내는 데 사용 됩니다. 이 경우 출력은 항상 인쇄되며 현재 로그 설정에 의존하지 않습니다.

${__log(메시지)}
" ... thread Name : Message " 로 로그 파일에 기록됨
${__log(메시지,출력)}
콘솔 창에 작성
${__log(${VAR},,,VAR=)}
" ... thread Name VAR=value " 로 로그 파일에 기록됨
^^

__로그

logn 함수는 메시지를 기록하고 빈 문자열을 반환합니다.

매개변수

기인하다
설명
필수의
기록할 문자열
문자열
로그 수준
OUT , ERR , DEBUG , INFO (기본값), WARN 또는 ERROR
아니
던질 수 있는 텍스트
비어 있지 않은 경우 로거에 전달할 throwable을 만듭니다.
아니

OUTERR 로그 수준 이름은 출력을 각각 System.outSystem.err 로 보내는 데 사용 됩니다. 이 경우 출력은 항상 인쇄되며 현재 로그 설정에 의존하지 않습니다.

${__logn(VAR1=${VAR1},OUT)}
콘솔 창에 변수 값 쓰기
^^

__빈쉘

BeanShell 함수는 전달된 스크립트를 평가하고 결과를 반환합니다.

성능을 위해 __groovy 함수 를 사용하는 것이 좋습니다.

BeanShell 사용에 대한 자세한 내용은 BeanShell 웹 사이트 http://www.beanshell.org/ 를 참조하십시오.

테스트 스크립트에서 함수가 독립적으로 발생할 때마다 다른 인터프리터가 사용되지만 후속 호출에는 동일한 인터프리터가 사용됩니다. 이는 변수가 함수 호출 간에 지속됨을 의미합니다.

함수의 단일 인스턴스는 여러 스레드에서 호출될 수 있습니다. 그러나 함수 execute() 메서드는 동기화됩니다.

" beanshell.function.init " 속성 이 정의되면 소스 파일의 이름으로 인터프리터에 전달됩니다. 이것은 공통 메소드 및 변수를 정의하는 데 사용할 수 있습니다. bin 디렉토리에 샘플 초기화 파일이 있습니다: BeanShellFunction.bshrc .

스크립트가 실행되기 전에 다음 변수가 설정됩니다.

(*)는 초기화 파일(있는 경우)이 처리되기 전에 설정됨을 의미합니다. 다른 변수는 호출마다 다릅니다.

매개변수

기인하다
설명
필수의
BeanShell 스크립트
beanshell 스크립트(파일 이름 아님)
변수 이름
이 함수에서 계산한 값을 재사용하기 위한 참조 이름입니다.
아니

예시:

${__BeanShell(123*456)}
56088을 반환
${__BeanShell(source("function.bsh"))}
function.bsh 에서 스크립트를 처리합니다.

텍스트 문자열과 텍스트 문자열을 나타내는 JMeter 변수에 필요한 따옴표를 포함하는 것을 잊지 마십시오.
^^

__그루비

__groovy 함수는 전달된 Apache Groovy 스크립트를 평가 하고 결과 를 반환합니다.

속성 " groovy.utilities "가 정의되면 ScriptEngine에 의해 로드됩니다. 이것은 공통 메소드 및 변수를 정의하는 데 사용할 수 있습니다. bin 디렉토리 에 샘플 초기화 파일이 있습니다 : utility.groovy .

스크립트가 실행되기 전에 다음 변수가 설정됩니다.

(*)는 초기화 파일(있는 경우)이 처리되기 전에 설정됨을 의미합니다. 다른 변수는 호출마다 다릅니다.

이 함수를 사용할 때 스크립트의 변수에 액세스하기 위해 문자열 대체를 사용하는 대신 위에 정의된 변수를 사용하십시오. 이 패턴을 따르면 Groovy가 캐시될 수 있도록 하여 테스트가 제대로 수행되는지 확인할 수 있습니다.

예를 들어 다음 을 수행하지 마십시오.

${__groovy("${myVar}".substring(0\,2))}

myVar 변수가 트랜잭션마다 변경되고 스크립트가 매번 변경되므로 위의 Groovy를 캐시할 수 없다고 상상해 보십시오.

대신 다음을 수행하여 캐시할 수 있습니다.

${__groovy(vars.get("myVar").substring(0\,2))}

매개변수

기인하다
설명
필수의
평가할 표현
Apache Groovy 스크립트(파일 이름 아님)
쉼표를 포함하는 인수 값은 필요에 따라 이스케이프해야 합니다. 매개변수 값에 쉼표를 포함해야 하는 경우 다음과 같이 이스케이프 처리하십시오. ' \, '
변수 이름
이 함수에서 계산한 값을 재사용하기 위한 참조 이름입니다.
아니

예시:

${__그루비(123*456)}
56088을 반환
${__groovy(vars.get("myVar").substring(0\,2))}
var의 값이 JMeter 이면 String.substring(0,2) 을 실행할 때 JM 을 반환 합니다. 는 \ 이스케이프 처리되었습니다 .

텍스트 문자열과 텍스트 문자열을 나타내는 JMeter 변수에 필요한 따옴표를 포함하는 것을 잊지 마십시오.
^^

__분할

split 함수는 전달된 문자열을 구분 기호에 따라 분할하고 원래 문자열을 반환합니다. 구분 기호가 인접하면 " ? "가 값으로 반환됩니다. 분할 문자열은 ${VAR_1} , ${VAR_2} 등의 변수에 반환됩니다. 변수 개수는 ${VAR_n} 에 반환됩니다 . 후행 구분 기호는 누락된 변수로 처리되고 " ? "가 반환됩니다. 또한 ForEach 컨트롤러에서 더 잘 작동할 수 있도록 __split 은 이전 분할에서 설정한 경우 첫 번째 사용하지 않는 변수를 삭제합니다.

예: 테스트 계획에서 VAR =" a||c|
"를 정의하십시오 .
${__split(${VAR},VAR,|)}

이것은 VAR 의 내용을 반환할 것입니다 . 즉 " a||c| "이고 다음 변수를 설정합니다.
VAR_n = 4
VAR_1 = a
VAR_2 = ?
VAR_3 = c
VAR_4 = ?
VAR_5 =

매개변수

기인하다
설명
필수의
분할할 문자열
구분된 문자열(예: " a|b|c "
변수 이름
이 함수에서 계산한 값을 재사용하기 위한 참조 이름입니다.
구분자
구분 기호 문자(예: | . 생략하면 , 가 사용됩니다. 는 \, 지정해야 합니다 .
아니
^^

__X경로

XPath 함수는 XML 파일을 읽고 XPath와 일치시킵니다. 함수가 호출될 때마다 다음 일치 항목이 반환됩니다. 파일의 끝에서 시작 부분으로 줄 바꿈됩니다. 일치하는 노드가 없으면 함수는 빈 문자열을 반환하고 경고 메시지가 JMeter 로그 파일에 기록됩니다.

전체 NodeList는 메모리에 보관됩니다.

예시:
${__XPath(/경로/to/build.xml, //대상/@이름)}
이것은 build.xml 의 모든 대상과 일치 하고 다음 이름 속성의 내용을 반환합니다.

매개변수

기인하다
설명
필수의
구문 분석할 XML 파일
구문 분석할 XML 파일
XPath
XML 파일의 노드와 일치시키는 XPath 표현식
^^

__set속성

setProperty 함수는 JMeter 속성의 값을 설정합니다. 함수의 기본 반환 값은 빈 문자열이므로 함수 호출은 함수가 유효한 모든 곳에서 사용할 수 있습니다.

선택적 세 번째 매개변수를 " true "로 설정하면 원래 값을 반환할 수 있습니다.

속성은 JMeter에 전역적이므로 스레드와 스레드 그룹 간에 통신하는 데 사용할 수 있습니다.

매개변수

기인하다
설명
필수의
속성 이름
설정할 속성 이름입니다.
재산 가치
속성 값입니다.
허위 사실
원래 값을 반환해야 합니까?
아니
^^

__시간

time 함수는 현재 시간을 다양한 형식으로 반환합니다.

매개변수

기인하다
설명
필수의
체재
SimpleDateFormat 에 전달할 형식 입니다. 이 함수는 다양한 약칭 별칭을 지원합니다(아래 참조). 생략하면 함수는 epoch 이후의 현재 시간을 밀리초 단위로 반환합니다.
아니
변수 이름
설정할 변수의 이름입니다.
아니

형식 문자열이 생략되면 함수는 epoch 이후의 현재 시간을 밀리초 단위로 반환합니다. 형식이 " /ddd "(여기서 ddd 는 10진수) 와 일치 하는 경우 함수는 현재 시간(밀리초)을 ddd 값으로 나눈 값을 반환합니다 . 예를 들어 " /1000 "은 에포크 이후의 현재 시간(초)을 반환합니다. 그렇지 않으면 현재 시간이 SimpleDateFormat으로 전달됩니다. 다음과 같은 약칭 별칭이 제공됩니다.

  • YMD = yyyyMMdd
  • 흠흠 흠흠 흠흠
  • YMDHMS = yyyyMMdd-HHmmss
  • USER1 = JMeter 속성 time.USER1 에 있는 모든 것
  • USER2 = JMeter 속성 time.USER2 에 있는 모든 것

기본값은 적절한 JMeter 속성을 설정하여 변경할 수 있습니다(예: time.YMD=yyMMdd).

${__time(dd/MM/yyyy,)}
2018년 1월 21일에 실행된 경우 2018년 1월 21일 반환 합니다.

${__time(YMD,)}
2018년 1월 21일에 실행된 경우 20180121 을 반환 합니다.

${__time()}
시간을 밀리 단위로 반환합니다. 1516540541624

^^

__jexl2

jexl 함수는 Commons JEXL 표현식 을 평가한 결과를 반환합니다 . JEXL 표현식에 대한 자세한 내용은 아래 링크를 참조하십시오.

__jexl2 함수는 Commons JEXL 2를 사용합니다 .

매개변수

기인하다
설명
필수의
표현
평가할 표현식입니다. 예: 6*(5+2)
변수 이름
설정할 변수의 이름입니다.
아니

스크립트에서 다음 변수를 사용할 수 있습니다.

  • log - 함수에 대한 로거
  • ctx - JMeterContext 객체
  • vars - JMeterVariables 객체
  • props - JMeterProperties(클래스 java.util.Properties ) 객체
  • threadName - 현재 스레드 이름을 포함하는 문자열
  • sampler - 현재 Sampler 객체(있는 경우)
  • sampleResult - 이전 SampleResult 객체(있는 경우)
  • OUT - System.out - 예: OUT.println("메시지")

Jexl은 또한 클래스를 생성하고 이에 대한 메소드를 호출할 수 있습니다. 예를 들면 다음과 같습니다.

Systemclass=log.class.forName("java.lang.System");
now=Systemclass.currentTimeMillis();
웹 사이트의 Jexl 문서에서는 " div "가 정수 나누기를 수행한다고 잘못 제안하고 있습니다. 실제로 " div "와 " / "는 모두 정상적인 나눗셈을 수행합니다. 다음과 같은 효과를 얻을 수 있습니다.
나는 = 5 / 2;
i.int값(); // 또는 i.longValue() 사용

JMeter를 사용하면 표현식에 여러 명령문이 포함될 수 있습니다.
^^

__jexl3

jexl 함수는 Commons JEXL 표현식 을 평가한 결과를 반환합니다 . JEXL 표현식에 대한 자세한 내용은 아래 링크를 참조하십시오.

__jexl3 함수는 Commons JEXL 3을 사용합니다 .

매개변수

기인하다
설명
필수의
표현
평가할 표현식입니다. 예: 6*(5+2)
변수 이름
설정할 변수의 이름입니다.
아니

스크립트에서 다음 변수를 사용할 수 있습니다.

  • log - 함수에 대한 로거
  • ctx - JMeterContext 객체
  • vars - JMeterVariables 객체
  • props - JMeterProperties(클래스 java.util.Properties ) 객체
  • threadName - 현재 스레드 이름을 포함하는 문자열
  • sampler - 현재 Sampler 객체(있는 경우)
  • sampleResult - 이전 SampleResult 객체(있는 경우)
  • OUT - System.out - 예: OUT.println("메시지")

Jexl은 또한 클래스를 생성하고 이에 대한 메소드를 호출할 수 있습니다. 예를 들면 다음과 같습니다.

Systemclass=log.class.forName("java.lang.System");
now=Systemclass.currentTimeMillis();
웹 사이트의 Jexl 문서에서는 " div "가 정수 나누기를 수행한다고 잘못 제안하고 있습니다. 실제로 " div "와 " / "는 모두 정상적인 나눗셈을 수행합니다. 다음과 같은 효과를 얻을 수 있습니다.
나는 = 5 / 2;
i.int값(); // 또는 i.longValue() 사용

JMeter를 사용하면 표현식에 여러 명령문이 포함될 수 있습니다.
^^

__V

V(변수) 함수는 변수 이름 식을 평가한 결과를 반환합니다. 이것은 중첩 변수 참조(현재 지원되지 않음)를 평가하는 데 사용할 수 있습니다.

예를 들어, 변수 A1 , A2N = 1 이 있는 경우 :

  • ${A1} - 정상 작동
  • ${A${N}} - 작동하지 않음(중첩 변수 참조)
  • ${__V(A${N})} - 정상적으로 작동합니다. A${N}A1 이 되고 __V 함수는 A1 값을 반환합니다.

매개변수

기인하다
설명
필수의
변수 이름
평가할 변수입니다.
기본값
변수를 찾을 수 없는 경우의 기본값, 비어 있고 변수를 찾을 수 없는 경우 함수는 변수 이름을 반환합니다.
아니
^^

__평가변수 ​​¶

evalVar 함수는 변수에 저장된 표현식을 평가한 결과를 반환합니다.

이를 통해 파일에서 문자열을 읽고 그 안의 모든 변수 참조를 처리할 수 있습니다. 예를 들어 " query " 변수에 " select ${column} from ${table} "이 포함되어 있고 " column " 및 " table "에 " name " 및 " customers " 가 포함되어 있으면 ${__evalVar(query)} 는 다음과 같이 평가됩니다. " 고객의 이름 선택 ".

매개변수

기인하다
설명
필수의
변수 이름
평가할 변수입니다.
^^

__평가

eval 함수는 문자열 식을 평가한 결과를 반환합니다.

이를 통해 변수에 저장된 문자열에서 변수 및 함수 참조를 보간할 수 있습니다. 예를 들어, 다음 변수가 주어졌을 때:

  • 이름 = 스미스
  • = 나이
  • 테이블 = 생일
  • SQL = ${table}에서 ${column} 선택(name='${name}')
그러면 ${__eval(${SQL})} 은 " name='Smith'인 생일에서 연령 선택 "으로 평가됩니다 .

이것은 예를 들어 SQL 문과 값이 모두 데이터 파일에 정의되어 있는 경우 CSV 데이터 세트와 함께 사용할 수 있습니다.

매개변수

기인하다
설명
필수의
변수 이름
평가할 변수입니다.
^^

__문자

char 함수는 숫자 목록을 유니코드 문자로 평가한 결과를 반환합니다. 아래의 __unescape() 도 참조 하세요.

이를 통해 필드에 임의의 문자 값을 추가할 수 있습니다.

매개변수

기인하다
설명
필수의
유니코드 문자 번호(10진수 또는 0xhex)
유니코드 문자로 변환할 10진수(또는 접두사가 0x 인 경우 16진수, 접두사가 0 인 경우 8진수)입니다.

예:
${__char(13,10)} = ${__char(0xD,0xA)} = ${__char(015,012)} = CRLF
${__char(165)} = ¥ (엔)

^^

__이스케이프

unescape 함수는 Java 이스케이프된 문자열을 평가한 결과를 반환합니다. 위의 __char() 도 참조하십시오 .

이를 통해 GUI를 통해 정의하기 어려운(또는 불가능한) 필드에 문자를 추가할 수 있습니다.

매개변수

기인하다
설명
필수의
이스케이프 처리할 문자열
이스케이프 처리할 문자열입니다.

예:
${__unescape(\r\n)} = CRLF
${__unescape(1\t2)} = 1 [탭] 2

^^

__unescapeHtml

HTML 엔티티를 포함하는 문자열을 이스케이프에 해당하는 실제 유니코드 문자를 포함하는 문자열로 이스케이프 해제하는 함수입니다. HTML 4.0 엔터티를 지원합니다.

예를 들어, 문자열

${__unescapeHtml(<Français>)}
<Français> 를 반환 합니다.

엔터티를 인식할 수 없으면 그대로 남겨두고 결과 문자열에 그대로 삽입됩니다. 예 를 들어 ${__unescapeHtml(>&zzzz;x)} 는 >&zzzz;x 를 반환 합니다.

Commons Lang의 StringEscapeUtils#unescapeHtml(String)을 사용합니다 .

매개변수

기인하다
설명
필수의
이스케이프 처리할 문자열
이스케이프 처리할 문자열입니다.
^^

__escapeHTML

HTML 엔터티를 사용하여 문자열의 문자를 이스케이프하는 함수입니다. HTML 4.0 엔터티를 지원합니다.

예를 들어,

${__escapeHtml("빵" & "버터")}
반환: "빵" & "버터" .

Commons Lang의 StringEscapeUtils#escapeHtml(String) 을 사용합니다 .

매개변수

기인하다
설명
필수의
이스케이프할 문자열
이스케이프할 문자열입니다.
^^

__url디코드

application/x-www-form-urlencoded 문자열 을 디코딩하는 기능 입니다. 참고: 인코딩 체계로 UTF-8을 사용하십시오.

예를 들어, 문자열

${__urldecode(단어+%22학교%22+is+%22%C3%A9cole%22+in+프랑스어)}
반환 단어 "학교"는 프랑스어로 "école"입니다 .

Java 클래스 URLDecoder 를 사용합니다 .

매개변수

기인하다
설명
필수의
디코딩할 문자열
디코딩할 URL 인코딩 문자가 있는 문자열입니다.
^^

__urlencode

문자열을 application/x-www-form-urlencoded 문자열 로 인코딩하는 함수 입니다.

예를 들어, 문자열

${__urlencode(단어 "school"은 프랑스어로 "école"입니다)}
Word+% 22school %22+is+%22%C3%A9cole%22+in+french 를 반환 합니다.

Java 클래스 URLEncoder 를 사용합니다 .

매개변수

기인하다
설명
필수의
인코딩할 문자열
URL 인코딩 문자로 인코딩할 문자열입니다.
^^

__FileToString

FileToString 함수를 사용하여 전체 파일을 읽을 수 있습니다. 호출될 때마다 전체 파일을 읽습니다.

파일을 열거나 읽는 중에 오류가 발생하면 함수는 " **ERR** " 문자열을 반환합니다.

매개변수

기인하다
설명
필수의
파일 이름
파일 이름의 경로입니다. (경로는 JMeter 실행 디렉토리에 상대적일 수 있음)
플랫폼 기본값이 아닌 경우 파일 인코딩
파일을 읽는 데 사용할 인코딩입니다. 지정하지 않으면 플랫폼 기본값이 사용됩니다.
아니
변수 이름
이 함수에 의해 생성된 값을 재사용하기 위한 참조 이름 - refName -. 저장된 값은 ${refName} 형식 입니다.
아니

파일 이름, 인코딩 및 참조 이름 매개변수는 함수가 실행될 때마다 확인됩니다.

^^

__샘플러 이름

samplerName 함수는 현재 샘플러의 이름(즉, 레이블)을 반환합니다.

연결된 샘플러가 없는 테스트 요소에서는 함수가 작동하지 않습니다. 예를 들어 테스트 계획. 구성 요소에는 연결된 샘플러도 없습니다. 그러나 일부 구성 요소는 HTTP 헤더 관리자 및 Http 쿠키 관리자와 같은 샘플러에서 직접 참조하며 이 경우 기능은 Http 샘플러의 컨텍스트에서 해결됩니다. 전처리기, 후처리기 및 어설션에는 항상 연결된 샘플러가 있습니다.

예시:

${__샘플러 이름()}

매개변수

기인하다
설명
필수의
변수 이름
이 함수에 의해 생성된 값을 재사용하기 위한 참조 이름 - refName -. 저장된 값은 ${refName} 형식 입니다.
아니
^^

__TestPlanName

TestPlanName 함수는 현재 테스트 계획의 이름을 반환합니다(계획 포함에서 호출 테스트 계획의 이름을 알기 위해 사용할 수 있음).

예시:

${__TestPlanName}
테스트 계획의 파일 이름을 반환합니다. 예를 들어 계획이 Demo.jmx라는 파일에 있는 경우 " Demo.jmx

^^

__escapeOroRegexpChars

ORO Regexp 메타 문자를 이스케이프하는 함수로, Java Regexp 엔진 의 \Q \E 와 동일합니다.

예를 들어,

${__escapeOroRegexpChars([^"].+?,)}
반환: \[\^\"\]\.\+\? .

ORO의 Perl5Compiler#quotemeta(String)를 사용합니다.

매개변수

기인하다
설명
필수의
이스케이프할 문자열
이스케이프할 문자열입니다.
변수 이름
이 함수에 의해 생성된 값을 재사용하기 위한 참조 이름 - refName -. 저장된 값은 ${refName} 형식 입니다.
아니
^^

__escapeXml

XML 1.0 엔터티를 사용하여 문자열의 문자를 이스케이프하는 함수입니다.

예를 들어,

${__escapeXml("빵" & '버터')}
반환: "빵" & '버터' .

Commons Lang의 StringEscapeUtils#escapeXml10(String) 을 사용합니다 .

매개변수

기인하다
설명
필수의
이스케이프할 문자열
이스케이프할 문자열입니다.
^^

__타임시프트

timeShift 함수는 지정된 초, 분, 시간, 일 또는 월이 추가된 지정된 형식의 날짜를 반환합니다.

매개변수

기인하다
설명
필수의
체재
DateTimeFormatter에 전달할 형식입니다. DateTimeFormatter 참조 생략하면 이 함수는 epoch 형식 이후의 밀리초를 사용합니다.
아니
이동 날짜
'Format' 매개변수에서 설정한 형식으로 날짜를 표시하여 이동합니다. 생략하면 날짜가 현재로 설정됩니다.
아니
이동할 값
PnDTnHnMn.nS와 같은 기간의 텍스트 표현에 따라 이동할 지정된 시간(초, 분, 시간 또는 일)을 나타냅니다. https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html#parse-java.lang.CharSequence-를 참조하세요.
  • PT20.345S 는 20.345초로 구문 분석합니다.
  • PT15M 은 15분으로 구문 분석합니다.
  • PT10H 는 10시간으로 분석
  • P2D 는 2일로 구문 분석합니다.
  • -P6H3M 은 -6시간 -3분으로 구문 분석합니다.
아니
형식에 사용할 로케일
로케일의 문자열 형식입니다. 언어 코드는 소문자여야 합니다. 국가 코드는 대문자여야 합니다. 구분 기호는 밑줄이어야 합니다. 예: en_EN http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html 참조 생략하면 기본적으로 이 함수는 ApacheJMeter 로케일을 사용합니다.
아니
변수 이름
설정할 변수의 이름입니다.
아니

예:

${__timeShift(dd/MM/yyyy,21/01/2018,P2D,,)}
2018년 1월 23일 반환
${__timeShift(dd MMMM yyyy,21 février 2018,P2D,fr_FR,)}
23 février 2018을 반환합니다 .

^^

__다이제스트

다이제스트 함수는 선택적 솔트, 대문자 및 변수 이름을 사용하여 특정 해시 알고리즘에서 암호화된 값을 반환합니다.

매개변수

기인하다
설명
필수의
연산
암호화에 사용할 알고리즘 가능한 알고리즘은 StandardNames 의 MessageDigest를 참조하십시오.
  • MD2
  • MD5
  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
추가할 Salt인코딩할 문자열에 대해 공백이 고려됩니다.
인코딩할 문자열
암호화될 문자열
추가할 소금
문자열에 추가할 소금(뒤)
아니
대문자 값
결과는 기본적으로 소문자입니다. 대문자로 된 결과를 선택하십시오.
아니
변수 이름
설정할 변수의 이름입니다.
아니

예:

${__digest(MD5,Errare humanum est,,,)}
반환 c49f00b92667a35c63708933384dad52
${__digest(SHA-256,Felix qui potuit rerum cognoscere causas,mysalt,,)}
반환 a3bc6900fe2b2fc5fa8a601a4a84e27a079bf2c581d485009bc5c00516729ac7

^^

__dateTimeConvert

__dateTimeConvert 함수는 소스 형식의 날짜를 선택적으로 변수 이름에 결과를 저장하는 대상 형식으로 변환합니다 .

매개변수

기인하다
설명
필수의
날짜 문자열
원본 날짜 형식에서 대상 날짜 형식으로 변환할 날짜 문자열입니다. 소스 날짜 형식이 비어 있는 경우 에포크 시간으로 날짜를 여기에서 사용할 수 있습니다.
소스 날짜 형식
원래 날짜 형식입니다. 비어 있는 경우 날짜 문자열 필드는 에포크 시간이어야 합니다.
아니
목표 날짜 형식
새로운 날짜 형식
변수 이름
설정할 변수의 이름입니다.
아니

예시:

${__dateTimeConvert(01212018,MMddyyyy,dd/MM/yyyy,)}
2018년 1월 21일 반환

신기원 시간 값: 1526574881000,

${__dateTimeConvert(1526574881000,,dd/MM/yyyy HH:mm,)}
UTC 시간(-Duser.timezone=GMT)으로 17/05/2018 16:34 를 반환합니다 .

^^

__isPropDefined

__isPropDefined 함수는 속성이 있으면 true를 반환하고 속성이 없으면 false를 반환합니다 .

매개변수

기인하다
설명
필수의
속성 이름
정의되었는지 확인하는 데 사용할 속성 이름

예시:

${__isPropDefined(START.HMS)}
true 를 반환 합니다

^^

__isVarDefined

__isVarDefined 함수 는 변수가 있으면 true를 반환하고 변수가 없으면 false를 반환합니다.

매개변수

기인하다
설명
필수의
변수 이름
정의되었는지 확인하는 데 사용할 변수 이름

예시:

${__isVarDefined(JMeterThread.last_sample_ok)}
true 를 반환 합니다

^^

__체인지 케이스

대소문자 변경 함수는 특정 모드에 따라 대소문자가 변경된 문자열 값을 반환합니다. 결과는 선택적으로 JMeter 변수에 저장할 수 있습니다.

매개변수

기인하다
설명
필수의
대소문자를 바꿀 문자열
대소문자가 변경될 문자열
케이스 모드 변경
예를 들어 ab-CD eF의 경우 대소문자를 변경하는 데 사용할 모드 :
  • AB-CD EF의 UPPER 결과
  • ab-cd ed로 LOWER 결과
  • Ab-CD eF로 결과를 대문자 로 표시
대소문자 변경 모드 는 대소문자를 구분하지 않습니다.
변수 이름
설정할 변수의 이름입니다.
아니

예:

${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil, UPPER,)}
AVARO OMNIA DESUNT, INOPI PAUCA, SAPIENTI NIHIL을 반환합니다 .
${__changeCase(LABOR OMNIA VINCIT IMPROBUS,LOWER,)}
노동 을 반환 합니다 omnia vincit improbus
${__changeCase(옴니버스 viis romam pervenitur,CAPITALIZE,)}
Omnibus viis roma pervenitur 를 반환 합니다.

^^

__StringToFile

__StringToFile 함수를 사용하여 파일에 문자열을 쓸 수 있습니다 . 호출될 때마다 파일 추가 또는 덮어쓰기에 문자열을 씁니다.

함수의 기본 반환 값은 빈 문자열입니다.

매개변수

기인하다
설명
필수의
파일 경로
파일 이름의 경로입니다.(경로는 절대 경로입니다.)
쓸 문자열
파일에 쓸 문자열입니다.
콘텐츠에 줄 바꿈을 삽입해야 하는 경우 문자열에 \n 을 사용하세요.
파일에 추가하시겠습니까?
문자열을 쓰는 방법은 true 는 추가, false 는 덮어쓰기를 의미합니다. 지정하지 않으면 기본 추가는 true 입니다.
아니
UTF-8이 아닌 경우 파일 인코딩
파일에 쓰는 데 사용할 인코딩입니다. 지정하지 않으면 기본 인코딩은 UTF-8 입니다.
아니
^^

20.6 미리 정의된 변수

대부분의 변수는 함수를 호출하거나 사용자 정의 변수와 같은 테스트 요소에 의해 설정됩니다. 이 경우 사용자는 사용되는 변수 이름을 완전히 제어할 수 있습니다. 그러나 일부 변수는 JMeter에 의해 내부적으로 정의됩니다. 아래에 나열되어 있습니다.

  • COOKIE_cookiename - 쿠키 값을 포함합니다( HTTP 쿠키 관리자 참조 ).
  • JMeterThread.last_sample_ok - 마지막 샘플이 OK인지 여부 - true / false . 참고: 이것은 PostProcessors 및 Assertion이 실행된 후에 업데이트됩니다.
  • START 변수(다음 섹션 참조)

20.6 미리 정의된 속성

JMeter 속성 집합은 JMeter가 시작될 때 정의된 시스템 속성에서 초기화됩니다. 추가 JMeter 속성은 jmeter.properties , user.properties 또는 명령줄에 정의됩니다.

일부 내장 속성은 JMeter에 의해 정의됩니다. 아래에 나열되어 있습니다. 편의를 위해 START 속성도 같은 이름을 가진 변수에 복사됩니다.

  • START.MS - JMeter 시작 시간(밀리초)
  • START.YMD - JMeter 시작 시간( yyyyMMdd )
  • START.HMS - JMeter 시작 시간( HHmmss )
  • TESTSTART.MS - 테스트 시작 시간(밀리초)

START 변수 /속성은 테스트 시작 시간이 아니라 JMeter 시작 시간을 나타냅니다. 주로 파일 이름 등에 사용하기 위한 것입니다.

Go to top