Compartilhamento de tecnologia

Aplicação da ferramenta: Use JMeter para implementar testes de desempenho do Phpwind!

2024-07-12

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

Introdução ao experimento

No estudo anterior, usamos o JMeter para concluir o teste de interface em nível de protocolo para o sistema Agileone. Sabemos também que o núcleo da tecnologia de teste de desempenho é usar a tecnologia multi-threading para enviar solicitações de protocolo para completar a simulação de um grande número de usuários acessando o sistema. A intenção original do design do JMeter é, na verdade, testar o desempenho. Por exemplo, a primeira etapa quando criamos um plano de teste é criar um grupo de threads. Este experimento explicará como usar o JMeter para concluir o teste de desempenho de login e postagem do Phpwind.

Propósito

(1) Domine o uso da pesquisa de associação no JMeter.

(2) Domine o design e uso de threads no JMeter.

(3) Dominar o uso de relatórios de teste no JMeter.

processo experimental

  1. Implementar o amostrador de login do Phpwind

Criamos um total de 100 usuários para Phpwind de testuser_1 a testuser_100, portanto durante o processo de teste de desempenho, devemos implementar login aleatório de usuários, para simular melhor cenários reais.

(1) Crie um amostrador de "solicitação HTTP", nomeie-o como "DoLogin" e preencha os parâmetros de solicitação POST de login correspondentes.

(2) Crie uma "afirmação de resposta" e "visualize a árvore de resultados" para o amostrador, e o mesmo se aplica às solicitações subsequentes.

(3) Crie um “pré-processador” para o amostrador e implemente um número aleatório de 1 a 100.

(4) A solicitação de teste final implementada é a seguinte:

2. Use expressões regulares para associar códigos de verificação

Como ao postar no Phpwind você deve especificar um campo "verificar", cujo valor é um número aleatório, devemos usar expressões regulares para associar o valor correspondente na resposta. Esta parte foi dominada no processo de implementação de teste de interface. Aqui veremos principalmente como implementá-lo no JMeter:

(1) Adicione um amostrador de "solicitação HTTP" e envie uma solicitação GET para "/phpwind/post.php?fid=2" para obter a resposta.

(2) Adicione um pós-processador ao amostrador, defina-o como "Regular Expression Extractor" e faça as seguintes configurações:

(3) Uma breve explicação dos campos de entrada acima:

a) Nome de referência: O nome do parâmetro a ser referenciado na próxima solicitação. Se você preencher verifycode, poderá usar ${verifycode} para referenciá-lo.

b) Expressão regular: Os parênteses contêm o conteúdo a ser extraído, que é o que temos habilidade em aplicar.

c) Modelo: entre aspas $-$ Se a expressão regular que definimos encontrar vários valores, o número de sequência indica qual valor processar.

d) Números correspondentes: 0 representa um valor aleatório, 1 representa todos os valores, geralmente apenas preencha 0.

e) Valor padrão: Caso o parâmetro não obtenha valor, então é fornecido um valor padrão para que ele obtenha.

3. Adicione uma solicitação de postagem

(1) Defina um parâmetro de usuário para o amostrador e use o assistente de função para gerar um número aleatório para o título e conteúdo da postagem.

(2) Use o verifycode obtido na etapa anterior como o valor do campo verify no corpo da solicitação POST.

(3) A solicitação de teste final gerada é a seguinte:

4. Certifique-se de que todos os recursos sejam baixados com cada solicitação

Por padrão, o JMeter, assim como o teste de interface, é responsável apenas por baixar a página solicitada no momento e não baixará outros recursos adicionais da página. Isso obviamente não é consistente com a situação real. Portanto, precisamos baixar todos os recursos da página. Na aba "Avançado" do amostrador HTTP, marque "Obter todos os recursos incluídos dos arquivos HTML".

5. Projete cenários simultâneos

Para esta execução, ainda seguimos o mesmo desenho de cenário do Java script anterior: 50 usuários, 5 usuários simultâneos a cada 10 segundos e cada usuário executa 100 vezes. As configurações específicas são as seguintes:

Definir o parâmetro "Período de aceleração (em segundos)" nas configurações acima para 100 segundos significa adicionar um thread a cada dois segundos. Embora a frequência não possa ser definida arbitrariamente como um thread personalizado, tal configuração é consistente com cada 10 segundos. Não há diferença essencial no efeito de 5 usuários simultâneos.

Além de definir o número de execuções, também podemos definir o tempo total de execução do processo de teste de desempenho. Na parte inferior da imagem acima, marque “Agendador” e defina a duração. Se precisarmos funcionar continuamente por uma hora, só precisamos definir seu valor para 3600 segundos.

6. Defina um tempo de reflexão para cada etapa

Think time é uma configuração necessária para simular cenários reais de usuários. O componente "timer" fornecido pelo JMeter é usado para simular o tempo de pensamento do usuário. O JMeter vem com muitos tipos de temporizadores. Usamos o "temporizador aleatório Gaussiano". Um amostrador define o tempo de reflexão:

(1) Clique com o botão direito em um amostrador, por exemplo, clicamos em "DoLogin" para criar um novo "temporizador aleatório gaussiano".

(2) Defina o deslocamento para 2.000 milissegundos e o deslocamento de atraso fixo para 4.000 milissegundos. Sua função é gerar um número aleatório no intervalo de 4 segundos mais ou menos 2 segundos, ou seja, o tempo de pausa aleatória fica entre 2 segundos e 6 segundos.

Mais sobre o uso do temporizador JMeter

7. Configure pontos de encontro

O conceito de ponto de encontro foi proposto pela primeira vez pela ferramenta de teste de desempenho LoadRunner. Sua função é que, após um grupo de threads enviar uma solicitação, todos se reúnam até que todos os threads estejam sincronizados em um determinado momento e, em seguida, enviem a solicitação juntos. É usado para simular testes de simultaneidade mais rigorosos. Embora o uso de pontos de encontro não seja consistente com cenários reais, ele pode colocar maior pressão instantânea no servidor.

No JMeter, podemos usar o temporizador "Synchronizing Timer" para concluir o processamento dos pontos de encontro. Por exemplo, a figura a seguir nos mostra como implementar uma estratégia de teste simultâneo para o amostrador “DoPost”:

(1) Número de usuários simulados para agrupar: Este valor corresponde ao número de threads no ponto de coleta. Aqui definimos como 50, o que significa que uma coleção precisa esperar 50 threads antes de enviar a próxima solicitação juntas. Se definido como 0 aqui, significa usar a coleção de todos os threads definida pelo grupo de threads.

(2) Tempo limite em milissegundos: Defina aqui como 10.000, o que significa que o tempo limite do ponto de encontro é de 10 segundos, ou seja, se todos os threads não esperarem 10 segundos, eles não esperarão mais. O thread que concluiu a coleção envia diretamente a próxima solicitação.

Na verdade, no desenvolvimento de threads nativos do Java, também podemos usar os dois métodos de sincronização "wait()" e "notifyAll()" para completar a simulação do ponto de encontro.

8. Veja os resultados dos testes de desempenho

O JMeter também possui muitos componentes integrados para visualizar relatórios de teste, mas o mais comumente usado é o "relatório de agregação" criado para um determinado grupo de threads. Por exemplo, os resultados do teste de desempenho atual do Phpwind são mostrados abaixo:

Podemos ver na figura acima o número de execuções de cada amostrador, várias estatísticas matemáticas de tempo de resposta (média, mediana, valor de 90%, valor mínimo, valor máximo), taxa de erro de transação, taxa de transferência de largura de banda da rede, tamanho total de resposta, total tamanho da solicitação e outros dados. Além de monitorar os indicadores de desempenho do lado do servidor, esses indicadores são basicamente suficientes para analisarmos dados básicos para um teste de desempenho.

Exercício de pensamento

(1) Esteja familiarizado com o uso de outros componentes no JMeter.

(2) Use JMeter para completar o teste de desempenho de um projeto e resolver os problemas encontrados um por um.

(3) Compare o teste de desempenho no JMeter com o teste de desempenho que desenvolvemos usando Java nativo para ver as semelhanças e diferenças.

Por fim, gostaria de agradecer a todos que leram meu artigo com atenção, olhando para o aumento de fãs e de atenção, sempre há alguma cortesia. Embora não seja algo muito valioso, se você puder usá-lo, poderá levá-lo diretamente. 

Documento de entrevista de teste de software

Devemos estudar para encontrar um emprego bem remunerado. As perguntas da entrevista a seguir são os materiais de entrevista mais recentes de empresas de Internet de primeira linha, como Alibaba, Tencent, Byte, etc., e alguns chefes da Byte deram respostas confiáveis ​​​​depois de terminar este conjunto. Acredito que todos podem encontrar um emprego satisfatório com base nas informações da entrevista.

Insira a descrição da imagem aqui