Tutorial para teste de carga no módulo de Matrícula Web de Veteranos
Apresentação
Este material tem o objetivo de fornecer um roteiro para execução de um teste de carga do módulo de Matrícula Web de Veteranos do Ensino Superior, utilizando um ambiente específico para tal. A TecnoTRENDS recomenda que este teste seja realizado periodicamente pelas instituições, a fim de se antecipar a possíveis intermitências do módulo em questão durante o período de matrícula.
A realização do teste requer certo conhecimento técnico, devido a isto é importante que a responsabilidade pela execução deste roteiro seja de um colaborador do setor de TI da instituição.
Requisitos técnicos para execução do teste de carga
- “Servidor de aplicação”, contendo:
- Módulo de Matrícula Web de Veteranos:
- Versão: Correspondente à versão em que se deseja utilizar na próxima matrícula;
- Versão: Correspondente à versão em que se deseja utilizar na próxima matrícula;
- Quanto aos demais módulos SAGRES:
- Versão: Versões compatíveis com a versão do módulo de Matrícula que será utilizada;
- Versão: Versões compatíveis com a versão do módulo de Matrícula que será utilizada;
- Framework Java:
- Versão mínima: Version 8, update 181;
- Local para download: Java.com (a instalação será descrita em um tópico mais à frente deste material);
- Versão mínima: Version 8, update 181;
- “PerfMon Server Agent”:
- Objetivo: Este componente é um agente que será o responsável pelo monitoramento do consumo dos recursos do servidor enquanto o teste de carga estiver sendo executado;
- Versão: 2.2.3;
- Local para download: Projeto no GitHub (a instalação será descrita em um tópico mais à frente deste material);
- Objetivo: Este componente é um agente que será o responsável pelo monitoramento do consumo dos recursos do servidor enquanto o teste de carga estiver sendo executado;
- Módulo de Matrícula Web de Veteranos:
- “Servidor de banco de dados”, contendo:
- Cópia mais recente da base de dados de produção:
- Esta cópia deve estar compatível com as versões dos módulos SAGRES instalados;
- Esta cópia deve estar compatível com as versões dos módulos SAGRES instalados;
- Framework Java:
- Mesma versão descrita para o “Servidor de aplicação”;
- Mesma versão descrita para o “Servidor de aplicação”;
- “PerfMon Server Agent”:
- Mesma versão descrita para o “Servidor de aplicação”;
- Mesma versão descrita para o “Servidor de aplicação”;
- Cópia mais recente da base de dados de produção:
- “Computador de controle do teste”, contendo:
- JMeter, ferramenta para execução do teste de carga:
- Versão: 5.0;
- Plug-ins internos adicionados: “Manager” versão 1.3 e “PerfMon” versão 2.1;
- Projeto do JMeter preparado pelo TecnoTRENDS para realizar os testes de carga da Matrícula Web:
- Solicitar ao Núcleo de Atendimento da TecnoTRENDS o arquivo “Teste de carga-Matricula Web.zip”;
- SQL Server Profiler:
- Versão: Não requer versão específica;
- SQL Server Management Studio;
- Versão: Não requer versão específica;
- Especificação mínima do computador:
- Processador i3 ou similar;
- 8GB RAM;
- JMeter, ferramenta para execução do teste de carga:
Recomendações
1) Antes de iniciar os procedimentos, é preciso que o responsável pelo teste leia atentamente todas as instruções deste material;
2) Alertamos que durante os testes serão aleatoriamente incluídas e removidas disciplinas na matrícula para os alunos, como também serão alteradas as senhas de acesso ao SAGRES destes alunos. É imprescindível que se garanta que o teste de carga seja realizado em um ambiente de teste. Jamais deve ser executado na base de produção;
3) O ambiente de testes a ser utilizado deverá ser o mais semelhante possível ao ambiente de produção da instituição;
Ilustração do funcionamento do teste de carga
Preparação do "Servidor de aplicação"
Preparação das pastas e instalação de aplicativos
2) Na área de trabalho do usuário no servidor, crie uma pasta chamada “Teste de carga”;
3) Instale o “PerfMon Server Agent”. Para isso:
Preparação das aplicações SAGRES
- Verifique se as aplicações SAGRES envolvidas estão funcionando corretamente;
- Configure a etapa de matrícula que será utilizada no teste;
- Acesse o módulo de Matrícula Web com um aluno e realize a matrícula dele, apenas para confirmar se tudo está funcionando corretamente.
Preparação do Servidor de banco de dados
Preparação do Computador de controle do teste
Preparação das pastas
1) Na área de trabalho do usuário no computador, crie uma pasta chamada ” Teste de carga”;
2) Descompacte o arquivo “Teste de carga-Matricula Web.zip” (disponibilizado pela TecnoTRENDS) dentro da pasta criada acima;
Configurações de comunicação com a base de dados
- [Profiler]
- ProfilerPath: Localização do executável da ferramenta SQL Server Profiler no computador em questão. Verifique se o valor padrão está correto e altere-o se não estiver;
- EnableProfiler: Define se o SQL Profiler será gerenciado de forma automática pelo teste de carga. Recomenda-se deixar habilitado, pois a ferramenta gera informações cruciais para análise de possíveis problemas;
- ProfilerTemplate: Nome do template do SQL Server Profiler que será utilizado. Os templates sugeridos estão na pasta “..\Teste de carga\Teste da Matricula Web\resources”. Identifique nesta pasta o template correspondente à versão do SQL Server que está utilizando e importe-o no SQL Server Profiler. Depois, defina o nome do template neste parâmetro.
- [Database]
- DbServer: Defina o nome da instância de banco de dados que será utilizada;
- DbUser: Defina o nome do usuário do banco de dados que tem acesso com as permissões: execução de consultas; captura de consultas com o SQL Server Profiler.
- DbPassword: Defina a senha do usuário de banco de dados;
- DbAcademico: Defina o nome do banco de dados do SAGRES Acadêmico;
- SQLAluno: Defina a localização e nome do arquivo SQL com a query para selecionar os alunos que participarão do teste de carga. O valor padrão é “resources\massaDados\MassaDados.sql”. Pode manter este valor, esta query será explicada em um tópico mais à frente deste material;
- [MassaDados]
- QntUsuarios: Quantidade de alunos que participarão do teste de carga;
- QntUsuarios: Quantidade de alunos que participarão do teste de carga;
- NovaSenha: Defina aqui a senha que será atribuída automaticamente a todos os alunos da base que forem selecionados para do teste de carga. Isto é necessário para que o JMeter efetue o login no sistema com cada aluno. O valor padrão é “trends”, altere se preferir;
Preparação da massa de dados de alunos
Será necessário preparar um arquivo .CSV com os dados dos alunos selecionados para participar do teste de carga. O procedimento a seguir te orientará a gerar este arquivo automaticamente a partir de uma consulta SQL.
– Retorne os alunos aptos a realizar a matrícula web na etapa de matrícula que você preparou anteriormente;
2) Salve o arquivo MassaDados.sql e feche-o;
3) Certifique-se que o arquivo settings.txt existente na pasta raiz foi configurado corretamente, conforme orientações anteriores;
4) Execute o arquivo MassaDados.bat existente na raiz do projeto para gerar a massa de dados. É importante saber que a execução irá:
– Executar a consulta SQL definida no arquivo MassaDados.sql,utilizando a base de testes configurada no arquivo settings.txt, obtendo assim lista de alunos aptos a realizar a matrícula;
– Alterar a senha dos usuários destes alunos, definindo a nova senha com o valor que foi definido no arquivo settings.txt;
– Gerar o arquivo MassaDados.csv, contendo os dados dos alunos em questão, a serem utilizados pelo JMeter para simular a matrícula;
5) Após finalizar a execução do MassaDados.bat, verifique se foi gerado um arquivo chamado MassaDados.csv na pasta raiz do projeto;
6) Abra o arquivo e confirme que esteja preenchido com:
– No mínimo, a mesma quantidade de usuários que você definiu no arquivo settings.txt;
– Colunas de nickname do aluno, nova senha descriptografada e senha original criptografada;
Configuração do plano de teste no JMeter
3) Na área da esquerda, selecione com o mouse a seção “Matricula web”. Na área da direita que foi carregada, localize o grupo “User Defined Variables” e perceba que há 4 variáveis que você deverá preencher (ver imagem mais abaixo). As variáveis estarão com valores padrões, mas você deve editá-los conforme a seguir:
- Variável “API_URL“: Defina o valor como a URL de acesso à API do SAGRES do seu ambiente de testes preparado para o teste de carga;
- Variável “TESTE_INTEGRACAO_FINANCEIRO“: Defina “true” se deseja que o teste de carga englobe a integração com o SAGRES Financeiro. Caso a instituição não possua o SAGRES Financeiro, desabilite esta opção definindo o valor “false” no campo “Value”. Sendo o valor definido como “true”, quando o teste de carga for executado, além de finalizar e reabrir a proposta de matrícula de cada aluno, será também gerado o contrato acadêmico e o boleto de matrícula.
- Variável “TESTE_FLUXO_PREMATRICULA“: Defina “true” se deseja que o teste de carga englobe o fluxo pré-matricula que o aluno realiza no Portal antes de efetivamente entrar no Módulo de Matrícula Web. Algumas instituições utilizam este fluxo para solicitar que os alunos atualizem seus dados pessoais e/ou deem um aceite no contrato;
- Variável “PORTAL_URL“: Caso tenha habilitado o “TESTE_FLUXO_PREMATRICULA”, é necessário definir a URL de acesso ao Portal SAGRES do seu ambiente de testes preparado para o teste de carga;
4) Selecione a seção “Thread Group 1”. Você verá na área da direta algumas configurações que poderão ser realizadas. As mais significativas para este teste de carga são:
- Number of Threads: Define a quantidade de usuários (alunos) simultâneos que serão utilizados para o teste de carga;
- Ramp-Up Period: Define o tempo que o JMeter utilizará para iniciar todos as “threads” de usuários.
- Loop Count: Define quantas vezes os usuários devem repetir a sequência de ações programadas;
- Forever: Define que as sequências de ações programadas serão repetidas indefinidamente, só finalizando o teste ao término do tempo definido;
- Scheduler: Ativa ou desativa um contador de tempo para os testes;
- Duration: Define o tempo máximo para execução dos testes (em segundos).
5) Expanda a seção “Thread Group 1” e selecione a seção interna dela chamada “CSV Data Set Config”. Na área da direita, você verá o campo “Filename”, em que é definido o local do arquivo .csv que você gerou anteriormente com a massa de dados de aluno. Confirme se o nome do arquivo que você gerou está igual ao configurado neste campo.
6) Selecione a seção chamada “PerfMon Metrics Collector”. Na área da direita, precisaremos definir quais métricas serão coletadas dos servidores pelo agente “Perfmon”.
Na grade “Servers to Monitor”, será necessário adicionar as métricas de “CPU”, “Memory” e “Network I/O” para cada servidor preparado para o teste de carga. Considerando que o “Servidor de aplicação” e o “Servidor de banco de dados” são computadores diferentes, a grade precisará ter 6 linhas. Em cada linha terá:
- Hostname do servidor;
- Porta em que o “Perfmon Server Agent” está sendo executado no servidor em questão;
- Métrica de monitoramento (“CPU”, “Memory” e “Network I/O”);
Teste de acesso aos módulos SAGRES pelo Computador de controle do teste
1) Abra o navegador dentro do “Computador de controle do teste” e acesse a URL do módulo de Matrícula Web, localizada no “Servidor de aplicação“;
2) Efetue login com um aluno qualquer, apenas para confirmar se o acesso foi bem sucedido;
Execução do teste de carga
A cada execução:
- http://[NomeServidorAplicação]/Api/SagresApi/matricula/limpar-cache?timeStamp=636746997491830781
4) Acesse a pasta que contém o plano de testes do JMeter configurado conforme os tópicos anteriores deste material;
– Logo no início da execução, o SQL Server Profiler será aberto automaticamente. Após isto ocorrer, retorne ao “prompt” que foi aberto anteriormente e dê um “Enter”;
– Aguarde a finalização do teste, de acordo com a duração configurada. Ao final, haverá uma mensagem informando a finalização do teste: “FINALIZANDO TESTES COM JMETER”
Analisando o resultado dos testes
Os resultados de cada execução do teste serão salvos automaticamente na pasta “result”, existente dentro da pasta raiz do plano de teste do JMeter. Será criada uma pasta para cada execução, com o nome no formato “aaaammdd-hhmmss”, referente à data/hora de início do teste.
- Um arquivo chamado “jmeter.log”, contendo o log de trabalho do JMeter e de mensagens retornadas pelo Módulo de Matrícula Web, como por exemplo: “Classe YYYY não possui vagas disponíveis”.
- Um arquivo chamado “server_log.csv”, contendo as informações coletadas das métricas de recursos (Memória, CPU, Rede) dos servidores definidos. Para analisar visualmente os resultados presentes neste arquivo, você deve:
- Abrir o projeto do plano de teste no JMeter;
- Na seção “PerfMon Metrics Collector – Visualizador”, clique no botão “Browser” e carregue o arquivo “server_log.csv”, conforme imagem abaixo.
- Um arquivo chamado “test_log.csv”, contendo todos os registros das requisições enviadas do JMeter para o “Servidor de aplicação”;
- Uma pasta chamada “dashboard”, contendo uma página em HTML (index.html) com visualizações gráficas do teste, incluindo erros ocorridos, tempos de resposta e quantidade de requisições.
- Um arquivo chamado “profiler.trc“, contendo o trace do SQL Server Profiler capturado durante a execução do teste;