A IMPORTÂNCIA DOS TESTES DE REGRESSÃO
Autor: Bozzeda | Publicado: 2015-05-14T10:47:00-03:00











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.