---
# System prepended metadata

title: Overview - Teste de Carga

---

# 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 