Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/multilingual.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ jobs:
- name: Check Go modules with Bundler vendor directory
run: bundle exec ruby scripts/test_go_modules.rb

- name: Test post creation and migration
run: bundle exec ruby scripts/test_post_layout.rb

- name: Check post directory convention
run: bundle exec ruby scripts/check_post_layout.rb

- name: Test native multilingual behavior
run: bundle exec ruby scripts/test_multilingual.rb

Expand Down
332 changes: 278 additions & 54 deletions README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
---
title: "Performance testing: a brief analysis of ingresso.com"
date: 2023-02-04T00:35:15Z
slug: teste-de-performance-uma-breve-analise-do-site-ingresso-com
description: "A record from 2023 about performance problems during ticket presales and the importance of performance testing."
tags: [testes, performance, qualidade]
draft: false
url: "/en/docs/2023/fevereiro/teste-de-performance-uma-breve-analise-do-site-ingresso-com/"
---

> Originally published on [Medium](https://medium.com/@kellenxaviier/teste-de-performance-uma-breve-an%C3%A1lise-do-site-ingresso-com-90e89aacb9e6) on February 4, 2023. This record preserves the original article and images; the English text is a translation.

*An analysis for study and workplace application of software testing.*

## A real example for applying performance tests

Over the last decade, online shopping has grown exponentially. More and more people are choosing to shop online instead of buying in physical stores. The COVID-19 pandemic gave this model a boost, both by increasing purchases among existing online shoppers and by attracting new consumers. All of this generates much more traffic on pages and servers, raising the need for a robust, secure solution with good performance.

In addition to much higher everyday traffic than was usual, there are peaks on specific dates and at particular times of the year, such as holidays, celebrations, and major events. Unfortunately, it is not common to see a bottleneck on large sales portals, causing extreme slowness, authentication failures, and pages going down.

Today we will discuss Black Friday and Ingresso.com as examples for exploring **performance testing**. Black Friday is an event that always takes place on the last Friday in November. Online stores need to be ready for the expected demand. It is unacceptable to know so far in advance that traffic will peak and still be unprepared, creating a negative customer experience and missing opportunities for greater business revenue. This happens both because frustrated users avoid returning to the platform and because the server cannot complete the purchase transaction.

### Problems such as

- Server outages;
- Slow navigation;
- A slow purchase flow, to the point that completing a purchase becomes impossible;
- Instability;
- Bugs;

## A real example of what happens without performance testing

Around noon, a peak time, on November 29, 2021, ingresso.com, one of the largest cinema ticket sales websites, could not handle the number of simultaneous visitors buying presale tickets for the most anticipated movie of the year.

![Spider-Man: No Way Home page on ingresso.com](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-pre-venda.png "Image taken from ingresso.com")

The instability was so severe that some people spent *more than an hour trying to complete a purchase*. Some users who managed to complete the purchase flow were charged but did not receive their tickets and had to request a refund.

![Loading indicator during the ingresso.com purchase flow](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-falha-na-compra.png "Image taken from ingresso.com")

![Connection error displayed on ingresso.com](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-instabilidade.png "Image taken from ingresso.com")

### Other problems also occurred

- Server outages, preventing users from accessing the site;
- An incomplete main flow, leaving users unable to make a purchase;
- Endless loading, with slowness in the purchase flow leading back to a server outage;

### And many bugs

- Account logout: users were forcibly logged out in the middle of the purchase flow, often without being told, creating purchase conflicts;
- Page redirects: the location of the cinema showing selected for the purchase changed, again without informing the user;
- Movie no longer available: the site displayed the movie as though it were no longer showing;
- Generic messages: users encountered errors, but the messages were imprecise. The same message appeared for several different errors, making the flow frustrating;

![Ingresso.com reporting no upcoming movies](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-erros.png "ingresso.com website")

### The instability was so severe that it generated memes

![Memes about instability during the Spider-Man ticket presale](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--meme-instabilidade.png)

### Others were not so happy

![Comments on ingresso.com's Instagram post about the presale](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--instagram-reclamacoes-1.png "Instagram — @ingressocom")

![Users reporting ticket purchase failures](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--instagram-reclamacoes-2.png "Instagram — @ingressocom")

### Post with a statement from ingresso.com

![Ingresso.com's statement about record simultaneous traffic](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--instagram-nota-de-esclarecimento.png "Instagram — @ingressocom")

> Performance tests help prevent the situations described above and maintain an application's quality and scalability!

### Some types of performance testing

- Load testing;
- Stress testing;
- Long-duration or endurance testing;
- Configuration testing;
- Regression testing: a testing cycle to validate performance improvements;

When planning system testing, consider regression tests too. What is the core of your system? Which feature cannot stop working? Answering those questions can help identify where to focus regression testing. Alongside regression tests, it is worth having *a minimum level of unit test coverage to ensure that fixes requested or required by performance tests do not introduce new bugs*.

> For regression testing, automate the main flow end to end and talk to developers about covering it with unit tests.

In the ingresso.com example, high traffic was already expected because of the hype surrounding a major premiere. Another example mentioned earlier was *Black Friday*, when many people visit websites to shop.

> The example in [this reference video](https://youtu.be/o_FMy9NT_XU?t=2144) discusses tests at iFood that run every minute against its main flow: placing an order. That cannot stop working in the application. In this case, those tests are planned to run continuously.
>
> **PS**: this text is intended only to analyze and study an event. It is not an attempt to disparage ingresso.com.

## Sources

*Performance testing reading*: <https://www.testar.me/teste-de-performance>

*Meme pages*: @superhelandia, @lastimarvel, @nerdonautas\
*References*: ingresso.com, its website and Instagram account.

*Reference and study videos*:\
[168 — Software no iFood com Braca: Arquitetura e Testes! | theWiseDev-chat](https://youtu.be/o_FMy9NT_XU?t=2144)

[Como fazer o Ingresso.com escalar? | Conceitos Intermediários de Web](https://youtu.be/0TMr8rsmU-k)\
The video above analyzes ingresso.com with an [emphasis on testing](https://youtu.be/0TMr8rsmU-k?t=2797).
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
---
title: "Teste de Performance: uma breve análise do site ingresso.com"
date: 2023-02-04T00:35:15Z
slug: teste-de-performance-uma-breve-analise-do-site-ingresso-com
description: "Registro de 2023 sobre problemas de desempenho na pré-venda de ingressos e a importância dos testes de performance."
tags: [testes, performance, qualidade]
draft: false
url: "/docs/2023/fevereiro/teste-de-performance-uma-breve-analise-do-site-ingresso-com/"
---

> Publicado originalmente no [Medium](https://medium.com/@kellenxaviier/teste-de-performance-uma-breve-an%C3%A1lise-do-site-ingresso-com-90e89aacb9e6) em 4 de fevereiro de 2023. Este registro preserva o texto e as imagens do artigo original.

*Análise para estudos e aplicação no trabalho sobre testes de software.*

## Um exemplo real para aplicar Testes de Performance

Ao longo da última década o crescimento do online shopping cresceu exponencialmente, cada vez as pessoas aderem mais ao método de compra virtual em vez de comprarem na loja física. A pandemia do covid-19 gerou um impulso nesse modelo de compra, tanto em aumento de compras por já adeptos quanto atraindo novos consumidores. Isso tudo gera um fluxo muito maior nas páginas e servidores, levantando a necessidade de uma solução robusta, segura e com bom desempenho.

Além de um fluxo muito maior no dia a dia comparado ao que era usual, também temos picos de acessos em datas e épocas específicas ao longo do ano, como feriados, datas comemorativas, e grandes eventos. Infelizmente não é comum ver um gargalo em grandes portais de venda, ocasionando em lentidão extrema, falhas de autenticação e quedas da página.

Hoje vamos falar sobre a Black Friday e a Ingresso.com, esses serão nossos exemplos para nos aprofundarmos em **Testes de Performance**. A Black Friday é um evento que ocorre sempre na última sexta-feira do mês de novembro. As lojas online precisam estar preparadas para a alta demanda que é esperada, é inadmissível que já saibamos com tanta antecedência que teremos um pico de fluxo e mesmo assim não estejamos preparados para isso, gerando uma experiência negativa para o cliente e deixando de obter maiores lucros para o negócio — devido tanto a frustração do usuário, evitando futuro retorno na plataforma, quanto ao servidor não sendo capaz de realizar a transação da compra.

### Problemas como

- Queda no servidor;
- Lentidão na Navegação;
- Lentidão no Fluxo de compras (a ponto de não conseguir realizar a compra);
- Instabilidade;
- BUGs;

## Um exemplo real de quando não fazemos Teste de Performance

Por volta do meio-dia (horário de pico) em 29 de novembro de 2021, o site ingresso.com, uma das maiores páginas de vendas de ingressos de cinema, não aguentou a quantidade de acessos simultâneos para as compras dos ingressos na pré-venda do filme mais aguardado do ano.

![Página do filme Homem-Aranha: Sem Volta para Casa no ingresso.com](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-pre-venda.png "imagem retirada do site ingresso.com")

A instabilidade foi tanta que houve pessoas que ficaram *mais de 1 hora para realizar a compra*. Alguns que conseguiram realizar o fluxo de compra tiveram o valor descontado mas não receberam os ingressos, e tiveram que solicitar o estorno do valor.

![Indicador de carregamento do ingresso.com durante o fluxo de compra](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-falha-na-compra.png "imagem retirada do site ingresso.com")

![Mensagem de erro de conexão exibida no ingresso.com](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-instabilidade.png "imagem retirada do site ingresso.com")

### Outros problemas ocorreram também, como

- Queda no servidor — impossibilitando o usuário de acessar o site;
- Fluxo principal incompleto (não conseguir realizar a compra);
- Carregamento infinito (lentidão no fluxo de compra, voltando para a queda do servidor);

### E muitos BUGs

- Deslogar da conta — no meio do fluxo de compra acontecia o logout forçado, muitas vezes sem nem informar ao usuário, gerando conflito na compra;
- Redirecionamento de página — alterando a localidade da sessão da compra, novamente sem o usuário ser informado;
- Filme não está mais disponível — exibindo como se o filme não estivesse mais em cartaz;
- Mensagens Genérica — o erro ocorria ao usuário, porém a mensagem informada não era nada precisa, sendo a mesma para diversos erros diferentes, gerando frustração no fluxo;

![Página do ingresso.com informando que não há filmes em breve](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-erros.png "site ingresso.com")

### Foi tão grande a instabilidade que gerou alguns memes

![Montagem de memes sobre a instabilidade na pré-venda de Homem-Aranha](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--meme-instabilidade.png)

### Já outros não estavam tão contentes assim…

![Comentários na publicação do Instagram do ingresso.com sobre a pré-venda](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--instagram-reclamacoes-1.png "instagram — @ingressocom")

![Comentários de usuários relatando falhas na compra de ingressos](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--instagram-reclamacoes-2.png "instagram — @ingressocom")

### Postagem: nota de esclarecimento do site ingresso.com

![Nota de esclarecimento do ingresso.com sobre o recorde de acessos simultâneos](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--instagram-nota-de-esclarecimento.png "instagram — @ingressocom")

> Os Teste de Performance no sistema servem para que não ocorram essas situações citadas, para manter a qualidade e escalabilidade da aplicação!

### Existem alguns tipos de testes de performance. São eles

- Teste de carga;
- Teste de estresse;
- Teste de longa duração ou resistência;
- Teste de configuração;
- Testes de Regressão — Ciclo de testes validar melhoria no seu desempenho;

Quando se faz o planejamento de testes no sistema, deve-se pensar nos testes de regressão também. “Qual o core do seu sistema?”, “Qual funcionalidade não pode parar?”. Responder a essas perguntas pode ajudar a saber onde focar nos testes regressivos. Além dos testes regressivos, vale destacar ter uma cobertura *mínima de testes unitários, para garantir que novos bugs não sejam introduzidos nas correções solicitadas/requeridas pelos testes de Performance.*

> Sobre os testes regressivos, faça automação end-to-end no principal fluxo, converse com os desenvolvedores para cobrir com testes unitários.

Neste exemplo do ingresso.com já era esperado, devido ao ‘hype’ em cima de uma grande estreia, um alto fluxo de acessos. Outro exemplo usado anteriormente foi o da *Black Friday,* que possui um grande número de acessos para as compras.

> O exemplo dado [neste vídeo](https://youtu.be/o_FMy9NT_XU?t=2144) de referência, comenta sobre os testes rodados no ifood, que são feitos testes em cada minuto, do principal fluxo; fazer um pedido. Isso não pode parar na aplicação. Neste caso é planejado que esses testes devem ser rodados.
>
> **PS**: este texto é utilizado apenas para análise e estudos de um acontecimento. Não é uma tentativa de denegrir o ingresso.com

## Fontes

*Leituras Testes de Performance*: <https://www.testar.me/teste-de-performance>

*Páginas de Memes*: @superhelandia, @lastimarvel, @nerdonautas\
*Referências*: ingresso.com (site e instagram)

*vídeos de referência e estudos*:\
[168 — Software no iFood com Braca: Arquitetura e Testes! \| theWiseDev-chat](https://youtu.be/o_FMy9NT_XU?t=2144)

[Como fazer o Ingresso.com escalar? \| Conceitos Intermediários de Web](https://youtu.be/0TMr8rsmU-k)\
Vídeo acima de análise do ingresso.com com [enfase em Testes](https://youtu.be/0TMr8rsmU-k?t=2797)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,24 @@ slug: cypress-e-boas-praticas-de-automacao
tags: [cypress, automacao, boas, praticas, docs]
draft: false
featured: true
url: "/en/docs/2024/outubro/cypress-e-boas-praticas-de-automacao/"
---

Avoiding *false positives* with Cypress. Below is an example of some code and a commands file with a simple application login:

![Example of poor practices](exemplo-praticas-ruins.png)
![Example of poor practices](../images/cypress-e-boas-praticas-de-automacao--exemplo-praticas-ruins.png)

This application was encountering an error during login. The following code was added to the automation to make login succeed:

![What does this code do?](o_que_o_erro_faz.png)
![What does this code do?](../images/cypress-e-boas-praticas-de-automacao--o-que-o-erro-faz.png)

But what does that code mean? It suppresses errors that occur in the application while Cypress tests run.

How? Using `cy.on('uncaught:exception')` and returning false tells Cypress to ignore errors in your application. This allows the test to continue even if the page has not fully loaded, giving elements time to render before Cypress tries to interact with them.

Why is removing `cy.on('uncaught:exception')` important? In this case, manipulating the test to ignore the error by returning false introduces a false positive. See below:

![Login reported as successful](login_com_sucesso.png)
![Login reported as successful](../images/cypress-e-boas-praticas-de-automacao--login-com-sucesso.png)

## Alternatives for handling loading time and avoiding false positives

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,24 @@ slug: cypress-e-boas-praticas-de-automacao
tags: [cypress, automacao, boas, praticas, docs]
draft: false
featured: true
url: "/docs/2024/outubro/cypress-e-boas-praticas-de-automacao/"
---

Evitando o uso de *Falsos Positivos* com Cypress. Segue abaixo um exemplo de um código, e um arquivo commands com um simples login na aplicação:

![exemplo-praticas-ruins](exemplo-praticas-ruins.png)
![exemplo-praticas-ruins](../images/cypress-e-boas-praticas-de-automacao--exemplo-praticas-ruins.png)

Essa aplicação estava ocorrendo um certo erro ao realizar o login, e foi adicionado o seguinte trecho de código na automação para poder realizar o login com sucesso:

![o que o erro faz?](o_que_o_erro_faz.png)
![o que o erro faz?](../images/cypress-e-boas-praticas-de-automacao--o-que-o-erro-faz.png)

Mas o que esse trecho diz? Serve para suprimir os erros que ocorrem na aplicação durante a execução dos testes do Cypress.

Como assim? Ao usar ```cy.on('uncaught:exception')``` e retornar false, está instruindo o Cypress a ignorar qualquer erro que ocorra na sua aplicação. Isso permite que o teste continue mesmo que a página ainda não esteja totalmente carregada, dando tempo para que os elementos sejam renderizados antes que o Cypress tente interagir com eles.

Por que remover ```cy.on('uncaught:exception')``` é importante? Nesse caso, como está sendo manipulado o teste, forçando a “ignorar esse erro retornando que ele seja falso” é adicionado um falso positivo no nosso teste. Segue abaixo:

![alt text](login_com_sucesso.png)
![alt text](../images/cypress-e-boas-praticas-de-automacao--login-com-sucesso.png)

## Alternativas e soluções para lidar com o tempo de carregamento e evitar adicionar “falso positivo”

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ date: 2025-04-17
slug: pesquisa-de-sites-mercado-foco-em-academias
tags: [pesquisa, ux, design]
draft: false
url: "/en/docs/2025/abril/pesquisa-de-sites-mercado-foco-em-academias/"
---

### Studies and general analysis of gym websites
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ date: 2025-04-17
slug: pesquisa-de-sites-mercado-foco-em-academias
tags: [pesquisa, ux, design]
draft: false
url: "/docs/2025/abril/pesquisa-de-sites-mercado-foco-em-academias/"
---

### Estudos e Análise Geral de Sites de Academias de Atividades Físicas
Expand Down
Loading
Loading