Newsletter #039 - Terminologias de Teste de Performance que todo QA deve conhecer
Seu newsletter semanal voltado para tecnologia e qualidade de software
Olá pessoal, mais uma semana de newsletter voltado para tecnologia e qualidade de software.
Na semana passada conhecemos mais sobre o Diagrama de GANTT e como podemos aplicar nos mais diversos projetos, entre eles em nossos estudos, caso não tenha lido segue o link. Na newsletter de hoje vamos conhecer um pouco mais de testes de performance, mas especificamente as principais terminologias, então bora lá?
Terminologias de Teste de Performance
Dia após dia percebemos o quão o mundo está rápido e volátil, em mudança constante, onde o tempo de resposta de uma aplicação faz todo o diferencial na hora de consumir um produto, escolher um site de compra, ou simplesmente para navegar horas em uma página de entretenimento. Performance passou de um simples coadjuvante na esteira de testes para um ator principal na busca pela excelência de um software.
Assim, nós QAs devemos ter cada vez mais um domínio sobre esse tipo de teste, mas para isso antes de começarmos de fato com os testes devemos entender as principais terminologias para medir e aprimorar o desempenho de nossos aplicativos, então abaixo trouxe os principais termos que irão te auxiliar a entender um pouco mais desse tipo de teste.
Usuários Simultâneos: vários usuários usando um aplicativo ao mesmo tempo. Para simular cenários de teste de performance em tempo real, precisamos de verificações de simultaneidade, isto é, garantir que o aplicativo possa gerenciar e fornecer respostas corretas para um número grande de usuários e esses atuando em paralelo.
Usuários Virtuais: Se usarmos algumas ferramentas de teste de performance como JMeter ou K6, podemos carregar usuários virtuais. Basicamente, significa um usuário que não é real, mas é usado para replicar ações reais do usuário em um aplicativo para verificações de desempenho. Os usuários virtuais podem ser descritos como Threads, sendo que cada thread garante o acesso e a validação a aplicação que você está testando.
Tempo de Resposta: é o tempo total entre o momento em que um usuário ou cliente envia uma solicitação ao sistema ou aplicação e o momento em que recebe uma resposta. O tempo de resposta pode ser influenciado por vários fatores, como latência, capacidade do servidor, consultas ao banco de dados, eficiência do código, armazenamento em cache e simultaneidade (explicado abaixo).
Cache: é uma técnica que melhora a velocidade e o desempenho do seu site, armazenando dados ou recursos usados com frequência em um local rápido e acessível, como navegador ou servidor de cache, etc.
Um tempo de resposta de 2 segundos pode ser aceitável para uma página web, mas inaceitável para uma aplicação em tempo real. Da mesma forma, um tempo de resposta de 10 milissegundos pode ser impressionante para uma consulta de banco de dados, mas insignificante para um serviço de streaming de vídeo.
Transação por segundos : a medição é usada para calcular o desempenho de sistemas que lidam com transações de rotina e manutenção de registros.
O TPS pode ser calculado com a fórmula:
T÷S = TPS
Onde:
T = Número de transações
S = Número de segundos
TPS = Transações por segundo
Think Time: um usuário do mundo real leva tempo para ler o conteúdo de uma página da web ou preencher os detalhes em um formulário da web. Tais atividades criam uma lacuna entre as duas ações de um usuário. Think time simula o mesmo intervalo de tempo adicionando um atraso entre duas transações.
Massa de dados: se refere à quantidade e complexidade dos dados que estão sendo processados ou manipulados pela aplicação durante o teste. Isso pode incluir dados como registros de usuários, transações, conteúdo de banco de dados, ou qualquer outra informação relevante para a funcionalidade da aplicação. Suponhamos que para realizar uma transação a thread necessita estar logado, assim, é necessário um conjunto de acessos para que cada thread simule corretamente uma transação.
Cenário de teste: é uma combinação específica de condições de uso da aplicação que é simulada durante o teste para avaliar seu desempenho. Cada cenário de teste pode incluir diferentes elementos, como o número de usuários simultâneos, o tipo de ação que estão realizando na aplicação (por exemplo, navegar em páginas, fazer compras, enviar mensagens, etc.), a carga de dados sendo processada, e outros fatores relevantes. Então caso queremos simular um acesso a pagina e compra de um produto, devemos criar um cenário de teste que englobe todos os endpoints que serão chamados pelo usuário que irá comprar o produto.
Endpoints: se referem aos pontos de entrada ou saída em uma aplicação, geralmente associados a APIs (Interface de Programação de Aplicações) ou serviços web. Os endpoints representam os URLs específicos que os clientes (como outros sistemas ou aplicativos) podem acessar para interagir com a aplicação e realizar operações, como enviar solicitações (requests) para obter ou enviar dados.
Request Rate: é a taxa na qual as solicitações são enviadas para a aplicação durante o teste. Essas solicitações podem ser qualquer tipo de interação que a aplicação espera receber, como acessar uma página da web, fazer uma consulta a uma API, enviar um formulário, etc. Sua medida é muito importante para o teste de performance pois ajuda a avaliar como a aplicação se comporta sob diferentes cargas de trabalho. Uma alta taxa de solicitação pode sobrecarregar os recursos do servidor e causar tempos de resposta lentos ou até mesmo falhas devido a sobrecarga.
Taxa de Erros: indica a proporção de solicitações que resultaram em erro durante um teste específico. Esses erros podem incluir uma variedade de respostas que indicam problemas na execução da operação solicitada, como códigos de erro HTTP (por exemplo, 404 para “não encontrado”, 500 para “erro interno do servidor”, etc.) ou outros tipos de falhas de aplicação. A taxa de erro junto com Request Rate e Tempo de Resposta são métricas primordiais para garantir uma monitoria que garanta que a aplicação está com estabilidade e confiabilidade sobre grande carga de acessos.
Script de teste: é um conjunto de instruções ou comandos que descrevem as ações que serão realizadas durante o teste para simular o comportamento dos usuários ou sistemas em uma aplicação. Esse script é usado para automatizar o processo de teste e repetir as ações em condições controladas.
Rampagem (ramp up period): A propriedade ramp up representa o atraso entre o início do teste até que todos os usuários virtuais estejam em execução. Isso é independente da configuração de duração e informa quanto tempo levará para “aumentar” o número total de usuários virtuais escolhidos. Essa propriedade auxilia por exemplo a verificar uma escala de acessos de usuários simultâneos por um período de tempo até chegar a quantidade total de usuários, um exemplo na vida real é uma promoção que é adicionada em uma propaganda na qual a cadência de acessos se dará a partir da visibilidade daquela propaganda, podendo aumentar bruscamente ou por um período de tempo.
Linha de base: ao estabelecer os testes de performance, precisamos ter uma métrica de antemão que possa iniciar o teste. Agora, essa métrica pode conter dados sobre o desempenho atual do aplicativo ou o limite mínimo que nosso aplicativo deve atender. Esta métrica deve ser o ponto de inicio do teste e ela deve ser batida e aprimorada ao passar do tempo.
Bom, hoje conhecemos um pouco sobre as terminologias de teste de performance, abaixo como de costume tem as principais notícias de tecnologia e Qualidade de Software, dê uma conferida 😊. Vejo vocês na próxima semana com mais um tema técnico da nossa área, não perca!
O que rolou de Tecnologia?
Como abordar a Arquitetura de Software? Uma perspectiva do primeiro princípio - arquitetar um software não é uma tarefa fácil, são muitas horas de planejamento, estudo. Nesse sentido esse texto apresenta uma visão inicial de como estruturar um software.
Como automatizar implantações do Kubernetes em 2024? - com a grande evolução dos microsserviços ficou essencial conhecer sobre kubernetes e além de entender conseguir automatizar processos que são manuais. No artigo mostra formas de automatizar com kubernetes implantações de aplicações na nuvem.
Desenvolvimento avançado de front-end: como aplicar a qualidade do código em grande escala - qualidade de um software é aplicado em qualquer camada, em front-end não é diferente. Criar um front-end escalável e com qualidade é sinônimo do usuário feliz e crescimento. Artigo muito interessante!
E Qualidade de Software, como está?
Transformando a garantia de qualidade: a revolução da IA em testes automatizados - inteligência artificial é a grande tendência do mercado, e em testes automatizados não é diferente, assim nesse artigo mostra como usar IA para aperfeiçoar os testes automatizados, muito válido a leitura!
5 ferramentas para geração de dados aleatórios ou fictícios (Fake Data Generator) - quem nunca passou por dificuldades para criar dados aleatórios para cenários de teste? No artigo é respondido essa dúvida apresentando 5 ferramentas que todo QA deve conhecer para automatizar utilizando dados aleatórios.
Tutorial de teste de unidade NodeJS: um guia abrangente - artigo muito interessante e completo que tem como objetivo ser introdutório para criação de testes unitários em Node, vale a pena a leitura.
Eventos Importantes não perca!
Como a Agilidade pode ajudar a Qualidade - Evento Online.
Data: 25/04
Inscrições abertas
Vejo vocês na próxima newsletter 😁🚀!
“O fato central de nossa existência é que o tempo é o recurso finito supremo, mas o eu recordativo ignora essa realidade.”– Daniel Kahneman