Compartilhamento de tecnologia

Uma breve discussão sobre parâmetros de usuário de expressão regular do pré-processador

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Uma breve discussão sobre parâmetros de usuário de expressão regular do pré-processador

Parâmetros de usuário de expressão regular (Parâmetros de usuário RegEx) é um pré-processador (Pré-processador) que permite aos usuários extrair valores de dados de resposta com base em expressões regulares e aplicá-los, e passar esses valores como parâmetros para subseqüentesSolicitação HTTP ou outros lugares necessários. Este recurso é altamente flexível para lidar com conteúdo dinâmico, IDs de sessão, tokens, etc. e é um componente chave para implementar scripts de teste automatizados.

cenas a serem usadas

  1. Processamento de parâmetros dinâmicos: quando o sistema de destino gera diferentes parâmetros dinâmicos (como ID de sessão, carimbo de data/hora, etc.) em cada solicitação, ele precisa extrair os parâmetros subsequentes e usá-los para continuar as solicitações subsequentes.
  2. Personalização de dados de teste: personalize os parâmetros de solicitações subsequentes com base no conteúdo da resposta, como extrair o ID do usuário da resposta de login para solicitações de consulta de perfil subsequentes.
  3. Iteração de dados: se a resposta contiver vários conjuntos de correspondências, você poderá configurar o processador para fazer um loop na extração e aplicá-la a várias solicitações, adequado para listas de testes ou páginas de resultados de pesquisa.

Etapas de configuração

  1. Adicione parâmetros de usuário de expressão regular:
    ○ No ambiente de trabalho ou plano de teste do JMeter, selecione uma solicitação HTTP ou outro amostrador que precisa ser parametrizado.
    ○ Clique com o botão direito e selecione "Adicionar" > "Pré-processador" > "Parâmetros do usuário de expressão regular".
  2. Parâmetros de configuração:
    ○ Nome de referência da expressão regular: O nome da variável no extrator de expressão regular. O nome aqui deve ser consistente com a expressão regular.
    ○ Nomes de parâmetros regexp group number: O número do grupo do nome do parâmetro, conforme detalhado nos exemplos a seguir.
    ○ Número do grupo regex de valores de parâmetros: O valor correspondente do grupo de nomes de parâmetros, conforme detalhado nos exemplos a seguir.

Exemplos

Usamos SpringBoot para escrever o seguinte código de interface

 @PostMapping(value = "/login",produces = "application/json;charset=UTF-8")
    public String authenticate(@RequestBody JSONObject request) {

        String validUsername = "admin";
        String validPassword = "password";
        String response = "{"total":2,"data":[{"id":123,"name":"John Doe","email":"[email protected]","phone":"123-456-7890","address":{"street":"123 Main St","city":"New York","state":"NY","zip":"10001"},"interests":["sports","music","travel"]},{"id":456,"name":"Jane Smith","email":"[email protected]","phone":"987-654-3210","address":{"street":"456 Elm St","city":"Los Angeles","state":"CA","zip":"90001"},"interests":["reading","cooking","hiking"]}]}";


        if (request.getString("username").equals(validUsername) && request.getString("password").equals(validPassword)) {
            return response;
        } else {
            return response;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Então escrevemos o seguinte script
Insira a descrição da imagem aqui
Grupo de tópicos: manter padrão
Solicitação HTTP 1: protocolo http, nome do servidor ou IP127.0.0.1, número da porta 8091, método POST, caminho/login, codificação de conteúdo utf-8, dados do corpo da mensagem

{
    "username": "admin",
    "password": "password"
    }
  • 1
  • 2
  • 3
  • 4

Extração de expressão regular器:设置的参数为引用名称var,正则表达式"id"😦.?),"nome":"(.?)", "email" (pode ser conhecido pelo conteúdo do código de exemplo), e nosso objetivo é extrair o id e o nome, o número correspondente é definido como -1 e o valor padrão é NotFound
Neste ponto, podemos primeiro desabilitar a solicitação HTTP 2 e os parâmetros do usuário de expressão regular, depois executar o script e visualizar o amostrador de depuração da árvore de resultados. Você pode ver os seguintes resultados no corpo da resposta dos dados de resposta.

Variáveis ​​JMeter:
JMeterThread.last_sample_ok=falso
JMeterThread.pack=org.apache.jmeter.threads.PacoteDeSample@4fa1cf1
INÍCIO.HMS=165132
INÍCIO.MS=1720515092259
INÍCIO.YMD=20240709
TESTESTART.MS=1720578466746
_jm__threadgroup__idx=0
_jmeter.U_T
= grupo de tópicos 1-1
var=NãoEncontrado
var_1=
var_1_g=2
var_1_g0=“id”:123,“nome”:“John Doe”,“e-mail”
var_1_g1=123
var_1_g2=João Ninguém
var_2=
var_2_g=2
var_2_g0=“id”:456,“nome”:“Jane Smith”,“e-mail”
var_2_g1=456
var_2_g2=Jane Smith
var_matchNr=2

A partir do conteúdo acima, podemos ver o valor da variável var extraída pela expressão regular correspondente. Neste momento, podemos continuar a verificar a aplicação do pré-processador de parâmetros do usuário da expressão regular e continuar a definir outros parâmetros do componente.
Solicitação HTTP 2: protocolo http, nome do servidor ou IP127.0.0.1, número da porta 8091, método POST, caminho/login, codificação de conteúdo utf-8, em seguida, adicione dois parâmetros aos parâmetros, preencha os nomes 123, 456 respectivamente, não os use agora. Independentemente do significado específico, vamos tentar primeiro.
Parâmetros do usuário de expressão regular: O nome de referência da expressão regular é definido como var, o nome do parâmetro aqui deve ser consistente com o nome do parâmetro na expressão regular acima, o número do grupo regexp dos nomes dos parâmetros é definido como 1, o número do grupo regex dos valores dos parâmetros é definido para 2, por que Como configurar assim? Podemos entender desta forma. Não definimos 123 e 456 na solicitação HTTP 2? Definir o número do grupo regexp dos nomes dos parâmetros como 1 pode ser entendido como usar os parâmetros var_1_g1 e var_2_g1 nos parâmetros var. na solicitação HTTP 2 Depois que os parâmetros forem consistentes com os parâmetros aqui, corresponderemos ao relacionamento entre parâmetros e dados, abrindo caminho para que o número do grupo regex dos valores dos parâmetros seja definido como 2. Podemos entender bem que quando os valores dos parâmetros ​​o número do grupo regex é definido como 2, o que é obtido Os parâmetros se tornam var_1_g2 e var_2_g2.
A próxima etapa é verificar nossos resultados. Execute o script para visualizar os dados postados do corpo da solicitação na solicitação HTTP 2 na árvore de resultados. No geral, nossa solicitação falhou, mas isso não importa. para verificar. O resultado é irrelevante.

POSTAR http://127.0.0.1:8091/login
Dados de postagem:
123=João+Silva&456=Jane+Smith
[nada de biscoitos]

A partir dos dados POST acima, você pode ver que os dados correspondentes foram refletidos na solicitação.

Precauções

● Escopo: Os parâmetros do usuário de expressão regular só têm efeito na solicitação HTTP ou amostrador a seguir. Se você precisar aplicá-los globalmente, considere usar o "extrator de expressão regular" em conjunto com variáveis.
● Depuração: Use o ouvinte "View Result Tree" para verificar a correspondência de expressões regulares e garantir a extração correta de dados.

Resumir

Os parâmetros do usuário de expressão regular são um recurso poderoso do JMeter, que simplifica o processamento de dados dinâmicos e melhora a flexibilidade e automação de scripts de teste. Configurada e utilizada adequadamente, esta função pode lidar com eficácia com as necessidades de teste de desempenho de sistemas complexos.