Jmeter (52) - Do nível básico ao avançado - passando parâmetros entre grupos de threads no jmeter (tutorial detalhado)

1. Introdução

Todos os artigos compartilhados anteriormente têm apenas um grupo de threads e os parâmetros são passados ​​​​apenas em um grupo de threads.Então, se precisarmos passar parâmetros em dois grupos de threads, como faremos isso? Hoje vou explicar aos meus amigos ou filhos como transferir parâmetros entre grupos de threads.

2. O que é passar parâmetros entre grupos de threads no jmeter?

Como o nome sugere: use a ferramenta jmeter para passar parâmetros entre dois ou mais grupos de threads.

3. Por que os parâmetros são passados ​​entre grupos de threads?

Em primeiro lugar, quando recebemos uma tarefa de teste de desempenho e precisamos testar uma interface, não precisamos fazer login todas as vezes (se você fizer login todas as vezes, isso afetará os resultados do teste), então, ao nos depararmos com esta situação, temos que fazer login. A interface obtém o token (sessão, cookie) e, em seguida, usa outro grupo de threads para realizar testes de estresse.
Em segundo lugar, você pode imaginar um cenário. Suponha que estejamos testando um programa de carrinho de compras. Antes de adicionar algo ao carrinho de compras, precisamos primeiro fazer login (tal design lógico está incorreto. Cada vez que você seleciona um item para adicionar ao carrinho de compras carrinho, você precisa fazer login novamente. Faça login, quem usará seu APP com esse design?). Em um cenário normal, nosso status de login pode ser mantido por um período de tempo, e não há necessidade de fazer login todas as vezes antes de adicionar um carrinho de compras. Neste caso, quando testamos, precisamos escrever o login e adicionar o carrinho de compras para dois grupos de threads. e então surge o problema: os dois grupos de threads não podem compartilhar parâmetros diretamente.

As duas situações acima são problemas práticos frequentemente enfrentados no trabalho, portanto, os parâmetros precisam ser passados ​​entre grupos de threads.

Se você quiser aprender testes automatizados, recomendo um conjunto de vídeos para você. Este vídeo pode ser considerado o tutorial de teste automatizado número um em toda a rede reproduzida por Bilibili. O número de pessoas online ao mesmo tempo atingiu 1.000 , e também há notas que podem ser coletadas e comunicadas por diversos canais.Mestre de comunicação técnica: 798478386    

[Atualizado] Uma coleção completa dos tutoriais práticos mais detalhados sobre testes automatizados de interface Python ministrados por Bilibili (a versão prática mais recente)_bilibili_bilibili [Atualizado] Uma coleção completa dos tutoriais práticos mais detalhados sobre testes automatizados de interface Python ministrados por Bilibili (versão prática ) A versão mais recente) tem um total de 200 vídeos, incluindo: 1. Por que a automação de interface deve ser feita para automação de interface, 2. Visão geral da solicitação de automação de interface, 3. Prática de interface para automação de interface, etc. do UP master, siga a conta UP. icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337

4. Como passar parâmetros entre grupos de threads?

O escopo das variáveis ​​JMeter é limitado ao thread ao qual pertencem. Este projeto é cuidadosamente considerado para permitir que o fio de teste opere de forma independente. Às vezes, os usuários podem precisar passar variáveis ​​entre threads diferentes (que podem ou não pertencer ao mesmo grupo de threads). No Jmeter, além das variáveis ​​​​básicas, existe outro tipo de propriedade, que é a sua própria propriedade.Podemos usar propriedades para completar a transferência de variáveis ​​​​entre grupos de threads. As propriedades são compartilhadas por todos os threads JMeter, portanto, quando um thread define uma propriedade, outros threads podem ler o valor atualizado.

5. Combate real

 Sem mais delongas, o irmão Hong gostaria de praticá-lo rapidamente. As etapas específicas são as seguintes:

1. Crie um plano de teste e renomeie-o para "JMeter Passing Parameters Across Thread Groups", em seguida, adicione um grupo de threads e renomeie-o para "Login". Como mostrado abaixo:

2. Selecione o grupo de threads, clique com o botão direito para adicionar o amostrador "Solicitação HTTP", renomeie-o para "Get Token" e configure o amostrador. Como mostrado abaixo:

 3. Selecione o grupo de threads, clique com o botão direito para adicionar um ouvinte e "Visualizar árvore de resultados", salve o script, execute o jmeter e visualize a árvore de resultados (teste se você consegue obter o token com sucesso, o irmão Hong já o obteve aqui e aguarde outros threads) definidos para uso posterior). Como mostrado abaixo:

Na terceira etapa, você pode ver que o irmão Hong obteve o token com sucesso. A próxima etapa é extrair o token e, em seguida, definir o token para o atributo para que outros grupos de threads possam chamá-lo.

4. Extraia o token. O extrator normal é usado aqui. Você pode usar outros extratores, desde que seja extraído. Primeiro, selecione "Regular Tester" na árvore de resultados e insira a expressão regular para extrair o token. Como mostrado abaixo:

 5. Como pode ser visto acima, a expressão regular preenchida pode ser extraída com sucesso para o token, selecione Obter token, clique com o botão direito para adicionar o extrator de expressão regular e, em seguida, copie a expressão regular testada aqui para o extrator de expressão regular para configuração relevante. Como mostrado abaixo:

6. De acordo com a ideia acima, se você extraí-lo, você precisa adicioná-lo ao atributo. O irmão Hong usa o pós-processador aqui - Pós-processador BeanShell. Selecione Obter token, clique com o botão direito para adicionar o pós-processador BeanShell e, em seguida, configure-o. Adicione o script. Como mostrado abaixo:

Roteiro de referência:

String token = bsh.args[0];
${__setProperty(newtoken,${token},)};
log.info("token:" + token);

7. Adicione " log.info("token:" + token); " ao script do pós-processador BeanShell acima. Em seguida, verifique no log se o valor do token foi obtido. Após executar o script do plano de teste, verifique Log (clique no ícone amarelo com ponto de exclamação no canto superior direito), conforme mostrado abaixo:

 

8. No registro acima, descobrimos claramente que o valor do token não foi extraído. A verificação do extrator de expressão regular descobriu que o número correspondente era -1. Há um problema aqui. Altere-o para 1, execute o plano de teste e verifique o log novamente, como segue Como mostrado na figura: 

9. Na figura acima, descobrimos que o valor do token foi extraído para o atributo e, em seguida, o token pode ser passado para outros grupos de threads para chamá-lo. Em seguida, continue criando um grupo de threads, clique com o botão direito para adicionar o elemento de configuração "HTTP Cookie Manager" e configure-o, conforme mostrado na figura a seguir:

10. Clique com o botão direito para adicionar o sampler "HTTP Request" e renomeie-o para "View Role" para configurá-lo, conforme mostrado na figura abaixo:

 11. Adicione o listener "View Result Tree", conforme mostrado na figura abaixo:

12. Salve o script do plano de teste e, após executar o jmeter, visualize a árvore de resultados (você pode ver a lista de funções obtidas), conforme mostrado na figura a seguir:

 

Ok, agora os parâmetros de passagem do grupo cross-thread do jmeter foram totalmente implementados.

6. Resumo

Aqui está uma explicação de como passar tokens entre threads, como cookies, sessões e outros parâmetros. Você pode simplesmente copiar o gato e o tigre. Bem, por hoje é isso, obrigado pela paciência na leitura.

Acho que você gosta

Origin blog.csdn.net/Faith_Lzt/article/details/133352165
Recomendado
Clasificación