Quem já trabalhou com a realização de testes de performance sabe: é quase impossível fazer um teste de performance com requisitos bem definidos pelo cliente. Na maioria das vezes o que recebemos como requisito é algo como “desejo saber se o software tem boa performance”, e a partir daí se estabelece um diálogo longo com o cliente, buscando estabelecer o que seria boa performance do ponto de vista do cliente.

Fazendo uma analogia com os requisitos funcionais, seria o equivalente ao cliente solicitar: “desejo saber se o software está funcionando correntamente” e não fornecer a especificação funcional do software !

Do ponto de vista das dimensões de qualidade, certamente a performance é uma das dimensões mais mal tratada durante o desenvolvimento de um software. As seguintes frases  traduzem esse tratatamento: “Vamos apenas construir o sistema e ver o que pode ser feito quanto a performance”; “Vamos ajustar o sistema posteriormente, não temos tempo de nos preocupar com a performance agora”; “Performance? A próxima versão tratará disso”; “Nós compraremos um computador com mais capacidade de processamento”; “Nós não temos problemas de performance”

Uma abordagem reativa quanto à performance de um software, pode trazer consequências como: conflitos no relacionamento com os clientes, perdas de negócios, perda de competitividade, aumento do custo do desenvolvimento.

Penso que temos que educar nossos clientes a fazer uma especificação dos requisitos para o teste de performance, conforme ilustrado pela tabela abaixo. Dessa forma o resultado dos testes torna-se tangível e objetivo

image

Outra questão associada aos requisitos de testes de performance é definir claramente qual tipo de teste se deseja fazer: teste de carga, ou teste de stress? É importante ter clareza sobre o propósito de cada um:

O teste de carga é utilizado para determinar o tempo de resposta médio, dado um ou mais cenários típicos de utilização, com uma carga variável de usuários. Os resultados permitem saber se a infraestrutura do sistema (hardware e sofware) irá atender os requisitos de desempenho.

Já o teste de stress é usado para determinar o comportamento de um sistema submetido a condições limites, para simular um horário de pico de utilização do mesmo. Também pode ser utilizado para determinar o que irá acontecer com o sistema quando sua capacidade máxima for atingida.

imageCom requisitos de performance claramente definidos é possível se estabelecer se devemos realizar testes de carga ou stress e assim gerar um gráfico de comportamento do desempenho do software para diferentes quantidades de usuários x tempos de respostas obtidos, conforme ilustra a figura ao lado.

E você e sua empresa, como tratam a performance de software?