記事ディレクトリ
序文
前後やアサーションなどでBeanShellを使ってきましたが、公式ドキュメントを確認するとJSR223の使用が推奨されていることが分かりました。実はBeanShellもJSR223の一種なので、さらに勉強していきましょう。
公式 Web サイトの紹介: Apache JMeter - ユーザー マニュアル: コンポーネント リファレンスの
翻訳: パフォーマンスを向上させ、新しい Java 機能をサポートし、BeanShell ライブラリの限定的なメンテナンスを行うために、JSR223 Assertion+Groovy に移行することを強くお勧めします。
JSR223 を理解することで、Jmeter は以下に示すように、実現したい機能を実現するためのさまざまなスクリプト言語を提供することができます
。
1. JSR 223 によるアサーションの作成
1. たとえば、応答 json:
{
"hello":"app1"}
2. JSR223 アサーション
レスポンスコードとレスポンス内容にはヘッダー、Cookie、ボディが含まれており、以下の内容に基づいてアサーションを行うことができます。
// 获取http响应代码
def httpCode = prev.getResponseCode()
// 获取http响应body
def response = prev.getResponseDataAsString()
// 获取响应的所有header
def headers = prev.getResponseHeaders()
// 获取响应的cookie
def cookies = prev.getCookies()
3. http 応答ステータス コード アサーション
if(prev.getResponseCode().equals("200")){
Failure=false; // 断言成功
}
else{
Failure=true; // 断言失败
FailureMessage="http code != 200"; // 自定义失败信息
}
4. http レスポンスボディのアサーション
import groovy.json.JsonSlurper
// 获取响应
def response = prev.getResponseDataAsString()
// 解析为JSON响应
def jsonResponse = new JsonSlurper().parseText(response)
// JSON响应,获取所需的值
def value = jsonResponse.hello
// 进行断言期望值
def expValue = "app2"
// ① expValue in response ② expValue == value
if (response.contains(expValue) || value.equals(expValue)){
// 断言成功
AssertionResult.setFailure(false)
} else {
// 断言失败
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage("Assertion failed. Expected value: ${expValue}. Actual value: ${value}")
}
失敗:
2. まとめ
上記の書き方は簡単そうに見えますが、これで十分です!
全体的には優れており、自由にアサーションを行うことができます。これは、一部の複雑なシナリオで必要となります。