Orientações gerais para testes de desempenho
Conteúdo |
INTRODUÇÃO
Testes de desempenho têm a função de verificar se o sistema alvo atende aos requisitos de desempenhos especificados. Além disso, permitem avaliar características não funcionais do sistema relacionadas, como capacidade, vazão e tempo de resposta [1]. Contudo, o objetivo do teste de desempenho é o mesmo de qualquer outro teste, que é o mesmo da prória disciplina de Engenharia de Software: entregar produto de qualidade. E qualidade, do ponto de vista do usuário, além dos aspectos funcionais, certamente inclui a velocidade de resposta para as operações realizadas no sistema. Apesar disso, testes de desempenho frequentemente deixam de ser realizados, fadando inclusive sistemas bug free ao fracasso pela baixa percepção de qualidade por parte dos usuários.
PREMISSAS
Executar testes de desempenho é uma ativiade complexa e, por consequência, bastante onerosa ao processo de desenvolvimento. Contudo, são inúmeras as vantagens colhidas de testes bem executados [2] [3]. Esta complexidade está relacionada principalmente às atividades necessárias antes da execução propriamente dita dos testes de desempenho. Este capítulo descreve algumas destas atividades e como elas contribuem para o sucesso do processo de teste.
Funções testadas
Sabe-se que testar é uma atividade estatística. Raramente é possível testar um sistema de grande porte em sua totalidade, por conta da quantidade de combinações possíveis para todas as funções existentes: testes infinitos têm custos também infinitos. Neste cenário, é preciso encontrar um ponto de equilíbrio em que se teste o máximo possível usando a menor quantidade possível de recursos. Para isso é necessário definir quais funções são críticas e devem ser alvo dos testes de desempenho. Isso porque provavelmente nem todas as funções são críticas em relação ao desempenho. Por exemplo, no PJe, os CRUDs de tabelas básicas provavelmente não possuem restrição forte com relação ao tempo de resposta. Já a consulta processual é um caso que provavelmente possui este requisito. Logo, é necessário definir quais funções serão alvo dos testes de desempenho.
Definição de indicadores
Como apresentado na introdução deste documento, testes de desempenho têm a função de verificar se o sistema alvo atende aos requisitos de desempenho especificados. Para tanto, é necessário definir estes requisitos. É preciso definir, para cada função eleita, consideradas suas características, qual o requisito de desempenho esperado. É uma definição de Acordo de Nível de Serviço (ANS) para cada uma das funções e para o sistema como um todo. Isso pode ser feito considerando as diversas dimensões do teste de desempenho: vazão, capacidade e tempo de resposta. Contudo, do ponto de vista do usuário, o principal componente é a velocidade de resposta. Desta forma, parece coerente definir um ANS para o tempo de resposta das funções críticas do sistema.
O mercado apresenta alguns indicadores com base na percepção humana considerando suas aspirações e limitações.
REFERÊNCIAS
1. IEEE. Guide to the Software Engineering Body of Knowledge. IEEE Computer Society, 2014. Disponível em http://www.computer.org/web/swebok.
2. Teste de desempenho: Conceitos, Objetivos e Aplicação: [4]
3. Teste de desempenho: [5]
JMeter: http://jmeter.apache.org
Tempos de resposta em Websites: http://www.nngroup.com/articles/website-response-times/
Tempos de resposta: 3 limites importantes: http://www.nngroup.com/articles/response-times-3-important-limits/