Ricardo Bozzeda, MBA, CTFL-AT, CTAL-TM, ITILNa industria de software, a taxade introducao de defeitos nas aplicacoes devido a alteracoes incorretas ouincompletas e bastante elevada, em geral, a cada seis correcoes feitas ao longoda vida dos sistemas uma gera defeito no codigo alterado ou em algumafuncionalidade adjacente. As principais razoes desta alta taxa de defeitos sao oserros na especificacao dos requisitos, as mudancas constantes na tecnologia, a tendenciade combater os sintomas ao inves de identificar as causas dos problemas e a poucaexperiencia dos desenvolvedores envolvidos.Portanto quando o defeito em uma aplicacaoe corrigido e conveniente realizar dois tipos de testes: o teste de confirmacao para verificar se a correcao foi efetivamenterealizada e o teste de regressaopara garantir que a solucao nao introduziu novos erros em qualquerfuncionalidade existente. Este mesmo principio se aplica quando umafuncionalidade e adicionada ou alterada, nesses casos, o teste de sistema podeverificar se os novos recursos funcionam de acordo com os requisitosespecificados, enquanto os testes de regressao podem mostrar se o novo codigonao quebrou nenhuma funcionalidade.Os testes de regressao sao essenciaispara garantir a qualidade e a confiabilidade de um sistema e devem ser umprocesso continuo executado em varias fases durante o seu ciclo de vida. Elessao caros, mas quando bem executados podem reduzir bastante o custo demanutencao do sistema, com a deteccao de defeitos inseridos ou expostos por umamudanca ou correcao antes da sua liberacao.Testes de Regressao Baseados em RiscosOs testes de regressao consistemem reexecutar os testes realizados apos uma manutencao no sistema e comparar osresultados obtidos com os resultados dos testes anteriores. Seria entao de se esperarque cada novo caso de teste escrito durante os testes de sistema fosse incluidono pacote de regressao para ser executado antes da proxima liberacao do sistema.Assim o pacote de regressao se tornaria maior a cada nova manutencaodesenvolvida, tornando-se um importante ativo da empresa. Entretanto isso podese tornar um problema, pois devido a limitacoes de tempo e recursos, nem sempresera factivel reexecutar todos os casos de teste elaborados. Entao como garantir que asfuncoes mais importantes e criticas do sistema serao testadas?A resposta e identificar osriscos e priorizar os testes. As tecnicas de priorizacao dos testes deregressao baseados em riscos e uma pratica que decide o que testar usando osriscos como uma maneira de medir o impacto da nao realizacao dos testes nasfuncionalidades mais importantes e criticas. Os fatores utilizados para aavaliacao podem ser o custo decorrente da falha, visibilidade externa da area,intensidade de uso da funcionalidade, entre outros. Existem algumas premissas paratestes de regressao baseados em riscos, entre elas, a existencia de casos de testeescritos e o historico das execucoes anteriores, a documentacao dafuncionalidade e da correcao ou manutencao realizada e a participacao deespecialistas das areas de negocio e sistemas na avaliacao dos riscos.Algumas Questoes Importantes sobre Testes de Regressao1. Em que niveis de teste executaros testes de regressao?Os testes de software acontecemem niveis diferentes (teste unitario, teste de integracao, teste sistema,etc.). O foco do teste e diferente para cada nivel, por isso, se voce executaros testes de regressao em niveis diferentes a probabilidade de encontrardefeitos e maior.Alem de testar os aspectosfuncionais, precisamos realizar testes