Velocidade

Teste de performance é só velocidade?

Escrito por Carlos Alexandre Figueiredo
 em 13 de julho de 2021

Olá, sou Carlos Alexandre Figueiredo e trabalho como Quality Assurance na DBC Company e me considero um entusiasta da tecnologia e seus avanços. E dando continuidade à série de artigos mensais sobre teste de software, hoje vamos falar sobre teste de performance.

Quando pensamos em performance, logo associamos a carros, motos ou tudo aquilo que conseguimos colocar uma velocidade alta. E não estamos errados, porém estamos olhando apenas por um ponto de vista. Performance não é apenas velocidade, existem uma infinidade de parâmetros que podemos utilizar para validar a performance de algo.

Por exemplo, quantos pedaços de pizza você consegue comer? Quanto tempo consegue segurar seu fôlego embaixo da água? Todas estas informações são performance, mas de um ângulo diferente. E com a tecnologia não é diferente, temos uma infinidade de informações que podemos coletar para validar a performance de algum produto que está em desenvolvimento.

Assim como no artigo anterior vou apresentar os principais teste de performance utilizados. Os mais utilizados são o teste de desempenho, teste de carga, teste de capacidade e o teste de stress. Vale lembrar que para todos os testes é necessário um ambiente controlado, onde é possível medir os valores desejados. Tá, mas o que isto significa? É bem simples, quer dizer que eu só consigo verificar a performance daquilo que eu consigo obter um valor. Eu não consigo obter o valor de quanto de oxigênio existe em um quarto, ou a quantidade de vento que possui uma ventania. Eu consigo calcular a velocidade, mas não a quantidade.

Vamos começar explicando um pouco mais sobre o teste de desempenho. Já aconteceu com você quando ao utilizar um aplicativo bancário para efetuar uma compra, pagamento ou até mesmo para logar no aplicativo, ocorre uma demora? Pois é, esta situação costuma acontecer no dia a dia de todos em algum aplicativo.

É possível que esta situação nunca mais ocorra? Com certeza não, mas é possível prever quando isto vai ocorrer. Mas por que não é possível evitar? Bom para explicar isto vou fazer outra analogia.

Em quase todas as cidades existe o metrô, que tem a  função de levar os passageiros de um ponto A até um ponto B. este metrô possui x vagões que comporta uma quantidade de passageiros. Com certeza você já notou que em determinados momentos do dia, estes vagões não é o suficiente para acomodar todas as pessoas sentadas. Para evitar isto a mais provável solução e colocar mais vagões. Mas a população está crescendo cada vez mais e mesmo que dobre a quantidade de vagões em algum momento não será mais o suficiente. Concorda?

O mesmo ocorre com os sistemas que utilizamos hoje. Podemos melhorar o processador para permitir que o aplicativo suporte mais pessoas, mas nunca poderemos garantir que nunca ocorrerá lentidões.

Mas como podemos verificar se o aplicativo está demorando muito para fazer o que precisa? Com o teste de desempenho.

É neste teste que verificamos quanto tempo demora para o aplicativo de banco entrar, para confirmar um pagamento ou confirmar uma transferência. O objetivo deste teste é verificar o tempo de resposta de um determinado aplicativo. Se este tempo for aceitável, estão o sistema é aprovado. Caso o tempo seja superior ao tempo de resposta aceitável, então é necessário um estudo do que precisa melhorar para atingir este tempo de resposta. Mas qual é o tempo de resposta? Aí fica a critério do responsável pelo produto definir este valor. Utilizando como exemplo o aplicativo de banco, o responsável por dizer qual seria o tempo de resposta aceitável seria o próprio banco.

Agora vamos imaginar uma situação hipotética. Vamos imaginar que você apostou em alguma loteria que está pagando um prêmio muito alto. Os números só são liberados via internet em uma página da lotérica no dia 15.

Neste dia você tenta acessar a página e fica exibindo um símbolo de carregando e não abre. Aí você tenta novamente um pouco mais tarde e de novo e de novo, até que desiste de verificar. Este problema ocorreu porque muitas pessoas estavam tentando acessar a página ao mesmo tempo. Para garantir que esta situação não aconteça, utilizamos o teste de stress. O objetivo deste teste é verificar qual o limite de usuários utilizando no mesmo momento que o sistema aguenta. E a partir destes dados tomar decisões sobre se a quantidade é satisfatória ou se é necessário melhorar.

Bom já falamos do tempo de resposta e sobre a quantidade de usuários. Seriam somente estes itens que são importantes ao se verificar o teste de desempenho de uma aplicação? Não, como escrevi no início do artigo, são muitas variáveis que precisamos verificar, mas para o nosso artigo, ficou faltando mais um item importante a se verificar. Os arquivos que precisamos enviar.

Seguindo a ideia de analogias, vamos supor que a receita federal resolva fazer uma promoção, onde todos que enviarem suas declarações de imposto de renda no dia 12 por exemplo, todos vão receber R$10.000,00. Isto aconteceria? Nunca, mas vamos sonhar, afinal, sonhar não paga certo?

Então qual a probabilidade se todos do brasil acessar o site da receita e tentar enviar o arquivo de declaração no mesmo dia? Provavelmente o sistema não vai aguentar e pode ser que algumas pessoas já logadas terão problemas ao enviar seus arquivos. Este cenário é indicado o teste de carga onde o objetivo é começar o teste com uma quantidade de usuários, 100 por exemplo, e aumentar gradativamente a quantidade de usuários, 10 usuários por minuto por exemplo. A diferença deste teste para o anterior é que a quantidade máxima de usuário não está presente no início do teste, mas no decorrer do processo. Com isto conseguimos verificar se os indicadores estabelecidos estão conforme esperados durante um período.

Estes foram os testes de performance mais utilizados, mas existem muitos outros que possuem sua importância de acordo com o contexto. E você conseguiu identificar algum teste que seria legal aplicar em algum produto que você utiliza? Deixe aí nos comentários quais seriam estes testes e em qual produto.

Grande abraço e nos vemos no próximo artigo.

Quer fazer parte do nosso time? #VemPraDBC

Confira nossas vagas em: https://dbc.compleo.com.br/

por Carlos Alexandre Figueiredo Analista de Testes
Menu - DBC Company

Compartilhe

Compartilhar no facebook
Compartilhar no whatsapp
Compartilhar no twitter

Deixe um comentário!

E participe da conversa.

Veja Também

Teste na arquitetura de Micros serviços
Hoje entramos no nosso quarto episódio de série de artigos mensais sobre teste de software e hoje vamos falar sobre o teste...
Scrum
É um processo leve para entregar valor para equipes multifuncionais e auto-organizadas.