Sei que esse assunto é velho, mas volta e meia me deparo com o mesmo problema. Automação de Teste.

Apesar do assunto já não ser novidade (o que pode ajudar a ter ainda mais problemas), ainda a falta de conhecimento sobre automação é grande.

Mas o que é automação?
É a aplicação de técnicas computadorizadas ou mecânicas para diminuir o uso da mão-de-obra em qualquer processo.
A automação diminui os custos e aumenta a velocidade da produção.

A automação de teste não foge muito do mesmo conceito.
É a aplicação de técnicas que utilizam comandos programados para operar um dado processo e determinar que os comandos sejam executados corretamente.
Antes esse processo era executado por humanos, agora executados pelo computador.

Depois de uma rápida ambientação, vamos falar um pouco sobre alguns desses “problemas”.

Ainda há uma visão errada sobre automação de teste. Há pessoas que acham que a automação de teste irá resolver todos os problemas. Enganam-se. Pois pode ser o começo se a automação começar com esse pensamento.

Para que a automação de teste seja bem sucedida, o processo de teste tem que estar maduro, e o teste manual esteja bem definido. Pois o teste automatizado é custoso, e requer manutenção.
Não é simplesmente pegar um cenário e fazer um script de teste.

Primeiro temos que ter em mente o que automatizar e qual será a estratégia para a ser tomada.
Há um pergunta que precisa ser respondida primeiramente: o que vale a pena automatizar? Apesar de ser uma pergunta simples, é de suma importância. Pois se não for bem respondida, pode trazer muita dor de cabeça no futuro (futuro não muito distante).

Primeiramente, temos que separar os cenários que já estejam estáveis, onde nada ou muito pouco poderá ser alterado.
Pois automatizar um cenário ainda que não esteja estável irá acarretar muito retrabalho para ir “moldando” o script de teste.

Depois de ter os cenários estáveis mapeados, temos que pegar os cenários que já tenham casos de teste (ou critérios de aceitação) definidos e claros. Pois automatizar cenários sem casos de teste definidos e claros, também irá acarretar um grande retrabalho.

Depois de ter feito uma segunda análise, iremos pegar os cenários “críticos” para o negócio. Colocar na mesa os cenários e analisar com cuidado.
O conhecimento do negócio irá ajudar e muito os cenários candidatos a automação. É isso mesmo, cenários candidatos.
Pois mesmo depois de separar os cenários críticos para o negócio, vem um outro filtro.

Quais dos cenários críticos para o negócio terá que ser testando sempre, ou muitas vezes antes de liberar uma nova versão?

Pois poderá ter cenários que apesar de serem críticos para o negócio, quase não são testados, e para o primeiro esforço, não será tão importante.
Comece pelos cenários que sempre são testados e toma muito tempo para validação.

Depois dos cenários separados, vem uma outra pergunta: o que, e como fazer o teste automatizado?

Esse momento também é crítico. Depois de fazer toda essa análise, muitos “pecam” nesse momento, automatizando “coisas” inúteis ou “coisas” de forma errada.

Mas como posso automatizar errado? A resposta é simples: falta de conhecimento necessário do que realmente é automação de teste.

Vou dar um exemplo.
Uma pessoa pede para você se certificar que os copos em cima de uma mesa estão lá para serem usados na reunião.
Você entra na sala. abre a porta e vê que há copos postos na mesa.
Volta e fala para pessoa que os copos estão na mesa para serem usados.

A reunião começa, e você é chamado e confrontado pela sua verificação. Pois você havia falado que os copos estavam na mesa e prontos para serem utilizados.
Pois na na hora que as pessoas utilizavam os copos, uns estavam furados e outros quebrados. Uns eram de plásticos e outros eram de porcelana, apesar de serem idênticos.

Você pode estar se perguntando o que esse exemplo bobo tem haver com automação de teste.
E respondo: Tudo!

Pois ao criar os scripts de teste automatizado, não basta verificar se os elementos estão sendo apresentados na tela.
Você tem que testar cada elemento, pois a apresentação deles na tela não valida que eles estejam funcionando.

No exemplo acima foi verificado que havia copos em cima da mesa, mas quando os usuários começaram a usar, foi constatado que vários copos estavam com defeitos (bugs) e afetou na experiência do usuário.

E também não adianta validar apenas alguns elementos.
Irá dar trabalho ao criar o script, mas você irá ter certeza que todos estejam funcionando adequadamente.

Então, automação de teste não é apena verificar se os elementos estão sendo apresentados para o usuário, mas também funcionando, sem problemas.

Mais detalhes aqui Bugs-Busters