Testes Distribuídos
Quando se fala em Testes Não Funcionais, sabe se que dependendo do tipo de teste e do cenário a ser testado, uma única máquina não é mais suficiente para execução dos planos de teste, visto que os recursos individuais dela são limitados. Exemplo, suponhamos que você precise usar dois mil usuários em um plano de teste. Dependendo dos recursos computacionais da máquina, provavelmente uma única máquina só conseguiria trabalhar entre 300 e 600 usuários antes de começar a apresentar problemas ou gerar resultados não precisos.
Dentre as várias causas para isso ocorrer, uma delas seria a existência de um limite de quantidade de usuários que utilizam a mesma máquina. A maior parte dos sistemas operacionais se protege contra uma falha total no sistema determinando esses limites às aplicações hospedadas. Outro ponto é que seu caso de uso ou teste pode exigir que você simule requisições provenientes de diversos endereços IP.
O Teste distribuído nos mostra que é possível replicar testes em diversas máquinas low-end, o que nos permite iniciar mais threads e, portanto, simular mais carga no servidor.
Veremos abaixo que o Jmeter nos proporciona benefícios para executar o teste distribuído e a impor mais carga ao servidor em teste.
JMeter
O JMeter provê suporte interno ao teste distribuído, permitindo que uma única instância da GUI, conhecida como mestre, controle várias instâncias remotas do Jmeter, chamadas de escravos, e colete nelas os resultados do teste. Assim podem ser apresentados os seguintes recursos:
– Realizar o salvamento de artefatos de testes na máquina local.
– Gerenciar várias instâncias do JMeterEngine (nós escravos) a partir da mesma máquina.
– Replicar o plano de teste do nó mestre para cada servidor controlado sem a necessidade de copiá-lo em cada servidor.
- Arquitetura de teste distribuído do JMeter
É importante ressaltar que o JMeter não distribui a carga entre os servidores. Cada servidor executa o mesmo plano de teste em sua totalidade. Outro ponto é que apesar do plano de teste ser replicado em cada servidor, os dados requeridos não o são. Nas situações em que dados de entrada, como dados CSV, forem necessários para a execução do teste, eles terão de ser disponibilizados em cada servidor em que o plano de teste for executado.
Para não termos nenhuma surpresa ao utilizar a estrutura de testes distribuídos com o JMeter é recomendado que todos os nós escravos e o nó mestre executem a mesma versão do JMeter e, se possível, a mesma versão do Java Runtime Environment (JRE). Em geral, versões menores do JRE são aceitáveis, mas versões maiores não. Exemplo, o servidor mestre poderia ser executado no JRE 1.7.15 e os escravos no 1.7.19, mas não poderíamos usar o 1.8.xx versus o 1.7.xx.