{"id":11,"date":"2016-02-01T21:17:10","date_gmt":"2016-02-01T21:17:10","guid":{"rendered":"http:\/\/vanilton.net\/blog\/?p=11"},"modified":"2023-07-10T19:14:46","modified_gmt":"2023-07-10T23:14:46","slug":"extraindo-valores-de-json-com-jmeter-json-path-extractor","status":"publish","type":"post","link":"https:\/\/www.vanilton.net\/blog\/automacao-de-teste-desempenho\/2016\/02\/01\/extraindo-valores-de-json-com-jmeter-json-path-extractor\/","title":{"rendered":"Extraindo valores de json com JMeter + Json Path Extractor"},"content":{"rendered":"<p>Ol\u00e1 galera!<\/p>\n<p>Neste post irei deixar uma dica de como extrair valores de um json com o plugin Json Path Extractor do Jmeter.<\/p>\n<h1><strong>Pr\u00e9-requisitos<\/strong><\/h1>\n<ol>\n<li>Possuir o JMeter configurado, realizei testes na vers\u00e3o 2.11 e 2.13 ambas funcionando da mesma forma.\u00a0\n<ol>\n<li>Atualiza\u00e7\u00e3o na vers\u00e3o 5.5 n\u00e3o h\u00e1 mais necessidade de instalar o plugin do pr\u00e9-requisito 2, a lib j\u00e1 foi integrada ao JMeter.<\/li>\n<\/ol>\n<\/li>\n<li>Estar com o plugin do JMeter Json Path Extractor configurado. Para baix\u00e1-lo acesse\u00a0<a href=\"http:\/\/jmeter-plugins.org\/downloads\/all\/\" target=\"_blank\" rel=\"noopener\">http:\/\/jmeter-plugins.org\/downloads\/all\/<\/a>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li>Neste post utilizei a vers\u00e3o 1.3.1 no link <a href=\"http:\/\/jmeter-plugins.org\/downloads\/file\/JMeterPlugins-ExtrasLibs-1.3.1.zip\" target=\"_blank\" rel=\"noopener\">http:\/\/jmeter-plugins.org\/downloads\/file\/JMeterPlugins-ExtrasLibs-1.3.1.zip<\/a><\/li>\n<li>Abra o arquivo .zip e extraia todo o conte\u00fado da pasta lib para a pasta lib de sua instala\u00e7\u00e3o do JMeter. Abaixo uma figura de exemplo.<a href=\"http:\/\/vanilton.net\/blog\/wp-content\/uploads\/retornojson.png\" rel=\"attachment wp-att-217\"><img loading=\"lazy\" class=\"wp-image-217 size-full aligncenter\" src=\"https:\/\/caboquinhotester.files.wordpress.com\/2015\/12\/conflibjmeter.png\" alt=\"confLibJmeter\" width=\"620\" height=\"226\" \/><\/a><\/li>\n<li>Reinicie\/Abra o JMeter para ele identificar as atualiza\u00e7\u00f5es das libs.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p><!--more--><\/p>\n<h1>Json Modelo<\/h1>\n<p>Abaixo est\u00e1 o Json que estarei utilizando para os exemplo deste post, ele estar\u00e1 dispon\u00edvel em\u00a0<strong><a href=\"https:\/\/vanilton.net\/web-test\/json\/\" target=\"_blank\" rel=\"noopener\">https:\/\/vanilton.net\/web-test\/json\/<\/a><\/strong><code><br \/>\n<\/code><\/p>\n<p><div class=\"oembed-gist\"><script src=\"https:\/\/gist.github.com\/Vanilton18\/97edb6164dbab2a46490.js\"><\/script><noscript>View the code on <a href=\"https:\/\/gist.github.com\/Vanilton18\/97edb6164dbab2a46490\">Gist<\/a>.<\/noscript><\/div><\/p>\n<h1>Exemplo 1 &#8211; Recuperando Json completo<\/h1>\n<p>Para recuperar todo o json retornando de uma requisi\u00e7\u00e3o precisamos inicialmente no Plano de Teste criar um grupo de usu\u00e1rios e uma requisi\u00e7\u00e3o HTTP, conforme a imagem abaixo.<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-18 size-large\" src=\"http:\/\/vanilton.net\/blog\/wp-content\/uploads\/requisicaojmeter-1024x553.png\" alt=\"\" width=\"840\" height=\"454\" srcset=\"https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/requisicaojmeter-1024x553.png 1024w, https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/requisicaojmeter-300x162.png 300w, https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/requisicaojmeter-1200x648.png 1200w, https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/requisicaojmeter.png 1361w\" sizes=\"(max-width: 840px) 100vw, 840px\" \/><\/p>\n<p>Ap\u00f3s criar a requisi\u00e7\u00e3o devemos criar um P\u00f3s-Processador do tipo JSON Path Extractor conforme a imagem abaixo.\u00a0(se esta op\u00e7\u00e3o n\u00e3o existir a configura\u00e7\u00e3o da lib n\u00e3o foi feita corretamente)<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-13 size-large\" src=\"http:\/\/vanilton.net\/blog\/wp-content\/uploads\/jsonpathpos-1024x575.png\" alt=\"\" width=\"840\" height=\"472\" srcset=\"https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/jsonpathpos-1024x575.png 1024w, https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/jsonpathpos-300x169.png 300w, https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/jsonpathpos.png 1073w\" sizes=\"(max-width: 840px) 100vw, 840px\" \/><\/p>\n<p>Com a op\u00e7\u00e3o JSON Path Extractor aberta devemos preencher o nome da vari\u00e1vel que utilizaremos no teste, a express\u00e3o que ir\u00e1 recuperar o json, e opcionalmente uma mensagem caso ocorra algum erro na busca.<\/p>\n<p>A imagem abaixo mostra os campos j\u00e1 preenchidos.<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-14 size-large\" src=\"http:\/\/vanilton.net\/blog\/wp-content\/uploads\/jsonpathtotaljson-1024x290.png\" alt=\"\" width=\"840\" height=\"238\" srcset=\"https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/jsonpathtotaljson-1024x290.png 1024w, https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/jsonpathtotaljson-300x85.png 300w, https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/jsonpathtotaljson.png 1131w\" sizes=\"(max-width: 840px) 100vw, 840px\" \/><\/p>\n<pre>Pode-se observar que foi utilizado a express\u00e3o $.[*] que recupera todos o conte\u00fado do json.<\/pre>\n<p>Para testar se a express\u00e3o est\u00e1 recuperando o json utilizaremos um elemento do tipo Testador chamado &#8220;Debug testador&#8221; na imagem abaixo podemos visualizar, lembrando que devemos adicionar abaixo da requisi\u00e7\u00e3o feita no mesmo n\u00edvel, n\u00e3o \u00e9 necess\u00e1rios alterar nada na configura\u00e7\u00e3o do Debug.<br \/><img loading=\"lazy\" class=\"size-large wp-image-19 alignnone\" src=\"http:\/\/vanilton.net\/blog\/wp-content\/uploads\/debugtestador-1024x370.png\" alt=\"debugtestador\" width=\"840\" height=\"304\" srcset=\"https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/debugtestador-1024x370.png 1024w, https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/debugtestador-300x109.png 300w, https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/debugtestador-1200x434.png 1200w, https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/debugtestador.png 1363w\" sizes=\"(max-width: 840px) 100vw, 840px\" \/><\/p>\n<p>Mas ainda n\u00e3o \u00e9 o suficiente para testar o resultado, para visualizar a resposta devemos criar um elemento do tipo Ouvinte, para visualizar os detalhes da resposta utilizarei o ouvinte &#8220;Ver \u00c1rvore de Resultados&#8221;. Feito isto podemos executar a requisi\u00e7\u00e3o criada e observar o resultado conforme a imagem abaixo.<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-15 size-large\" src=\"http:\/\/vanilton.net\/blog\/wp-content\/uploads\/retornojson-1024x552.png\" alt=\"\" width=\"840\" height=\"453\" srcset=\"https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/retornojson-1024x552.png 1024w, https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/retornojson-300x162.png 300w, https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/retornojson-1200x646.png 1200w, https:\/\/www.vanilton.net\/blog\/wp-content\/uploads\/retornojson.png 1361w\" sizes=\"(max-width: 840px) 100vw, 840px\" \/><\/p>\n<p>Pode-se observar que a vari\u00e1vel (val) criada no JSON PATH Extractor agora recebe o valor do json retornado na Requisi\u00e7\u00e3o HTTP.<\/p>\n<h1>Exemplo 2 &#8211; Recuperando valor de chave<\/h1>\n<p>Como j\u00e1 exemplificado no exemplo 1, para recuperar um valor espec\u00edfico de uma chave no json, podemos utilizar o nome da chave e \u00edndice. Logo se quisermos por exemplo recuperar o t\u00edtulo do filme os vingadores utilizaremos a express\u00e3o;<\/p>\n<pre> $.[*].titulo[0]\n<\/pre>\n<p>O que \u00e9 feito neste comando \u00e9 a recupera\u00e7\u00e3o do json e um filtro pelo titulo com o \u00edndice 0, ou seja, a primeira chave com o nome t\u00edtulo contido no json do nosso exemplo, retornando assim o valor &#8220;Os Vingadores&#8221;.<\/p>\n<p>Outros exemplos<\/p>\n<ul>\n<li>Retornar o nome do segundo diretor (Sam)<\/li>\n<\/ul>\n<pre>   $.[*].diretor[1].nome<\/pre>\n<ul>\n<li>Retornar o primeiro\u00a0diretor\u00a0com nome\u00a0igual a &#8220;Sam&#8221;<\/li>\n<\/ul>\n<pre>$.[*].diretor[?(@.nome=='Sam')][0]<\/pre>\n<ul>\n<li>Retornar a \u00faltima produtora na ordem no caso (Sony Pictures Entertainment)<\/li>\n<\/ul>\n<pre>$.[*].produtora[(@.length-1)] ou\u00a0$.[*].produtora[-1:][0]<\/pre>\n<p>Ent\u00e3o \u00e9 isso galera espero que estes exemplos ajudem voc\u00eas. Qualquer d\u00favida ou sugest\u00e3o coloquem nos coment\u00e1rios.<\/p>\n<p>Arquivo .jmx do projeto para quem quiser utilizar como base <a href=\"https:\/\/vanilton.net\/v1\/download\/JsonPathExtractor.rar\" target=\"_blank\" rel=\"noopener\">clique aqui<\/a>.<\/p>\n<p>At\u00e9 mais!<\/p>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 galera! Neste post irei deixar uma dica de como extrair valores de um json com o plugin Json Path Extractor do Jmeter. Pr\u00e9-requisitos Possuir o JMeter configurado, realizei testes na vers\u00e3o 2.11 e 2.13<a class=\"read-more\" href=\"https:\/\/www.vanilton.net\/blog\/automacao-de-teste-desempenho\/2016\/02\/01\/extraindo-valores-de-json-com-jmeter-json-path-extractor\/\">Continue reading<\/a><\/p>\n","protected":false},"author":1,"featured_media":125,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6,7,8,9,10],"tags":[12,13,14],"wppr_data":{"cwp_meta_box_check":"No"},"_links":{"self":[{"href":"https:\/\/www.vanilton.net\/blog\/wp-json\/wp\/v2\/posts\/11"}],"collection":[{"href":"https:\/\/www.vanilton.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vanilton.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vanilton.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vanilton.net\/blog\/wp-json\/wp\/v2\/comments?post=11"}],"version-history":[{"count":15,"href":"https:\/\/www.vanilton.net\/blog\/wp-json\/wp\/v2\/posts\/11\/revisions"}],"predecessor-version":[{"id":653,"href":"https:\/\/www.vanilton.net\/blog\/wp-json\/wp\/v2\/posts\/11\/revisions\/653"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.vanilton.net\/blog\/wp-json\/wp\/v2\/media\/125"}],"wp:attachment":[{"href":"https:\/\/www.vanilton.net\/blog\/wp-json\/wp\/v2\/media?parent=11"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vanilton.net\/blog\/wp-json\/wp\/v2\/categories?post=11"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vanilton.net\/blog\/wp-json\/wp\/v2\/tags?post=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}