A IMPORTÂNCIA DOS TESTES DE REGRESSÃO



Ricardo Bozzeda, MBA, CTFL-AT, CTAL-TM, ITIL

Na indústria de software, a taxa de introdução de defeitos nas aplicações devido a alterações incorretas ou incompletas é bastante elevada, em geral, a cada seis correções feitas ao longo da vida dos sistemas uma gera defeito no código alterado ou em alguma funcionalidade adjacente. As principais razões desta alta taxa de defeitos são os erros na especificação dos requisitos, as mudanças constantes na tecnologia, a tendência de combater os sintomas ao invés de identificar as causas dos problemas e a pouca experiência dos desenvolvedores envolvidos.

Portanto quando o defeito em uma aplicação é corrigido é conveniente realizar dois tipos de testes: o teste de confirmação para verificar se a correção foi efetivamente realizada e o teste de regressão para garantir que a solução não introduziu novos erros em qualquer funcionalidade existente. Este mesmo princípio se aplica quando uma funcionalidade é adicionada ou alterada, nesses casos, o teste de sistema pode verificar se os novos recursos funcionam de acordo com os requisitos especificados, enquanto os testes de regressão podem mostrar se o novo código não “quebrou” nenhuma funcionalidade.

Os testes de regressão são essenciais para garantir a qualidade e a confiabilidade de um sistema e devem ser um processo contínuo executado em várias fases durante o seu ciclo de vida. Eles são caros, mas quando bem executados podem reduzir bastante o custo de manutenção do sistema, com a detecção de defeitos inseridos ou expostos por uma mudança ou correção antes da sua liberação.

Testes de Regressão Baseados em Riscos

Os testes de regressão consistem em reexecutar os testes realizados após uma manutenção no sistema e comparar os resultados obtidos com os resultados dos testes anteriores. Seria então de se esperar que cada novo caso de teste escrito durante os testes de sistema fosse incluído no pacote de regressão para ser executado antes da próxima liberação do sistema. Assim o pacote de regressão se tornaria maior a cada nova manutenção desenvolvida, tornando-se um importante ativo da empresa. Entretanto isso pode se tornar um problema, pois devido a limitações de tempo e recursos, nem sempre será factível reexecutar todos os casos de teste elaborados.

Então como garantir que as funções mais importantes e críticas do sistema serão testadas?

A resposta é identificar os riscos e priorizar os testes. As técnicas de priorização dos testes de regressão baseados em riscos é uma prática que decide o que testar usando os riscos como uma maneira de medir o impacto da não realização dos testes nas funcionalidades mais importantes e críticas. Os fatores utilizados para a avaliação podem ser o custo decorrente da falha, visibilidade externa da área, intensidade de uso da funcionalidade, entre outros.

Existem algumas premissas para testes de regressão baseados em riscos, entre elas, a existência de casos de teste escritos e o histórico das execuções anteriores, a documentação da funcionalidade e da correção ou manutenção realizada e a participação de especialistas das áreas de negócio e sistemas na avaliação dos riscos.

Algumas Questões Importantes sobre Testes de Regressão

1. Em que níveis de teste executar os testes de regressão?

Os testes de software acontecem em níveis diferentes (teste unitário, teste de integração, teste sistema, etc.). O foco do teste é diferente para cada nível, por isso, se você executar os testes de regressão em níveis diferentes a probabilidade de encontrar defeitos é maior.

Além de testar os aspectos funcionais, precisamos realizar testes de regressão cobrindo atributos não-funcionais da aplicação, como o seu desempenho, uso de recursos, segurança, usabilidade, etc. O motivo é que uma pequena alteração no código ou design pode produzir um efeito considerável sobre o desempenho do sistema.

2. Quais casos de teste executar na regressão?

É importante analisar as mudanças realizadas e seu impacto no sistema antes de selecionar um conjunto adequado de casos de teste. Casos de teste de regressão devem ser selecionados com muito cuidado, para que no mínimo um conjunto de casos cubra o fluxo básico dos cenários de caso de uso. Os testes que são mais importantes para o domínio do sistema e os casos de teste de sucesso, isto é, casos que revelaram defeitos em versões anteriores também devem ser incluídos no pacote.

É preciso identificar as áreas da aplicação conhecidas por ter altas taxas de falhas e para elas incluir mais testes de regressão.

Utilize o princípio 80/20. Podemos assumir que existe uma grande probabilidade de que 20% das funcionalidades serem utilizadas em 80% do tempo, não deixem de criar pacotes para regressão destas funcionalidades.

Certifique-se que o pacote de regressão seja atualizado regularmente, já que algumas funcionalidades podem ter sido removidas ou substituídas e garanta que não haja testes duplicados.

3. Com que frequência executar os testes de regressão?

A resposta a esta pergunta depende de seu orçamento e do tempo disponível. Mesmo que você não execute os testes de regressão diariamente, ele deve ser executado pelo menos antes do sistema ser liberado para produção.

Para projetos menores, execute os testes de regressão após cada compilação de sucesso ou, pelo menos, uma vez por semana.

4. Que parte dos testes de regressão deve ser automatizada?

Os casos de teste candidatos para automatização devem ser simples e não necessitar de intervenção humana, além disso, o sistema deve estar estável e a frequência de repetição da execução deve ser alta.

Sempre que possível automatize, trabalho manual repetitivo provoca perda de interesse e falta de concentração. Outra vantagem de automatizar os testes de regressão e que mais pacotes podem ser adicionados sem muito impacto sobre o tempo, podendo ser executados a durante noite ou em paralelo aos testes manuais.

5. Como saber se os testes de regressão são eficazes?

Como qualquer tipo de teste, um teste de regressão eficaz é aquele capaz de descobrir defeitos. Para realização de um teste de regressão eficaz deve-se escrever um plano de teste de regressão descrevendo a estratégia e os critérios de saída.

6. Quais os benefícios de ter uma boa estratégia para testes de regressão?

Podemos entregar sistemas mais confiáveis e estáveis, identificar defeitos decorrentes de modificações precocemente e ainda economizar horas de trabalho para resolver falhas em produção, muito mais caras e desgastantes.

7. Quais os principais motivos dos testes de regressão não serem realizados?

Muitas empresas acham que os testes de regressão são caros, complicados e de difícil manutenção. Além disso, em muitas empresas falta definir e implantar uma política para testes de regressão, ou quando existe uma política, geralmente não há o compromisso da alta gestão para implantação.

Comentários