# Overview - Teste de Carga Todos os testes foram executados utilizando o framework K6. ## Payment Group ### Manual Payment Group Utilizamos três domínios para teste: - **openbanking.bit.one** - **br.bit.one** - **transferocaas-api-brazil.azurewebsites.net** #### Plano de Teste - **Cenário 1** ⇒ 50 requisições - **Cenário 2** ⇒ 500 requisições - **Cenário 3** ⇒ 1000 Requisições #### Resultados e Análises | | Requisições bem sucedidas | Rejeições | Taxa média (Req/s) | Tempo médio por req (s) | Tempo total(s) | | --------- | ------------------------- | --------- |:------------------ |:----------------------- | -------------- | | Cenário 1 | 50 | 0 | 1.3 | 34.82 | 36.4 | | Cenário 2 | 191 | 0 | N/A | N/A | N/A | | Cenário 3 | não realizado | | | | | A API processou o Cenário 1 com sucesso, levando 36.4 segundos para processar as 50 requisições, com uma média de 34.82 segundos (1.3 req/s). O Cenário 2 foi abortado prematuramente. A API processou 191 requisições e após isso o serviço caiu. Tentativas posteriores foram fracassadas. Suspeita-se que o gargalo foi no CosmosDB, mesmo dobrando sua capacidade. É possível que haja uma quantidade excessiva de requisições para o CosmosDB. Não foi observado gargalos ou problemas de desempenho nas máquinas do serviço. Não foram realizados outros cenários e testes de Payment Group. #### Ações a serem tomadas - Investigar lentidão na criação de Payment Group e Deposit Order ## Geração de QR Code ### QR Code Dinâmico Bancos testados: - BS2 #### Plano de Teste - Cenário 1 ⇒ 50 QR Codes Dinâmicos (Requisição Direta) - Cenário 2 ⇒ 500 QR Codes Dinâmicos (Requisição Direta) - Cenário 3 ⇒ 1000 QR Codes Dinâmicos (Requisição Direta) - Cenário 4 ⇒ 2000 QR Codes Dinâmicos (Requisição Direta) - Cenário 5 ⇒ 3000 QR Codes Dinâmicos (Requisição Direta) - Cenário 6 ⇒ 400 QR Codes Dinâmicos (Requisição Direta) - Cenário 7 ⇒ 9000 QR Codes Dinâmicos (30 req/s por 5 minutos) - Cenário 8 ⇒ 11000 QR Codes Dinâmicos (100 req/s por 2 minutos e 33 segundos) #### Resultado e Análises ##### BS2 | | Requisições bem sucedidas | Rejeições | Taxa média (Req/s) | Tempo médio por req (s) | Tempo total (s) | | ------------- | ------------------------- | --------- | ------------------ | ----------------------- | --------------- | | Cenário 1 | 50 | 0 | 4.7 | 4.25 | 9.6 | | Cenário 2 | 500 | 0 | 44.9 | 5.25 | 10.3 | | Cenário 3 | 1000 | 0 | 64.2 | 8.04 | 14.8 | | Cenário 4 | 1716 | 285 | 45.3 | 19.09 | 43.3 | | Cenário 5 | 2765 | 236 | 54.7 | 28.69 | 54.0 | | Cenário 6 (1) | 1822 | 2178 | 103 | 27.3 | 37.7 | | Cenário 6 (2) | 3764 | 236 | 65.4 | 42.4 | 60.0 | | Cenário 7 | 8662 | 338 | 28.2 | 1.16 | 5m06s | | Cenário 8 | 10845 | 171 | 71.6 | 10.6 | 2m33s | Os cenários de 1 a 3 foram executados com uma taxa de sucesso de 100%, sendo executados com uma média de 4 a 8 segundos por requisição, chegando a uma taxa de 64 req/s. Os cenários 4, 5 e 6 tiveram requisições falhadas. Uma particularidade é que em todos os testes, a quantidade de falhas foi, respectivamente, 285, 236, e 237. A quantidade de requisições rejeitadas foi estranhamente próxima uma da outra. Os testes tiveram médias de execução de, respectivamente, 28.7 segundos, 27.3 segundos, e 42.4 segundos, a uma taxa de 45 req/s, 54 req/s, e 103 req/s. Uma segunda execução do cenário 6 resultou em 55.45% de requisições rejeitadas. O cenário 7 não teve requisições rejeitadas. No intervalo de 5 minutos foram realizadas requisições a uma taxa real de 28 req/s, com um tempo médio de 1.16 segundo por requisição. O cenário 8 gerou 171 rejeições e foi interrompido prematuramente. A taxa real foi de 71 req/s com um tempo médio de 10.6 segundos por requisição. ::: warning Foi observado gargalos por SNAT Port Exhaustion (socketException) recomenda-se criar mais de 1 instância para sanar esse gargalo. ::: ### QR Code estático #### Plano de teste - Cenário 1 ⇒ 50 QR Codes Estáticos (Requisição Direta) - Cenário 2 ⇒ 100 QR Codes Estáticos (Requisição Direta) - Cenário 3 ⇒ 10000 QR Codes Estáticos (Requisição Direta) #### Resultados e Análises | | Requisições bem sucedidas | Rejeições | Taxa média (Req/s) | Tempo médio por req (s) | Tempo total (s) | | --------- | ------------------------- | --------- | ------------------ |:----------------------- | --------------- | | Cenário 1 | 50 | 0 | 4.2 | 6.92 | 11 | | Cenário 2 | 0 | 100 | 1.6 | 59.4 | 60 | | Cenário 3 | não realizado | | | | | O cenário 1 foi completado com sucesso em 11 segundos, sem requisições rejeitadas, com uma taxa de 4.2 req/s, e uma média de 6.9 segundos por requisição. O cenário 2 resultou numa taxa de 100% de rejeições. A média de execução foi de 59.2 segundos. O cenário foi concluído em 60 segundos. O cenário 3 não foi realizado. ## Webhook #### Plano de Teste - Cenário 1 ⇒ 100 Transações (Requisição Direta) - Cenário 2 ⇒ 1000 Transações (Requisição Direta) - Cenário 3 ⇒ 2000 Transações (Requisição Direta) - Cenário 4 ⇒ 5000 Transações (Requisição Direta) - Cenário 5 ⇒ 7500 Transações (Requisição Direta) #### Resultados e Análises | | Requisições bem sucedidas | Rejeições | Taxa média (Req/s) | Tempo médio por req (s) | Tempo total (s) | | --------- | ------------------------- | --------- | ------------------ | ----------------------- | ----------- | | Cenário 1 | 100 | 0 | 197 | 0.397 | 0.5 | | Cenário 2 | 1000 | 0 | 424 | 1.67 | 2.4 | | Cenário 3 | 2000 | 0 | 295 | 2.99 | 6.8 | | Cenário 4 | 4996 | 4 | 234 | 5.23 | 21.3 | | Cenário 5 | 7328 | 172 | 351 | 6.77 | 21.3 | O cenário 1 foi realizado sem nenhuma rejeição, e foi concluído em 0.5 segundos. O cenário 2 foi realizado sem nenhuma rejeição, e foi concluído em 2.4 segundos. O cenário 3 foi realizado sem nenhuma rejeição, e foi concluído em 6.8 segundos. O cenário 4 gerou 4 rejeições, e foi concluído em 21.3 segundos. O cenário 5 apresentou 172 rejeições. Grande parte foi devido a erros vindos do próprio BS2, e outra parte foram internal errors. O cenário foi concluído em 21.3 segundos. Não foi observado gargalos ou problemas de desempenho nas máquinas do serviço. #### Ações a serem tomadas - Revisar Banking Service para entender motivo dos SocketExceptions em uma alta escala