Exemplo de teste de carga com Gatling
1. Visão geral
Noprevious tutorial, vimos como usar Gatling para testar a carga de um aplicativo da web personalizado.
Neste artigo, usaremos a ferramenta Gatling stress para medir o desempenho do ambiente de teste deste site.
2. O Cenário de Teste
Vamos primeiro configurar nosso cenário de uso principal - aquele que chega perto de um usuário típico que pode estar navegando no site:
-
Vá para a página inicial
-
Abrir um artigo da página inicial
-
Vá para Guias / REST
-
Vá para a categoria REST
-
Ir para o arquivo completo
-
Abrir um artigo do arquivo
3. Grave o cenário
Agora, vamos registrar nosso cenário usando o gravador Gatling - da seguinte maneira:
$GATLING_HOME/bin/recorder.sh
E para usuários do Windows:
%GATLING_HOME%\bin\recorder.bat
Nota:GATLING_HOME é o diretório de instalação do Gatling.
Existemtwo modes for Gatling Recorder: HTTP Proxy e HAR Converter.
Discutimos o modo HTTP Proxy em detalhes noprevious tutorial - então, vamos agora dar uma olhada na opção Conversor HAR.
3.1. Conversor HAR
HAR é a abreviação de HTTP Archive - um formato basicamenterecords the full information about a browsing session.
Podemos obter arquivos HAR do navegador e usar o Gatling Recorder para convertê-lo em uma simulação.
Criaremos nosso arquivo HAR com a ajuda das Ferramentas do desenvolvedor do Chrome:
-
Menu → Mais ferramentas → Ferramentas do desenvolvedor
-
Vá para a guiaNetwork
-
Certifique-se de quePreserve log está marcado
-
Depois de terminar de navegar no site, clique com o botão direito do mouse nas solicitações que deseja exportar
-
Em seguida, selecione Copiar tudo como HAR
-
Cole-os em um arquivo e importe-o do gravador Gatling
Depois de terminar de ajustar o gravador Gatling com a sua preferência, clique em Iniciar.
Observe que a pasta de saída é por padrãoGATLING_HOME/user-files-simulations
4. A Simulação
O arquivo de simulação gerado é similarmente escrito em Scala. Geralmente é OK, mas não super legível, então faremos alguns ajustes para limpar. Aqui está a nossa simulação final:
class RestSimulation extends Simulation {
val httpProtocol = http.baseURL("http://staging.example.com")
val scn = scenario("RestSimulation")
.exec(http("home").get("/"))
.pause(23)
.exec(http("article_1").get("/spring-rest-api-metrics"))
.pause(39)
.exec(http("rest_series").get("/rest-with-spring-series"))
.pause(60)
.exec(http("rest_category").get("/category/rest/"))
.pause(26)
.exec(http("archive").get("/full_archive"))
.pause(70)
.exec(http("article_2").get("/spring-data-rest-intro"))
setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)
}
Uma observação importante aqui é que o arquivo de simulação completo é muito maior; aqui,we didn’t include static resources para simplificar.
5. Execute o teste de carga
Agora, podemos executar nossa simulação - da seguinte maneira:
$GATLING_HOME/bin/gatling.sh
E para usuários do Windows:
%GATLING_HOME%\bin\gatling.bat
A ferramenta Gatling irá verificarGATLING_HOME/user-files-simulationse listar todas as simulações encontradas para nós escolhermos.
Depois de executar a simulação, os resultados se parecem com:
Para um usuário:
> request count 304 (OK=304 KO=0)
> min response time 75 (OK=75 KO=-)
> max response time 13745 (OK=13745 KO=-)
> mean response time 1102 (OK=1102 KO=-)
> std deviation 1728 (OK=1728 KO=-)
> response time 50th percentile 660 (OK=660 KO=-)
> response time 75th percentile 1006 (OK=1006 KO=-)
> mean requests/sec 0.53 (OK=0.53 KO=-)
---- Response Time Distribution ------------------------------------
> t < 800 ms 183 ( 60%)
> 800 ms < t < 1200 ms 54 ( 18%)
> t > 1200 ms 67 ( 22%)
> failed 0 ( 0%)
Para 5 usuários simultâneos:
> request count 1520 (OK=1520 KO=0)
> min response time 70 (OK=70 KO=-)
> max response time 30289 (OK=30289 KO=-)
> mean response time 1248 (OK=1248 KO=-)
> std deviation 2079 (OK=2079 KO=-)
> response time 50th percentile 504 (OK=504 KO=-)
> response time 75th percentile 1440 (OK=1440 KO=-)
> mean requests/sec 2.411 (OK=2.411 KO=-)
---- Response Time Distribution ------------------------------------
> t < 800 ms 943 ( 62%)
> 800 ms < t < 1200 ms 138 ( 9%)
> t > 1200 ms 439 ( 29%)
> failed 0 ( 0%)
Para 10 usuários simultâneos:
> request count 3058 (OK=3018 KO=40)
> min response time 0 (OK=69 KO=0)
> max response time 44916 (OK=44916 KO=30094)
> mean response time 2193 (OK=2063 KO=11996)
> std deviation 4185 (OK=3953 KO=7888)
> response time 50th percentile 506 (OK=494 KO=13670)
> response time 75th percentile 2035 (OK=1976 KO=15835)
> mean requests/sec 3.208 (OK=3.166 KO=0.042)
---- Response Time Distribution ----------------------------------------
> t < 800 ms 1752 ( 57%)
> 800 ms < t < 1200 ms 220 ( 7%)
> t > 1200 ms 1046 ( 34%)
> failed 40 ( 1%)
Observe que algumas das solicitações falharam quando testados 10 usuários simultâneos - simplesmente porque o ambiente de teste não é capaz de lidar com esse tipo de carga.
6. Conclusão
Neste artigo rápido, exploramos a opção HAR de gravar cenários de teste em Gatling e também fizemos um teste inicial simples de example.com.