Jmeter (6) - do básico ao proficiente - estabelecendo um plano de teste de banco de dados (tutorial detalhado)

1. Introdução

  No trabalho real, muitas vezes ouvimos sobre desempenho e estabilidade de banco de dados, etc., que às vezes exigem que engenheiros de teste avaliem e testem, portanto, este artigo apresenta principalmente o processo de conexão jmeter e criação de plano de teste de banco de dados. para você em grande detalhe através de exemplos e códigos. Espero que tenha certa orientação e valor de aprendizagem de referência para o estudo ou trabalho de seus amigos e sapatos infantis. Sapatos infantis que encontram problemas semelhantes e têm uma mente vazia podem se referir a ele.

2. Crie um plano de teste de banco de dados

  Nesta seção, você aprenderá como criar um plano de teste básico para testar o servidor de banco de dados e manipular o banco de dados (adicionar, excluir, modificar, consultar). Este exemplo usa o driver de banco de dados MySQL. Para usar o driver, o arquivo .jar que ele contém (por exemplo, mysql-connector-java-XXX-bin.jar) deve ser copiado para o diretório JMeter ./lib.

2.1 Criar um novo plano de teste

Primeiro inicie o JMeter e criamos um novo plano de teste, conforme mostrado na figura a seguir:

 

2.2 Adicionar usuários

Após criar um novo plano de teste, como falamos anteriormente, é hora de adicionar usuários. A primeira etapa que você fará com cada plano de teste do JMeter é adicionar um grupo de encadeamentos (usuário). O grupo de encadeamentos informa ao JMeter quantos usuários você deseja representar, com que frequência e com que frequência os usuários devem enviar solicitações.

Para adicionar um usuário: Primeiro selecione " Plano de teste " para adicionar um elemento ThreadGroup , clique com o botão direito do mouse para obter o menu "Adicionar" e selecione "Adicionar" → " ThreadGroup ".

Após adicionar usuários, você deverá ver o elemento Thread Group em Test Plan. Se você não vir esse elemento, expanda a árvore do Plano de Testes clicando no " + " na frente do elemento Plano de Testes para ver os usuários que você adicionou.

Por fim, você precisa modificar as propriedades padrão (se precisar modificar, não precisa modificar o padrão). Se o elemento do grupo de roscas ainda não estiver selecionado, selecione-o na árvore. Então você pode ver o "Thread Group Control Panel" na parte direita da janela "JMeter", conforme mostrado na imagem abaixo:

 

2.3 Adicionar configuração de conexão JDBC

Através das operações acima, definimos os usuários e, em seguida, devemos definir os destinos para os quais esses usuários estão indo e estabelecer uma conexão com o destino. Não deixe que esses usuários trabalhem duro por muito tempo e não saibam para quem estão trabalhando. Nesta seção, você precisa estabelecer uma conexão com o destino.

Etapas específicas: Primeiro selecione o elemento ThreadGroup . Clique com o botão direito do mouse para obter o menu Adicionar e selecione Adicionar → Elementos de configuração → Configuração de conexão JDBC. Em seguida, selecione este novo componente para visualizar seu painel de controle. Precisamos definir alguns campos, que são equivalentes às senhas conjuntas em filmes de guerra de espionagem, por exemplo: a senha conjunta entre Yang Zirong e Sitting Mountain Eagle em "Taking Tiger Mountain": Qual é o blush? Atualizado. Por que Huang La está de novo? Cera revestida anti-frio; o rio Yangtze, o rio Yangtze, o rio amarelo e assim por diante. Somente quando a senha estiver correta é que uma conexão pode ser estabelecida. Caso contrário, é considerado perigoso. Não é para estabelecer uma conexão. O desempenho específico no teste é um erro! ! !

Defina os seguintes campos (estes assumem que usaremos um banco de dados MySQL chamado " hongge "):

  • Nome da variável (o nome da variável vinculado ao pool): esse nome é personalizado e será usado na solicitação JDBC; isso precisa identificar exclusivamente a configuração. Ele é usado pelo JDBC Sampler para identificar a configuração a ser usada.
  • URL do banco de dados (URL do banco de dados): jdbc:mysql:// Endereço IP do banco de dados: porta do banco de dados/nome do banco de dados (por exemplo, Hongge compila o MySQL localmente: jdbc:mysql://localhost:3306 / hongge)
  • Classe de driver JDBC : com.mysql.jdbc.Driver
  • Nome de usuário : O nome de usuário para a conexão com o banco de dados
  • Senha : A senha para a conexão com o banco de dados

Nota: Bata no crânio, bata no quadro-negro! ! !

O JMeter cria um pool de conexão de banco de dados usando as definições de configuração especificadas no Painel de Controle. O pool é referenciado na solicitação JDBC no campo Nome da Variável. Vários elementos de configuração JDBC diferentes podem ser usados, mas eles devem ter nomes exclusivos. Cada solicitação JDBC deve fazer referência a um conjunto de configurações JDBC. Mais de uma solicitação JDBC pode se referir ao mesmo pool.

Outros campos do painel de controle da configuração de conexão podem ser deixados com seus valores padrão. Como mostrado abaixo:

 

2.4 Adicionar solicitação JDBC

Através das operações acima, definimos usuários e já sabemos que o destino estabeleceu uma conexão com o conector, e então precisamos atribuir tarefas específicas a esses usuários (quem é responsável por monitorar, quem é responsável por assassinar, quem é responsável para guarda). Nesta seção, você especificará a solicitação JDBC (tarefa de assassinato) a ser executada.

Etapas específicas: Selecione o elemento ThreadGroup . Clique com o botão direito do mouse para obter o menu Incluir e selecione Incluir → Amostrador → Solicitação JDBC. Em seguida, selecione este novo elemento para visualizar seu painel.

O JMeter envia solicitações na ordem em que são adicionadas à árvore.

Primeiro edite as seguintes propriedades

  • Nome da variável: escreva o nome do pool de conexão do banco de dados aqui (consistente com o nome da configuração de conexão JDBC)
  • Consulta: Preencha a instrução SQL para consultar os dados do banco de dados (não adicione ";" no final da instrução SQL preenchida)
  • valores de parâmetro: os valores de parâmetro dos dados
  • tipos de parâmetro: o tipo de parâmetro dos dados
  • nomes de cariables: nomes de variáveis ​​que contêm os resultados retornados pela instrução SQL
  • nome da variável do resultado: crie uma variável de objeto para salvar todos os resultados retornados
  • tempo limite da consulta : tempo limite da consulta
  • manipular conjunto de resultados: define como lidar com os resultados retornados por instruções que podem ser chamadas

Como mostrado abaixo:

 

O Tipo de Consulta (tipo de instrução SQL) contém dez tipos e cada tipo tem uma função diferente, descrita abaixo.

1、Selecione a declaração

Este é um tipo de instrução de consulta; se o conteúdo da consulta na solicitação JDBC for uma instrução de consulta, selecione esse tipo.

PS: Várias instruções de consulta (sem parâmetros) podem ser executadas juntas em sequência, e o Tipo de consulta precisa ser definido como: Instrução que pode ser chamada;

Se o Tipo de Consulta for: Instrução select, somente a primeira instrução select será executada.

2、Atualizar declaração

Este é um tipo de instrução de atualização (incluindo inserção e atualização); se o conteúdo da consulta na solicitação JDBC for uma instrução de atualização, selecione esse tipo.

PS: Se várias instruções de atualização forem escritas nesse tipo, apenas a primeira ainda será executada (o motivo é o mesmo acima e os detalhes são descritos abaixo).

3、Declaração de chamada

Este é um tipo de instrução que pode ser chamado e CallableStatement fornece uma maneira padrão para todos os DBMSs chamarem procedimentos armazenados.

Os procedimentos armazenados são armazenados no banco de dados e as chamadas para os procedimentos armazenados estão contidas no objeto CallableStatement.

A chamada é escrita usando uma sintaxe de escape e tem duas formas: uma com um parâmetro de resultado e outra sem um parâmetro de resultado; o parâmetro de resultado é um parâmetro de saída (OUT) que é um procedimento armazenado O valor de retorno.

Ambas as formas podem receber parâmetros com um número variável de entradas (parâmetros IN), saídas (parâmetros OUT) ou entradas e saídas (parâmetros INOUT), e o ponto de interrogação será usado como um espaço reservado para os parâmetros.

A sintaxe para chamar um procedimento armazenado em JDBC é a seguinte. Observe que os colchetes indicam que o conteúdo entre eles é opcional; os próprios colchetes não fazem parte da sintaxe.

{call procedure name[(?, ?, ...)]}, a sintaxe da procedure que retorna o parâmetro result é: {? = call procedure name[(?, ?, ...)]};

A sintaxe para um procedimento armazenado sem parâmetros é semelhante: {call procedure name}.

4、Instrução de seleção preparada

A instrução é usada para gerar um plano de execução para uma instrução SQL (é por isso que a instrução select executará apenas a primeira instrução select), se apenas uma instrução SQL for executada, a instrução será o melhor tipo;

A instrução Prepared é usada para vincular variáveis ​​para reutilizar planos de execução. Para instruções SQL que são executadas várias vezes, a instrução Prepared é sem dúvida o melhor tipo (gerar planos de execução consome recursos, e a diferença de velocidade entre as duas implementações pode ser centenas ou milhares de vezes );

PS: O consumo da primeira execução de PreparedStatement é muito alto, seu desempenho se reflete em execuções repetidas subsequentes.

5、Declaração de atualização preparada

O uso da instrução Prepared update e da instrução Prepared select é muito semelhante. Para obter detalhes, consulte o quarto tipo.

6、 Comprometer

Commit significa: escrever o resultado da instrução SQL não armazenada na tabela do banco de dados; na solicitação JDBC do jmeter, esse tipo de consulta também pode ser selecionado de acordo com o uso específico.

7、Reversão

Rollback refere-se ao processo de revogação da instrução SQL especificada; na solicitação JDBC do jmeter, esse tipo também pode ser usado conforme necessário.

8、AutoCommit(falso)

O modo de operação padrão do MySQL é autocommit. Indica que cada instrução SQL é executada automaticamente como uma transação separada, a menos que uma transação seja iniciada explicitamente;

Podemos alterar se o modo autocommit é enviado automaticamente definindo o valor de autocommit;

E AutoCommit (false) significa AutoCommit (false), ou seja, a operação do usuário esteve em uma determinada transação, até que um commit commit ou rollback seja executado, a transação atual será finalizada e uma nova transação será iniciada.

9、AutoCommit(true)

O efeito desta opção é o oposto do anterior, ou seja: em qualquer caso, o resultado será automaticamente confirmado e o resultado será escrito, encerrando a transação atual e iniciando a próxima transação.

10. Editar (${})

A instrução SQL na solicitação JDBC no jmeter não pode usar parâmetros, por exemplo: SELECT * FROM ${table_name} é inválido.

Se vários usuários diferentes precisarem usar SQL diferente ao mesmo tempo, isso pode ser feito parametrizando toda a instrução SQL; (coloque a instrução SQL no arquivo csv e, em seguida, use o parâmetro na Consulta da Solicitação JDBC em vez de $ {SQL_Statement}) .

Observações: Os próximos sete itens envolvem pontos de conhecimento como controle de transações de banco de dados.Se você não entender nada, verifique você mesmo o conhecimento relevante.

2.5 Adicionar ouvinte para visualizar/armazenar resultados de teste

O último elemento que você precisa adicionar ao seu plano de teste é o Listener . Este elemento é responsável por armazenar todos os resultados de uma solicitação JDBC em um arquivo e exibir os resultados.

Etapas específicas: Selecione o elemento ThreadGroup e adicione um ouvinte à árvore de resultados (Adicionar → Ouvinte → Árvore de resultados).

O ouvinte exibe os resultados e o painel. Como mostrado abaixo:

 

2.6 Salve o teste

Clique no ícone do botão "Salvar" no menu, selecione o local de salvamento e clique em "Salvar" para salvar o plano de teste, conforme mostrado na figura a seguir:

 

2.7 Executando o teste

Após salvar o plano de teste, execute o teste no menu Executar → Iniciar ou Ctrl + R, conforme mostrado na figura a seguir:

 

Acho que você gosta

Origin blog.csdn.net/ZangKang1/article/details/124077124
Recomendado
Clasificación