Hoje vou contar como, com a ajuda do JMeter, configuramos o processo de armazenamento em cache de páginas de produtos, testamos a operação de um aplicativo móvel sem o próprio aplicativo e criamos 2.000 usuários no sistema sem acesso ao banco de dados.
Quem não souber o que está acontecendo aqui, leia a
primeira parte do artigo . Nele, contei como o JMeter nos ajudou a "capturar" o problema com a queda do site entre alguns usuários.
Como armazenar em cache rapidamente algumas milhares de páginas de produtos
Nosso outro cliente é uma empresa italiana que fabrica equipamentos para iluminação interna, externa e decorativa.
O equipamento de nossos clientes ilumina as obras-primas da pintura mundial, monumentos arquitetônicos, monumentos, edifícios de centros de negócios e aeroportosDesenvolvemos o site para esta empresa no Kentico. Apresenta todos os materiais e modelos de equipamentos de iluminação - 20.000 cópias. E cada um tem uma página separada.
Depois que o site foi lançado, descobrimos um recurso desagradável do Kentico: ele não possui uma ferramenta para carregar automaticamente arquivos de mídia no cache. Após atualizar e reiniciar o site (o que acontece regularmente), o cache é redefinido e a maioria das páginas é aberta por 10 segundos. Nem todo usuário está pronto para esperar tanto.
Vimos duas opções para carregar arquivos de mídia no cache. Primeiro: é muito tempo para acessar manualmente o site manualmente por meio de um navegador. Segundo: escrever um script que faça isso por nós - ele se encaixa!
Decidimos usar o JMeter: nós apenas fornecemos o mapa do site completo, ele seguiu e enviou os arquivos de mídia para o cache.
Era uma solução simples, mas não muito ótima. O script levou seis (!!!) horas para ser concluído. Era necessário um caminho mais rápido.
Depois de estudar um pouco o assunto, decidimos usar regexps. O JMeter pode solicitar recursos incorporados na página para certas máscaras do servidor. É disso que aproveitamos. Tendo analisado o que não está localizado em nosso servidor e não requer carregamento no cache (imagens de terceiros, fontes, estilos etc.), reduzimos o tempo necessário para o script percorrer as páginas para duas horas.
Deve parecer uma Solicitação HTTP no JMeter para carregar apenas um determinado tipo de ativoMas isso é muito longo: o preenchimento começa às 9:00 em Chelyabinsk e leva uma hora; depois, outras duas horas são gastas no script; como resultado, terminaremos às 12:00. Na Itália, são 08:00, e alguns moradores locais começam a trabalhar às 6-7 da manhã. O site é lento, as reclamações estão chegando ... Precisamos otimizar ainda mais!
A decisão veio quando percebemos que quase as mesmas imagens foram usadas em todas as 20.000 páginas de produtos. Realizamos uma análise e percebemos que basta fazer o download completo (com todos os recursos internos) de apenas 30% das páginas aleatórias, e o restante pode ser executado sem o carregamento de arquivos de mídia. Assim, a grande maioria dos materiais - imagens, fontes, scripts e estilos para páginas de produtos - cai no cache. Quando um usuário entra em contato com um deles, o download do servidor requer apenas uma pequena parte do conteúdo e não leva mais que um segundo.
Ao solicitar um número de página aleatório da tabela Variáveis Definidas pelo Usuário, cada vez que obtemos uma página aleatória da listaUsando o método descrito, obtivemos um site que em 90% dos casos funciona rapidamente. Sim, em um caso em cada dez, demorou 30 segundos para aguardar o carregamento da página, mas nos outros nove tudo simplesmente voou. E isso é em apenas 15 a 30 minutos.
Agora, esses truques não são mais necessários - os desenvolvedores otimizaram o próprio sistema de cache. Mas naquela época, essa decisão foi uma salvação real, e o JMeter acabou sendo uma ferramenta muito útil, mesmo após o lançamento e o vazamento.
Como criar 2000 usuários do aplicativo, se você tiver apenas o email deles e duas horas para trabalhar
O terceiro cliente, sobre o qual falarei, é uma empresa que desenvolve, fabrica e vende equipamentos médicos: de bisturis simples a cortadores a laser e brocas complexas com câmeras embutidas. Seus gerentes vão às clínicas, se comunicam com os cirurgiões e contam sobre seus produtos. Para fazer isso, eles têm um aplicativo especial para o iPad: os dados do médico e uma lista de ferramentas que lhe interessam são inseridos. Posteriormente, um link para uma página pessoal com uma lista de todas essas ferramentas, descrições e características detalhadas chega ao email do médico. Foram essas páginas para os cirurgiões que desenvolvemos. O boletim de inscrição e email foi elaborado por outra empresa.
Uma das tarefas do JMeter nesse projeto é testar o sistema para criar versões diferentes dessas páginas, apesar do fato de termos apenas um back-end. Escrevemos um script para que, usando um gerador de números aleatórios, ele crie páginas de vários tipos e as envie para nossos e-mails de trabalho para verificação. Tudo é simples. E eu nem mencionaria esse cliente no artigo, se não fosse um caso.
Alguns dias antes do lançamento, meu gerente me ligou e pediu para criar 2000 usuários para o aplicativo. A dificuldade era que não tínhamos acesso ao servidor ativo ou ao banco de dados. Tivemos que criar 2.000 usuários somente através do CMS (neste caso, através da Umbraco). Ao mesmo tempo, após o registro, cada usuário deve receber uma carta aproximadamente do seguinte tipo:
Ao receber esse email, o usuário instala o aplicativo e altera a senha padrão para sua própria conta.Para registrar um usuário, são necessários cinco campos:
- E-mail
- nome
- sobrenome;
- login;
- senha
Eu tinha apenas duas horas para concluir a tarefa. Mais uma vez: 2000 usuários, cinco campos para cada um deles, duas horas ... Os dados do gerente vieram da seguinte forma:

Se eu fosse um desenvolvedor, e não um especialista em controle de qualidade, escreveria um script, por exemplo, em perl: ele analisaria esses dados e rapidamente espalharia tudo. Mas escolhi um caminho diferente e usei o mais, talvez, a ferramenta ideal para uma organização rápida de dados - o MS Excel. As planilhas salvam o mundo!
Com a ajuda de manipulações simples com a substituição de dados, cortando o excesso e outros truques, criei um arquivo com ~ 10k linhas, no formato:
login1 | john.smith
login2 | médico.quem
...
name1 | João
...
Eu não me incomodei muito com senhas - acabei de escrever PasswordNumber1 e "estendi" essa coluna no Excel para todos os 2.000 usuários. Isso não importa, porque foi usado apenas para a primeira entrada. Sim, e eu não classifiquei a lista geral de emails em ordem alfabética, o que significa que a probabilidade de adivinhação aleatória de senha foi minimizada.
Alimentando esse arquivo (através da área de transferência) para o JMeter, recostei-me na cadeira e observei com prazer como os usuários foram criados. Todo o processo de processamento de dados e criação de novos usuários levou 1 hora e 45 minutos - até o tempo restante para o café!
Conclusão: O JMeter se tornou uma ferramenta conveniente para testes automatizados do back-end de aplicativos móveis e também, de repente, para automação de tarefas não-padrão - como esta, com vários usuários e um mínimo de informações sobre eles.
Em geral, o JMeter pode ser usado (e foi usado por mim pessoalmente) para uma variedade de tarefas. Por exemplo, para:
- análise de otimização: realize testes de carga, corrija as correções de otimização, realize os testes novamente, compare os resultados;
- Teste de segurança de consulta: escreva um script usando um proxy, envie a solicitação diretamente ao servidor sem verificações de front-end, remova as várias chaves da solicitação, verifique se o servidor responde adequadamente;
- verificação da resposta aos cabeçalhos: escrevemos um script que envia solicitações para a mesma página com cabeçalhos diferentes em um loop, verificamos a reação do servidor e vemos o que deve ser removido;
- enumerando combinações de autorização: coloque um ciclo com senhas em um ciclo com logins, teste o formulário de autorização;
- verifica a proteção contra ataques: enviamos solicitações para enviar formulários em vários fluxos e ver se sua proteção funciona;
- automação de sistemas de API: todos os resultados de solicitações de API podem ser processados por um script e usados na próxima etapa do ciclo de teste - dessa maneira, você pode automatizar o teste de qualquer sistema.
Pelo exposto, podemos tirar uma conclusão geral: o JMeter é uma ferramenta universal, uma verdadeira faca suíça para um testador (e para um desenvolvedor, para ser honesto).