jMeter - Expressões regulares

Expressões regulares são usadas para pesquisar e manipular texto, com base em padrões. O JMeter interpreta formas de expressões regulares ou padrões usados ​​em todo o plano de teste do JMeter, incluindo o software de correspondência de padrões Apache Jakarta ORO .

Com o uso de expressões regulares, certamente podemos economizar muito tempo e obter maior flexibilidade ao criar ou aprimorar um Plano de Teste. As expressões regulares fornecem um método simples para obter informações das páginas quando é impossível ou muito difícil prever um resultado.

Um exemplo de uso padrão do uso de expressões é obter um ID de sessão da resposta do servidor. Se o servidor retornar uma chave de sessão exclusiva, podemos obtê-la facilmente usando expressões em nosso script de carregamento.

Para usar expressões regulares em seu plano de teste, você precisa usar o Regular Expression Extractor do JMeter. Você pode colocar expressões regulares em qualquer componente em um Plano de Teste.

Vale ressaltar a diferença entre contains e matches, conforme usado no elemento de teste Response Assertion -

  • containssignifica que a expressão regular correspondeu a pelo menos alguma parte do destino, então 'alfabeto' "contém" 'ph.b.' porque a expressão regular corresponde à substring 'phabe'.

  • matchessignifica que a expressão regular correspondeu a todo o destino. Portanto, o 'alfabeto' é "combinado" por 'al. * T'.

Suponha que você queira corresponder à seguinte parte de uma página da web -

name = "file" value = "readme.txt"

E você deseja extrair readme.txt. Uma expressão regular adequada seria -

name = "file" value = "(.+?)">

Os caracteres especiais acima são -

  • ( e ) - eles incluem a parte da string de correspondência a ser retornada

  • . - corresponde a qualquer personagem

  • + - uma ou mais vezes

  • ? - pare quando a primeira partida for bem-sucedida

Criar plano de teste JMeter

Vamos entender o uso de expressões regulares no Extrator de Expressão Regular - um Elemento Pós-Processador escrevendo um plano de teste. Este elemento extrai texto da página atual usando uma Expressão Regular para identificar o padrão de texto com o qual um elemento desejado está em conformidade.

Primeiro, escrevemos uma página HTML com uma lista de pessoas e seus IDs de e-mail. Nós o implantamos em nosso servidor Tomcat. O conteúdo de html (index.html) é o seguinte -

<html>
   <head>
   </head>
	
   <body>
      <table style = "border: 1px solid #000000;">
		
         <th style = "border: 1px solid #000000;">ID</th>
         <th style = "border: 1px solid #000000;">name</th>
         <th style = "border: 1px solid #000000;">Email</th>
			
         <tr>
            <td id = "ID" style = "border: 1px solid #000000;">3</td>
            <td id = "Name" style = "border: 1px solid #000000;">Manisha</td>
            <td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
         </tr>
			
         <tr>
            <td id = "ID" style = "border: 1px solid #000000;">4</td>
            <td id = "Name" style = "border: 1px solid #000000;">joe</td>
            <td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
         </tr>
			
      </table>
   </body>
</html>

Ao implantá-lo no servidor tomcat, esta página seria semelhante à mostrada na imagem a seguir -

Em nosso plano de teste, selecionaremos a pessoa na primeira linha da tabela de pessoas vista na página de lista de pessoas acima. Para capturar o ID dessa pessoa, vamos primeiro determinar o padrão onde encontraremos a pessoa na segunda linha.

Como pode ser visto no instantâneo a seguir, o ID da segunda pessoa é circundado por <td id = "ID"> e </ td>, e é a segunda linha de dados com este padrão. Podemos usar isso para corresponder ao padrão exato do qual queremos extrair informações. Como queremos extrair duas informações desta página, o ID da pessoa e o nome da pessoa, os campos são definidos da seguinte forma -

Inicie o JMeter, adicione um grupo de threads Test Plan → Add→ Threads(Users)→ Thread Group.

Em seguida, adicione uma solicitação HTTP de amostrador, selecione o plano de teste, clique com o botão direito Add → Sampler → HTTP Request e insira os detalhes conforme mostrado abaixo -

  • Name - Gerenciar

  • Server Name or IP - localhost

  • Port Number - 8080

  • Protocol - Manteremos em branco, o que significa que queremos HTTP como protocolo.

  • Path - jmeter / index.html

Em seguida, adicione um extrator de expressão regular. Selecione o HTTP Request Sampler (Manage), clique com o botão direitoAdd → Post Processor → Regular Expression Extractor.

A tabela a seguir fornece uma descrição dos campos usados ​​na captura de tela acima -

Sr. Não Campo e Descrição
1

Reference Name

O nome da variável na qual o teste extraído será armazenado (refname).

2

Regular Expression

O padrão com o qual o texto a ser extraído será correspondido. Os grupos de texto que serão extraídos são delimitados pelos caracteres '(' e ')'. Usamos '. +?' para indicar uma única instância do texto entre as marcas <td ..> .. </td>. Em nosso exemplo, a expressão é - <td id = "ID"> (+?) </td> \ s * <td id = "Name"> (+?) </td> \ s *

3

Template

Cada grupo de texto extraído colocado como membro da variável Pessoa, seguindo a ordem de cada grupo de padrão delimitado por '(' e ')'. Cada grupo é armazenado como refname_g #, onde refname é a string que você inseriu como o nome de referência e # é o número do grupo. $ 1 $ a refere-se ao grupo 1, $ 2 $ a refere-se ao grupo 2, etc. $ 0 $ refere-se a tudo o que a expressão inteira corresponde. Neste exemplo, o ID que extraímos é mantido em Person_g1, enquanto o valor de Name é armazenado em Person_g2.

4

Match No.

Como planejamos extrair apenas a segunda ocorrência desse padrão, correspondendo ao segundo voluntário, usamos o valor 2. O valor 0 faria uma correspondência aleatória, enquanto um valor negativo precisa ser usado com o Controlador ForEach.

5

Default

Se o item não for encontrado, este será o valor padrão. Este é um campo opcional. Você pode deixar em branco.

Adicione um ouvinte para capturar o resultado deste Plano de Teste. Clique com o botão direito do mouse no Grupo de Threads e selecione a opção Adicionar → Listener → Exibir Árvore de Resultados para adicionar o listener.

Salve o plano de teste como reg_express_test.jmx e execute o teste. A saída seria um sucesso, conforme mostrado na imagem a seguir -