Entrevista Nirvana: Guia de teste de desempenho Jmeter (segundo)

1. Introdução e instalação do JMeter

Introdução ao JMeter

  1. JMeter é uma ferramenta de teste de estresse baseada em Java desenvolvida pela organização Apache. Ele tem as vantagens de código aberto e estrutura gratuita e flexível e suporte multiplataforma. Além dos testes de estresse, o JMeter também pode ser usado para testes de interface de aplicativos.
  2. Download, instalação e inicialização do JMeter

download:

Visite o site oficial do JMeter: https://jmeter.apache.org/download_jmeter.cgi

Clique para baixar a versão do Windows apache-jmeter-5.1.1.zip

Instalar:

Descompacte-o na unidade D. Estrutura de diretórios:

diretório bin: comando iniciar

  • jmeter.bat é um arquivo em lote inicializável no Windows
  • Script de shell executável jmeter.sh no Linux
  • jmeter.properties: arquivo de configuração principal (codificação chinesa de configuração)
  • Diretório lib: armazena os pacotes jar dos quais o Jmeter depende e instala plug-ins no diretório ext em lib.

comece:

  • Entre no diretório bin e clique duas vezes no arquivo jmeter.bat para iniciar o jmeter.

(Se não puder ser aberto, significa que o ambiente de trabalho JDK não foi configurado corretamente. O motivo: o JMeter precisa ser baseado no ambiente Java)

  • Digite o diretório bin do apache-jmeter no dos e execute o comando: jmeter também pode ser iniciado

3. Configure o ambiente de trabalho jmeter

Método: Instale o jdk e configure variáveis ​​de ambiente

1) Instale o jdk , que requer a versão 1.8 ou superior.

Durante a instalação do jdk, lembre-se de copiar o caminho para uso posterior.

2) Configure as variáveis ​​de ambiente do sistema do jdk:

a》java_home: caminho de instalação do jdk, (é necessário criar um novo)

b》path: Adicione o diretório de trabalho bin do jdk (%java_home%\bin;)

(Basta editar e adicionar um caminho de trabalho)

3) Verificação:

A. Digite o comando: javac in dos para exibir o formato e as opções do comando javac.

B. jmeter.bat no diretório bin de inicialização pode ser aberto normalmente.

A interface de configuração está em chinês simplificado, como segue:

2. Use JMeter para fazer testes de função de interface

Processo: Plano de teste-"Grupo de threads-"solicitação http-"Asserção de resposta-"Resultado da asserção-"Veja a árvore de resultados!

O plano de teste vem com isso.

Plano de teste : equivalente a um projeto, um determinado plano de teste de projeto

Adicionar um grupo de threads : equivalente a um ponto de função, ou interface, um determinado grupo de threads de interface

Clique com o botão direito em "Plano de Teste"->Adicionar->Thread (Usuário)->Grupo de Threads.

Em seguida, você pode configurar o grupo de threads (geralmente você só precisa configurá-lo ao fazer testes de desempenho e a interface raramente é usada)

Explicação detalhada dos parâmetros do grupo de threads:

Nome : Defina o nome apropriado de acordo com o negócio. O teste de interface é o nome da interface e o teste de desempenho é o ponto de função. 2. Ação ao encontrar um erro: O padrão é "continuar", ignore o erro e continue para concluir o solicitação. 3. Número de threads: O número de usuários virtuais, o padrão é 1, um usuário ocupa um thread. Ao testar multiusuários simultaneamente, você precisa definir aqui o número de usuários simultâneos, ou seja, quantos threads definir.

Tempo de aceleração (segundos) : O tempo necessário para iniciar todos os usuários virtuais. O significado é o seguinte: Por exemplo: se o número de threads for 10 e o tempo de inicialização for de 2 segundos, significa que 10 usuários precisam ser iniciados em 2 segundos. Em média, 5 usuários são iniciados por segundo. O tempo de inicialização é 0, o que significa que inicia ao mesmo tempo e é simultâneo.

Número de loops : O número de vezes que cada usuário envia uma solicitação, como parametrização. Se o número de threads for 10 e o número de loops for 5, então cada thread (usuário) envia 5 solicitações. O número total de solicitações é 10 * 5 = 50. Se "Forever" estiver marcado, todos os threads continuarão a enviar solicitações até que sejam interrompidos manualmente ou o agendador seja definido.

Agendador : Defina a duração e o tempo de atraso para a inicialização do grupo de threads (o agendador precisa verificar o número de ciclos para ser efetivo para sempre) Duração (segundos): Duração do teste: 24 horas = 24*3600 segundos Atraso na inicialização (segundos): Hora de início do atraso do teste

Adicionar solicitação HTTP : equivalente à etapa de teste no caso de teste, solicitação XX-HTTP

Clique com o botão direito em "Grupo de Threads"->Adicionar->Amostrador->Solicitação HTTP

Defina as informações da solicitação HTTP:

Fundamentos

2.1. Servidor Web

Protocolo: o protocolo usado para enviar solicitações HTTP ao servidor de destino. Pode ser HTTP ou HTTPS. O padrão é HTTP.

Nome ou IP do servidor: O nome ou IP do servidor de destino para o qual a solicitação HTTP é enviada, como: www.jd.com

Número da porta: o número da porta do servidor de destino. O valor padrão é 80. Você pode deixar em branco. https é 443.

Obs: Não há necessidade de inserir http:// em “Nome do Servidor ou IP”, ele será adicionado automaticamente ao solicitar;

2.2. Solicitação HTTP

Método: Método para enviar solicitações HTTP, incluindo GET, POST, etc.

Caminho: caminho do URL de destino (a parte entre o nome do servidor e os parâmetros)

Codificação de conteúdo: o método de codificação padrão é iso8859, que foi alterado para utf-8 para oferecer suporte ao chinês. Seguir redirecionamento: quando a resposta à solicitação HTTP for 302/301, o JMeter seguirá o redirecionamento para a página de destino.

Use keepAlive: O método Keep-Alive é usado para comunicação HTTP entre o jmeter e o servidor de destino para manter uma conexão longa, reduzindo o número de conexões e, assim, encurtando o tempo de conexão****

2.3. Parâmetros de solicitação

A) Parâmetros: A lista de dados transportada pela solicitação get, pares nome-valor (os parâmetros são enviados junto com a solicitação)

B) Dados do corpo da mensagem: os dados da solicitação transportados pela solicitação de postagem são dados no formato json, semelhante a um dicionário

C) Upload de arquivo: post solicita upload de arquivo local. O tipo de arquivo deve ser arquivo. Observação: "Codificação" precisa ser verificada quando os parâmetros adicionados contêm caracteres chineses.

Exemplo de solicitação HTTP: https://www.jd.com/, abra a página inicial do JD e obtenha solicitação

Adicionar declaração de resposta

Clique com o botão direito em "Solicitação HTTP"->Adicionar->Asserção->Asserção de Resposta (verifique se a resposta após a solicitação está correta)

Conteúdo das asserções que precisam ser definidas:

Inclui: escopo de aplicação (essa solicitação), campos de resposta, regras de correspondência e adição de padrões de teste a serem verificados

3.1. aplicar a : expressa a afirmação dessa solicitação. O padrão é afirmar apenas a solicitação principal (somente amostra principal)

3.2. Campo de teste : expressa o conteúdo da asserção, incluindo texto de resposta, código de resposta, informações de resposta, etc. Geralmente é o texto de resposta da asserção.

3.3. Regras de correspondência de padrões : expressa asserções, incluindo incluir, combinar, igual, etc. Geralmente, é usado incluir ou igual.

3.4. Modo de teste : Escrito de acordo com o negócio, pode ser entendido como nossos resultados esperados

4. Adicione resultados de asserção

Clique com o botão direito em "Solicitação HTTP" -> "Adicionar" -> "Listener" -> "Resultado da Asserção" para visualizar o resultado da asserção

[Asserção] também conhecido como: ponto de verificação

Significado: verifique se os dados esperados correspondem aos dados reais

Método: primeiro adicione a asserção da resposta e depois adicione o resultado da asserção, que é uma combinação

Asserção bem-sucedida: se o resultado da asserção tiver apenas uma linha, que é o nome da solicitação, significa sucesso.

Falha na asserção: O resultado da asserção possui duas linhas, a segunda linha mostra o motivo da falha.

5. Visualize a árvore de resultados , o objetivo é visualizar os resultados após o envio da solicitação:

Clique com o botão direito em "Solicitação HTTP"->Adicionar->Listener->Ver árvore de resultados

Clique para enviar a solicitação. O resultado de image.png é o seguinte:

Capítulo 4 JMeter simula vários usuários enviando solicitações ao mesmo tempo

1. Uma prática simples de teste de estresse

Há uma interface de solicitação http http://localhost:8080/goods/to_list. Você precisa usar o Jmeter para realizar testes de estresse nela. As etapas de teste são as seguintes:

a. Crie um novo grupo de threads.

b. Defina os parâmetros do grupo de threads. A configuração aqui é: 10 threads, iniciados ao mesmo tempo, circulam uma vez.

c. Adicionado valor padrão da solicitação http. No grupo de threads criado na etapa anterior, adicione um novo valor padrão de solicitação http. Todas as solicitações usarão o valor padrão definido. Isso define o protocolo como http, o IP como localhost e a porta como 8080.

d. Adicione a solicitação http para ser testada quanto à resistência.

O protocolo, IP e porta na primeira caixa vermelha na figura abaixo não precisam ser definidos. Os valores padrão definidos na etapa c serão usados. Você só precisa definir o caminho da solicitação Path. Preencha /goods /to_list aqui.

e. Adicione um novo ouvinte para visualizar os resultados do teste de resistência. Três tipos são adicionados aqui: relatórios agregados, resultados gráficos e visualização de resultados em tabelas. A diferença é que os resultados são exibidos em formas diferentes.

f. Clique no botão Executar para iniciar o teste de estresse e visualizar os resultados.

5. Como verificar gargalos de carga e desempenho do sistema

Execute o seguinte comando no servidor:

principal

Conforme mostrado na figura abaixo, você pode ver a média de carga do sistema. A carga média de 1 minuto, a carga média de 5 minutos e a carga média de 15 minutos são 1,58, 0,50 e 0,23, respectivamente. Ao mesmo tempo, você pode veja que o processo que mais consome recursos é o mysql.

Como criar uma solicitação com parâmetros

1. Primeiro crie uma nova solicitação http.

2. Defina o caminho da solicitação e adicione parâmetros. Conforme mostrado na figura abaixo, preencha o caminho da solicitação em Caminho e clique em Adicionar para adicionar parâmetros. Existe um parâmetro chamado token.

Neste ponto, a solicitação de parâmetro foi criada. Clique em Executar para iniciar o teste de estresse.

3. Como simular a configuração de múltiplas variáveis ​​e simular múltiplas interfaces de solicitação de usuário

Crie uma nova configuração de conjunto de dados CSV.

2. Crie um novo arquivo de configuração config.txt e configure as informações do usuário. Escreva o nome do arquivo como desejar. Cada linha dos dados possui dois valores, userId e userToken, separados por vírgulas. Defini as informações de dois usuários aqui.

3. Consulte o arquivo de configuração. Consulte o arquivo de configuração config.txt em Csv Data Set Config e defina os nomes de variáveis ​​userId e userToken.

4. Faça referência às variáveis ​​no arquivo de configuração na solicitação. Ao preencher o parâmetro Valor, não escreva o valor rígido, mas escreva-o no formato do nome da variável. Quero me referir ao valor do Token do usuário no arquivo de configuração, então escreva-o no formato de {nome da variável} . Quero aqui fazer referência ao valor de userToken no arquivo de configuração, ele está escrito no formato de um nome de variável. Quero me referir ao valor de userToken no arquivo de configuração, então é escrito como {userToken}.

Agora que a configuração foi concluída, clique no botão Executar para iniciar o teste de estresse.

3. jmeter simula simultaneidade multiusuário

1. 100 usuários reais

Uma conta simula 100 usuários virtuais fazendo login ao mesmo tempo e 100 contas fazendo login ao mesmo tempo

a diferença

Uma conta pode ser usada por 100 pessoas, fazendo login ao mesmo tempo;

100 pessoas e 100 contas podem fazer login ao mesmo tempo.

mesmo

Ambos permitem que 100 pessoas façam login ao mesmo tempo, dependendo dos requisitos do projeto.

Fonte da conta

Use a interface de conta "Registrar" ou "Criar" para criar 100 usuários;

A interface "Consulta" salva os números de contas e senhas de 100 contas em um arquivo.

3. Extraia 100 arquivos de contas e senhas

O layout geral do script do medidor

Grupo de threads (nível um) ----> Valor padrão da solicitação, cabeçalho da solicitação, solicitação http, visualizar árvore de resultados (nível dois) -----> Expressão regular, pós-processador BeanShell (nível três).

Valor padrão da solicitação HTTP: é o local onde está armazenado o IP geral do sistema (protocolo: http; nome do serviço ou IP: 127.0.0.1);

Gerenciamento de cabeçalho HTTP: informações que precisam ser trazidas antes da solicitação da interface. Algumas interfaces não podem ser executadas sem elas (Autorização, Tipo de conteúdo, Aceitar, Agente do usuário). Por exemplo, o token que deve ser trazido é armazenado no cabeçalho;

Solicitação de login: método de solicitação, caminho de solicitação, corpo da mensagem; expressão regular para extrair token

Criar solicitação: método de solicitação, caminho da solicitação, corpo da mensagem; parametrizar nome de usuário e criar múltiplos usuários;

Conta de consulta: método de solicitação, caminho de solicitação, corpo da mensagem; expressão regular para extrair nome de usuário e senha; pós-processador BeanShell armazena valor de retorno no arquivo

(2) Expressões regulares e pós-processadores BeanShell em solicitações de consulta

Extração de expressão regular-----> Obtenha o conteúdo do campo desejado

Pós-processador BeanShell ----> armazena o conteúdo do campo extraído no arquivo especificado 4.csv

FileWriter fs=new FileWriter("D://recent//4.csv",true);

BufferedWriter out = novo BufferedWriter(fs);

out.write(vars.get("username")+","+vars.get("id")); //nome de usuário e id são nomes de definição regulares

out.write(System.getProperty("line.separator")); //Equivalente à quebra automática de linha "\n"

out.close();

close();

O número de threads no grupo de threads é igual ao número de itens extraídos. Execute o script para obter as contas e senhas de 100 usuários.

2. 100 usuários fazem login ao mesmo tempo

Configurar grupo de conversas

Número de threads: Número de usuários simultâneos

Tempo de aceleração (segundos): o tempo necessário para iniciar todos os threads

0 ----> representa simultaneidade simultânea;

100 ----> O número de threads é 100 e o tempo é 100 segundos. Representa iniciar um thread a cada 1s (100/100=1)

Número de loops: contagem de loops

O valor padrão é 1;

2 ----> O número de threads é 100 e o número de loops é 2. Representa o início de 200 threads;

Se "Forever" estiver marcado, ele será executado continuamente e precisa ser interrompido manualmente. Geralmente é usado com o agendador.

Suplemento: Temporizador de sincronização:

Função: Bloqueie os threads até que o número especificado de threads seja atingido e, em seguida, libere-os juntos, o que pode criar muita pressão em um instante;

Ao usar o temporizador de sincronização, o número de ciclos deve ser verificado como Forever

2. Simule login multiusuário

Adicione -----> configurações do arquivo de dados CSV no grupo de threads

Importe o arquivo que armazena a conta de usuário e senha, nomeie a variável e chame-a ao efetuar login.

Chame, passe o parâmetro ${name}

Nota: A conta e a senha neste sistema são iguais, portanto você só precisa chamar uma coluna de valores.

/api/v1/oauth/token?username=${name}&password=${name}&scope=all&grant_type=senha

Execute o teste e veja os resultados

100 usuários fazem login ao mesmo tempo

Continuando, seus likes são minha maior motivação para atualizar!

Acho que você gosta

Origin blog.csdn.net/a448335587/article/details/133280026
Recomendado
Clasificación