Tenho sistemas legados. Por onde começar os testes?

É sempre uma tarefa muito complexa escrever testes de regressão automatizados para um sistema legado. As perguntas variam de por onde começar, quanto custa para automatizar e decidir sobre a melhor estratégia para a automação.

Vários autores e especialistas sugerem uma abordagem baseada na diminuição do risco de erro no software. Você nunca poderá testar tudo, logo você tem que escolher onde você quer gastar seu tempo e dinheiro. Teste, é sobretudo, estratégia para diminuição de risco e não somente sobre a cobertura de código ou completude.

Algumas perguntas podem ajudar na definição do caminho a seguir:

• Quais funcionalidades usadas pelo cliente estão com a pior qualidade?

• Quais são as principais áreas funcionais do software que o cliente tem maior lucratividade?

• Será que o cliente prefere mais funcionalidades para melhor qualidade?

• Quais são os maiores riscos para os sistemas?

• Se o cliente pudesse melhorar algo, o que seria?

• Testes exploratórios manuais encontrarão bugs mais importantes?

Outros pontos podem ser úteis na identificação de prioridades, como por exemplo:

1. Só automatizar testes que fazem acesso a telas do sistema, e não aos caminhos mais importantes para a sua aplicação, não vai gerar os ganhos de melhoria de qualidade esperados com a automação dos testes. Muitas aplicações têm algum caminho comum que é usado em 80% dos casos. Se isso que é comum parar de funcionar, a sua empresa está em apuros!

2. Se você puder ignorar a interface de tela e ir direto para o backend testar a funcionalidade de negócios, faça isso! Isso significa que os testes de integração específicos da interface de tela estarão certificando se os dados do front-end chegarão ao back-end.

3. Antes de iniciar a automação para um projeto de legado, faça um desenho macro do projeto para identificar as áreas específicas que precisam de atenção. Isto servirá para ajudar a mapear as principais funcionalidades, quais as áreas com maior amplitude de funcionamento, bem como fluxos de negócio principais.

4. Construir testes de fluxo completo (end to end) para a área que você quer concentrar o foco do projeto de automação pode gerar bons resultados. É recomendado que, para um sistema legado, se existem roteiros de testes de regressão manuais que são repetidos a cada nova versão disponível, estes roteiros são candidatos a começar um projeto de automação de testes e ter ganhos rápidos.

5. Para qualquer aplicativo de legado, os cenários de negócios mais críticos devem ter testes de regressão automatizados. Identificar estes cenários é importante para todo o projeto e deve ser feito juntamente com os usuários finais da aplicação.

Em nossos projetos, identificamos que há uma pequena chance para automatizar todo o sistema (ou software) legado de uma só vez. O que funcionou para nós foi uma combinação de fatores. Alguns dos quais eram:

• Pedir aos clientes a priorizar as áreas críticas do sistema legado;

• Escrever scripts de teste de regressão manuais para cada área mais crítica;

• Ter tempo e orçamento em cada sprint para escrever testes exploratórios para essas áreas;

• Executar o conjunto de teste pelo menos uma vez por semana;

• Testar de forma adequada e automatizada todos os novos desenvolvimentos.

Com esta abordagem, podemos automatizar, adequadamente, as funcionalidades mais críticas de um sistema legado em 3 meses. Pode parecer um período longo, mas trata-se de obter todo o conjunto de funcionalidades críticas do sistema legado coberto com testes de regressão automatizados. A abordagem sugerida é a construção de uma cobertura suficiente para a funcionalidade crítica de negócios e para aumentar gradualmente a cobertura de testes no sistema.