-
Notifications
You must be signed in to change notification settings - Fork 2
Testes de Performace
#Testes de perfomace O teste de perfomance é utilizado para averiguar a carga de requisições que o servidor pode suportar. Para fazer estes testes será utilizado o Apache Jmeter que é uma aplicação para testes de perfomances. Para facilitar a criação de testes, é utilizado o ruby-jmeter, que é o Jmeter sendo rodado via Ruby. Todas os procedimentos aqui documentados são referentes a Mac.
##Instalação
Após a instalação dos componentes do OpenRedu, basta rodar, para instalar a versão ruby do jmeter:
gem install ruby-jmeter
O ruby-jmeter não vem com todas as funcionalidades da versão base do jmeter, então é necessário instalá-lo:
brew install jmeter
##Utilização
Para utilizar o jmeter é necessário antes criar um teste, um exemplo (comentado) pode ser encontrado em
tests/StressTest/LoginTest.rb
Para criar o teste a partir deste arquivo ruby basta bulidar como ruby (note que o teste será criado na pasta onde o comando estiver sendo chamado, no exemplo a seguir ela será criada no root do projeto):
ruby tests/StressTest/LoginTest.rb
Aparecerá uma mensagem confirmando a criação do teste (caso o jmeter não tenha sido instalado, poderá ocorrer um erro nesta etapa)
INFO -- : Test plan saved to: jmeter.jmx
Para rodar o arquivo de teste é necessário utilizar o Jmeter-GUI, para abrí-lo basta fazer: jmeter
Com o Jmeter-GUI aberto basta abrir o arquivo jmeter.jmx, para o teste de Login, neste momento é possível estar:
- O número de threads - Este número NÃO representa a quantidade de requisições, pois depende como cada thread é representada.
- Ramp up - O tempo demorado para que todas as threads sejam criadas, este número varia de acordo com a complexidade das threads.
Finalizado o set up, basta rodar o teste (seta verde no topo-centro da interface).
Ao fim do teste os resultados podem ser vistos do lado esquerdo.
##Explicando os testes
Existem dois resultados principais:
-
Summary Report - Este resultado é um dos mais importantes para mensurar o quanto o servidor suporta. Neste resultado existem as variáveis:
- Label - O nome da amostra. Este serve para subdividir o teste
- Samples - O número de amostras de uma dada label
- Average - O tempo médio transcorrido de um conjunto de resultados
- Min - O menor tempo transcorrido para amostras com o mesmo label
- Max - O maior tempo transcorrido para amostras com o mesmo label
- Std. Dev. - O Desvio Padrão do tempo transcorrido da amostra
- Error % - A percentagem de requests com erros.
- Throughput - este fator é medido em requests por segundo/minuto/hora. A unidade de tempo é escolhido de tal forma que o rate mostrado seja pelo menos 1.0. Este é o principal fator a ser observado pois ele mostra como o servidor está lidando com a quantidade de requisições (mas não é o suficiente para dizer o quão bem o servidor está).
- Kb/sec - O throughput mensurado em kb por segundos.
-
View Results Tree - Este resultado serve para checar quais erros ocorreram durante o processamento do teste, o que pode ser útil tanto para descobrir erros no teste ou identificar quando o servidor recebeu requisições demais.
##Entendendo Para a maioria dos stress tests as variáveis mais importantes são Throughput (que mede a quantidade de requisições por tempo) e Error %(caso este valor fique muito alto, quer dizer que o servidor provavelmente não está conseguindo lidar com as requisições, ou que os testes foram feitos errados, neste caso seria 100%). Note que todas as outras variáveis também são relevantes para o processo, mas de forma geral elas variam muito de caso a caso.
##Teste em servidor Para testes em servidores reais é necessário que o teste funcione de maneira distribuída, porque de forma geral um único cliente iria parar de funcionar antes que o servidor passasse por uma situação de muitas requisições. Para ver mais sobre isso, basta checar a [página de testes distribuídos do jmeter].(http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.pdf)
##Referências