• Nenhum resultado encontrado

2.1 Tipos de teste de software

2.1.2 Testes não funcionais

Tal como acontece com os testes funcionais, para testes não funcionais existem também inúmeras técnicas. Vamos cingir a nossa atenção a três tipos de teste não funcional: testes de Desempenho, testes de Carga e testes de Stress.

Os conceitos de desempenho e carga estão directamente relacionados com o tipo de sistema ao qual nos referimos. Dito de outra forma, o modo como medimos o desempenho ou estabelecemos a carga de um processamento, é feita consoante o tipo de sistema. Assim, é essencial que sejam definidos correctamente alguns conceitos no âmbito de uma aplicação Web. Apresenta-se então um conjunto de conceitos e a forma como estes devem ser interpretados no contexto definido:

 Desempenho: definido como a capacidade e velocidade com que um sistema recebe, processa e responde a um pedido;

 Carga: quantidade de tráfego e computação que é exigido que um servidor processe, num determinado espaço de tempo;

 Tempo de resposta: mais do que o tempo de processamento computacional (por parte do servidor), define o tempo que passa desde que a aplicação cliente submete o pedido até ao momento em que a respectiva resposta é apresentada no ecrã do utilizador;

 Stress: condição na qual um sistema, já não é capaz de responder aos pedidos em tempo útil ou mesmo, já não tem capacidade de resposta. Comummente, um sistema entra

Metodologias e Ferramentas de Teste Aplicações Web

21

neste estado por excesso de carga (a quantidade de actividade de processamento computacional é superior àquela disponibilizada pelas condições de Hardware da máquina, onde o sistema é executado).

Dadas estas definições, apresentam-se agora os tipos de testes supra referidos.

Testes de Desempenho

Têm como objectivo avaliar o desempenho de um sistema no que diz respeito à sua capacidade de resposta e à sua disponibilidade. Trata-se então, da execução de um pedido por parte de um cliente e avaliação do tempo de resposta. Para este tipo de teste ser realizado, devem ser definidos alguns parâmetros, tais como, o número médio de utilizadores esperados em simultâneo, o tempo entre pedidos distintos, o tempo máximo que é aceitável que o servidor precise para responder a um pedido e o tempo durante o qual o teste deve ser executado. Não faz sentido colocar uma aplicação privada que espera no máximo dez utilizadores numa situação de atendimento de mil utilizadores, para avaliar o seu desempenho.

Em suma, os resultados devem ser mensuráveis e as condições de teste definidas dentro de um intervalo de valores que esteja em conformidade com as condições de execução reais. Para a execução deste tipo de teste deve ser utilizado um cliente fora da máquina em que executa o sistema, para que a simulação das condições de utilização sejam ainda mais reais.

Para tal, existe uma grande quantidade de ferramentas, capazes de serem configuradas (parâmetros a enviar por GET ou POST, tipo de pedido HTTP GET ou PUT, entre outras configurações) e simularem um grande número de pedidos em simultâneo. Devem ser registadas métricas relativas ao número de pedidos feitos, número de pedidos atendidos e não atendidos, número de clientes em simultâneo, tempos de resposta aos pedidos e deve ser calculado o tempo médio de resposta. É boa prática também, serem apresentados gráficos ilustrativos da evolução do sistema ao longo do tempo, permitindo rapidamente e de forma visual estabelecer uma relação com o número de clientes em simultâneo, o tipo de pedidos e os tempos de resposta.

Testes de Carga

Este tipo de teste é no fundo uma subcategoria do teste de Desempenho. Define no entanto, que um sistema seja avaliado em condições de carga pré-definidas, ou seja, o sistema será testado para uma quantidade de pedidos (pré-calculados consoante o sistema) que imponha alguma carga significativa ao sistema. Visa avaliar o tempo necessário à execução de uma ou mais tarefas em simultâneo. Porém, é importante definir, que a carga imposta, que devendo ser elevada, não deve ser definida, para condições acima das quais se sabe que o sistema não tem

Metodologias e Ferramentas de Teste Aplicações Web

22

capacidade de processamento, ou nalguns casos, que não se espera que irá processar, uma vez que, não se encontra em concordância com as condições de utilização esperadas. De resto, tudo o que foi dito para o teste de Desempenho é também válido para o teste de Carga.

Testes de Stress

Um teste de Stress é em certa medida muito semelhante aos já descritos testes de Desempenho e Carga. Funciona sensivelmente da mesma forma, mas o desempenho será avaliado com o sistema a funcionar em situações de sobrecarga, muito para além do seu ponto de ruptura, ou seja, o sistema será obrigado a responder a quantidades massivas de tráfego HTTP e a suportar quantidades de carga muito para além das suas capacidades. Em testes de Desempenho ou Carga, simulam-se condições de execução normais. Por sua vez, o teste de

Stress visa simular uma execução exaustiva do sistema para permitir encontrar falhas

relacionadas com o ambiente de execução (máquina executora do processo, sistema operativo, outros exteriores ao sistema, mas que influenciam directamente o seu funcionamento). Este tipo de testes, ao levar a máquina a bloquear, vai permitir também, avaliar a forma como o sistema recupera, permitindo verificar se este é gracioso na forma como retorna ao funcionamento normal (ou mesmo se o consegue fazer), ou se o sistema fica em condições vulneráveis, se existe perda da integridade de dados ou outras condições que não permitam um correcto e seguro funcionamento [7, 8].

Da descrição apresentada pode resultar alguma confusão no sentido de se pensar que, estes testes são e fazem todos o mesmo. De certa forma sim, dado que o seu modo de execução é semelhante. Para uma maior clarificação, pode dizer-se que os testes de Desempenho visam o desenvolvimento de estratégias que permitam o desenvolvimento de sistemas que executem com um nível de desempenho adequado e satisfatório. Testes de Carga, são orientados à análise de um sistema em funcionamento normal, simulando a carga que será esperada com que o sistema terá de lidar. Testes de Stress visam levar o sistema a parar a sua execução, por esgotamento de recursos com vista a avaliar se a recuperação do normal funcionamento ocorre de forma eficaz e em tempo útil, ou se, o sistema tem de ser repensado.

Para a realização deste tipo de testes, existem várias questões a considerar:

 Número de utilizadores no total do sistema (quantidade total absoluta e em simultâneo);  Tempo entre acessos: instantâneos, com tempo de processamento associado a uma

máquina, ou com tempo de “pensamento”, associado à utilização de um ser humano;  Número de utilizadores por classe de funcionalidade;

Metodologias e Ferramentas de Teste Aplicações Web

23

 A largura de banda a utilizar;

 Condições gerais de Hardware do sistema que efectua o teste e do sistema a testar. No fundo, o que se pretende enunciar com estas questões, é que estes testes exigem que as condições de execução devem ser definidas conhecendo as características do sistema e as condições esperadas de utilização [2].

Apresentados os tipos de teste que se pretende que a Plataforma seja capaz de realizar, avança-se agora para uma análise de várias ferramentas cujas funcionalidades permitem a execução deste tipo de testes.

Dados os tipos de operações e funcionalidades que se esperam que façam parte da plataforma a desenvolver e também, dada a arquitectura proposta para o seu desenvolvimento (ver capítulo Concepção da Solução), será necessária a utilização de três tipos de ferramentas distintas. Por oposição a uma secção de comparação geral, optou-se por se agrupar as ferramentas analisadas em três grupos distintos e efectuar as suas descrições, análise e selecção entre as ferramentas de cada grupo.