import XXXsign.Openapi2sign; --- Importar o método de assinatura no pacote jar String str1 = "12121"; --- campos que precisam ser assinados; aprender com o desenvolvimento quais campos são necessários String result = ""; -define o resultado da variável result = new Openapi2sign (). md5Encode (str1); --- chama o método de assinatura para assinar o campo de assinatura System.out.println (resultado); --- gera o campo assinado vars.put ("sign", result. toString ()); ---- Defina o valor do sinal de travessia global como o valor após a assinatura. O resultado da assinatura precisa ser executado
Após escrever o script básico e os parâmetros de solicitação, inicie o script de depuração: o primeiro problema foi encontrado:
A verificação da assinatura da solicitação falhou:
Encontre informações através de vários online: finalmente entendi: as etapas são as seguintes:
1. Aprenda com o desenvolvedor as regras e algoritmos de assinatura do front-end e obtenha o pacote XXXsign.jar de assinatura do front-end.
2. Adicione o pacote ao diretório Jmeter / lib.
3. Como a assinatura gerada por cada solicitação HTTP é diferente, é necessário adicionar um pré-processador a cada solicitação HTTP que requer uma assinatura "" Amostrador BeanShell e amostrador de depuração (para depuração, exclua ao executar oficialmente o script )
4. Escreva um script, gere uma assinatura e defina a variável de assinatura, chame-a no elemento de configuração do cabeçalho de solicitação http
import XXXsign.Openapi2sign; --- Importe o método de assinatura no pacote jar String str1 = "12121"; --- campos que precisam ser assinados; aprenda com o desenvolvimento quais campos são necessários
String token = "" ---- definição de assinatura token
String time = $ {__ time (/ 1000)} ---- Parâmetro de tempo necessário para a assinatura
String str00 = token + time + str1 --- emendado no campo de assinatura final String result = ""; --define result variable variable result = new Openapi2sign (). md5Encode (str00); --- chame o método de assinatura para assinar o campo de assinatura System.out.println (resultado); --- produza o campo assinado, quando executado oficialmente, comente esta linha . put ("sign", result.toString ()); ---- Defina o valor do sinal de travessia global como o valor após a assinatura. O resultado da assinatura precisa ser executado
5. O script depurado, você pode ver a sequência da assinatura da solicitação nos resultados do amostrador de depuração e no cabeçalho da solicitação
==================================================
Após depurar a assinatura: encontrou a segunda falha de verificação de cookie.
Não é adequado usar a interface de logon para obter o status de logon quando é necessário executar um grande número de testes de negócios simultâneos de usuários. Atualizar cookie novamente
O método que eu uso é encontrar as regras para gerar o cookie do cookie de desenvolvimento corrigido. Bom para teste de interface.
As regras para a correção de cookies são:
sid = ID do usuário + 'sid', uid = ID do usuário, device_id = test (corrigido para teste)
Encontre o DBA para escrever a regra no Redis.
Inclua um gerenciador de cookies no grupo de encadeamentos Jmeter:
No gerenciador de cookies: defina um formato de cookie fixo. O ID do usuário é transferido do arquivo de dados csv. Usado para simular cenários de negócios de solicitação multiusuário.
Após o teste: ok
==================================================== ====
Aumente o rendimento:
A depuração de script é realizada no Windows 10. Durante o teste, verificou-se que a taxa de transferência está sempre alta e a taxa anormal é particularmente alta em 55%
Pesquisa na Internet por um tempo ~ Eu me sinto como um ferramenta. Haha ~
Primeiro, de acordo com a memória do meu computador, aumentei a memória jvm e a adicionei diretamente ao 4G de uma vez, feliz ~
E configurado da seguinte maneira:
Modifique o registro: Aumente a porta de conexão TCP e reduza o tempo de recuperação tcp:
O Windows fornece portas 1024-5000 para links TCP / IP e leva quatro minutos para reciclá-los. Isso nos levou a encher a porta ao executar um grande número de solicitações em um curto período de tempo.
A solução é a seguinte:
No cmd, use o comando regedit para abrir o registro
Etapa 1: aumente o limite superior da porta temporária alocada dinamicamente à conexão de soquete TCP / IP do cliente.
(HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters):
Clique com o botão direito do mouse nos parâmetros e adicione um novo DWORD com o nome MaxUserPort
Em seguida, clique duas vezes em MaxUserPort, insira os dados numéricos como 65534, selecione decimal para a base
Etapa 2: reduzir o valor do tempo limite da conexão de soquete TCP / IP do cliente (o valor padrão é 240 segundos)
No registro, procure e clique na seguinte chave do registro.
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters
No menu Editar, clique em Novo, Valor DWORD e adicione o seguinte valor do Registro para reduzir o tempo em que a conexão está no estado TIME_WAIT quando a conexão é fechada. Quando a conexão está no estado TIME_WAIT, o par de soquetes não pode ser reutilizado:
Clique com o botão direito do mouse nos parâmetros e adicione um novo DWORD com o nome TcpTimedWaitDelay
Em seguida, clique duas vezes em TcpTimedWaitDelay, insira os dados numéricos como um número entre 30 e 240, selecione o conjunto de números decimais 30 segundos
Reinicie o computador
Depois de concluir as etapas acima, a taxa de transferência aumentou muito e a taxa anormal foi bastante reduzida.
====================================
Melhore o desempenho simultâneo independente
Depois de melhorar o número de conexões de memória e tcp e modificar o tempo de conexão tcp. O desempenho da máquina foi quase reduzido por nós. Agora queremos depurar nosso script.
1. Número de threads: cada número de threads ocupa uma certa quantidade de memória (eu mesmo testo 3 a 4M: palpite), o número de threads não deve exceder a memória jvm fornecida, caso contrário, ele ficará travado e lento. A taxa de transferência diminuiu e a taxa anormal aumentou. A simultaneidade diminui, o número de conexões diminui e assim por diante.
2. Tempo de aquecimento: geralmente eu o defino para 30 segundos. Quando a configuração real da rosca é relativamente grande, se for maior que 500, 30 segundos não serão iniciados completamente. É recomendável que você o defina de acordo com o tempo de 500 threads e 30 segundos.
3. Responda, afirme, veja a árvore de resultados, essas coisas estão desativadas.
4. Timer de taxa de transferência preciso: Isso é útil em alguns cenários quando o número de solicitações de interface precisa ser limitado.