Entendendo os testes de performance

Todos já enfrentamos diferentes problemas de performance ao acessar nossos serviços favoritos na web. Lentidão e até mesmo indisponibilidade por longos períodos são problemas que ainda afetam a maioria das aplicações web.

Desse modo, podemos apontar que a Performance é um requisito não-funcional CHAVE para as aplicações web. E menosprezá-la pode causar grandes consequências.

Podemos definir os testes de performance, como:

Através dos testes de performance podemos simular o ambiente de produção, que a aplicação será submetida e avaliar como a mesma irá se comportar.

Lembrando que….

…de forma, que através da correta execução dos testes de performance, em conjunto com um monitoramento eficiente, podemos submeter diversos pontos da aplicação aos níveis de carga esperados e avaliar o seu comportamento.

No contexto das aplicações web: “Se um usuário tem de esperar muito (para acesso, processamento do lado do servidor, para formatação ou exibição do lado do cliente), ele ou ela pode decidir ir para outro lugar.” (Pressman, 2005)

Logo, desprezar esse requisito não-funcional pode gerar perdas irrecuperáveis para um negócio.

Do ponto de vista conceitual, fala-se sempre em três tipos de teste:

Performance: Avalia se a aplicação em teste atinge os requisitos em relação a questões como: tempo de resposta, throughput e utilização sob um nível de carga esperado.

Carga: Submete a aplicação a diferentes níveis de carga, com o objetivo de identificar a capacidade máxima de operação, além de gargalos, memory leaks, etc…

Stress: Avalia a robustez, disponibilidade e confiabilidade da aplicação em condições extremas (cargas muito elevadas, escassez de recursos)

Os três são comumente confundidos, porém como descrito cada um tem sem objetivo específico e a correta utilização dos mesmos durante o desenvolvimento poderá proporcionar um nível completo de informações sobre o comportamento da aplicação.

Por fim, é importante enfatizarmos que: “Caso não sejam executados da maneira correta, os resultados são, na melhor das hipóteses, inúteis e, na pior das hipóteses, enganosos, fazendo com que uma empresa menospreze ou superestime a capacidade de sua aplicação.” (Savoia, 2000)

Logo, é fundamental que, desde o início do ciclo de vida da aplicação, o RNF relacionado a performance seja priorizado, para que todo um ambiente de testes seja preparado de maneira adequada para simular o ambiente de produção e desse modo auxiliar o desenvolvimento a atingir o nível de qualidade desejado.

Gostou do assunto testes de performance? Participe, deixando seu comentário no post.

Em breve, voltaremos ao assunto falando do Apache JMeter.

E não esqueça de nos seguir no Twitter e juntar-se a nós no Facebook para ser informado das novas atualizações do blog!

Anúncios

11 comentários sobre “Entendendo os testes de performance

  1. Parabéns pelo post José.

    Só acho importante citar que os testes de performance devem ser planejados e documentados como qualquer outro teste funcional.(ou até mais detalhado)

    Muitas empresas apenas começam a utilizar o JMeter por exemplo com a finalidade de executar os testes de performance sem nem saber exatamente como ela fará estes testes e o que ela espera como resultado destes testes.

    • Perfeito Daniel.
      De fato um planejamento bem feito é fundamental para o sucesso dos testes de performance, inclusive para alinhar as expectativas com o cliente.

      • Exatamente.
        Até porque deve-se coletar informações com o cliente para planejar os testes de acordo a realidade do cliente, informações como ambiente, rede, usuários simultâneos, picos de acesso, browsers utilizados vão fazer diferença nos resultados dos testes.

  2. Gostei muito do assunto!! Esse tipo de teste me interessa muito e visto que brevemente teremos Copa do Mundo e olimpiadas no Brasil, estamos preparados para as inumeras transações bancárias que ocorrerão simultaneamente? ou os acessos a sites de esportes? uma transmissão ao vivo de um jogo??? é… acho q nao

  3. é, a copa e olimpiadas do brasil vai ser uma prova de fogo para a infra de TI e para as aplicacoes e servicos web que estarao servindo conteúdo… quero só ver 🙂

    a moral da história é que [a nao ser que voce realmente encare isso como uma prioridade] voce sempre tende a colocar o foco maior no funcional do que na performance… nao que isso esteja errado, mas é preciso olhar para todos os lados, ter equilibrio…. [até pq se o funcional está “quebrado” nao importa tambem se é muito performático]…

  4. Tem também o teste de ENDURANCIA, refere-se a teste de longa duração que tem o objetivo de identificar resíduos gerados pela aplicação.

  5. José, parabéns pelo artigo, testes de performance são importantíssimos o que é difícil e custoso é construir todo o aparato para realizar estes teste em um laboratório de teste que reflita o ambiente de produção, sendo assim, compartilho artigos que escrevi sobre o assunto:
    GREEN HAT – Uma Visão Geral, Virtualizando o Ambiente de Testes
    http://bit.ly/green-hat-visao-geral
    Como aumentar a qualidade do software sem acréscimo no tempo e no custo do desenvolvimento?
    http://bit.ly/green-hat-beneficios

  6. Embora você não tenha aprofundado mais sobre as questões do teste de performance, ao final do artigo (que é sobre teste de performance), você inclui que “conceitualmente” existe 3 tipo de teste (performance, stress e carga) não entendi bem o motivo de mencionar apenas estes tipos de teste neste contexto, pode me explicar o porquê? Parabéns pela iniciativa.

    • Oi Alan… essa questão foi abordada, pelo que tento apontar justamente no parágrafo seguinte do texto… “Os três são comumente confundidos, porém como descrito cada um tem sem objetivo específico e a correta utilização dos mesmos durante o desenvolvimento poderá proporcionar um nível completo de informações sobre o comportamento da aplicação.”

      Então, o que ocorre é que algumas vezes as pessoas falam desses 3 tipos de testes, como sendo coisas completamente diferentes, porém elas estão intimamente ligadas. Onde, a escolha por um dos três tipos, normalmente estará ligada a fase de um determinado projeto, e as suas necessidades.

      Espero ter ajudado…

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s