A automação de testes exigirá tempo e atenção, mas quando feita da maneira correta, valerá o investimento. Não exagere na automação; em vez disso, concentre-se nas necessidades e nos requisitos. Ter um código limpo e fácil de ler é muito importante para manter seu conjunto de testes sustentável.
Karishma Kolli, engenheira de desenvolvimento de software, falou sobre caçadores de mitos na automação de testes durante a Fall Online Testing Conference 2017. O InfoQ cobriu esta conferência com perguntas e respostas, resumos e artigos.
O InfoQ entrevistou Kolli a respeito de ferramentas e habilidades de teste, automação de testes, e desenvolvimentos notáveis em testes automatizados.
InfoQ: Qual é o seu conselho para selecionar ferramentas de teste adequadas e quais critérios devemos usar?
Karishma Kolli: O processo de seleção da ferramenta de testes depende principalmente das suas necessidades de negócio e testes. Por exemplo, o desempenho é um grande problema para algumas aplicações, mas não é uma prioridade para outras. O mesmo ocorre com carga, interface, etc. Depende do público-alvo e do impacto comercial. A disponibilidade de um conjunto de habilidades, orçamento, e o fator de tempo, também podem desempenhar um papel secundário na determinação de suas ferramentas. No mundo do software, sempre temos cronogramas e prazos, assim, se tivermos um cronograma apertado então podemos escolher algo mais simples ou mesmo uma ferramenta comercial.
InfoQ: Diferentes tipos de testes requerem diferentes ferramentas. Como podemos gerenciar uma variedade de ferramentas e conjuntos de habilidades em testes?
Kolli: É muito simples. Quando entendemos e reconhecemos a necessidade de diferentes ferramentas de testes, o gerenciamento delas não será um problema. Já gerenciamos várias ferramentas de desenvolvimento e conjuntos de habilidades. Logo, gerenciar uma variedade de ferramentas e conjuntos de habilidades para testes não é diferente.
No artigo Thoughts on Test Automation in Agile, Rajneesh Namta explicou por que devemos decidir cuidadosamente o que automatizar:
"Não automatize só por fazê-lo. Considere devidamente preocupações como manutenção e tempo de execução antes de adicionar novos testes. Cada teste que a equipe adiciona ao conjunto de testes automatizado torna-se parte da base do código de produção e, portanto, deve ser mantido exatamente como o resto da base do código - por toda a vida da aplicação. Adicionar testes que são excessivamente complexos ou difíceis de manter gera lentidão no ciclo de feedback para a equipe e devem ser evitados."
InfoQ: Quanto tempo as equipes devem gastar na automação de testes? Como saber se está colocando tempo suficiente e não tempo demais?
Kolli: Inicialmente, a automação de testes precisará de mais tempo, mas uma vez que sua estrutura está pronta, não precisaria investir muito mais tempo nele. Normalmente, se uma equipe tiver um ou dois testadores manuais, então um engenheiro de desenvolvimento em teste deve ser capaz de lidar com as necessidades de automação. Claro, isso varia de acordo com a quantidade de testes que são automatizados e o tipo de aplicação.
Se está automatizando tudo na interface do usuário (UI), então está gastando mais tempo do que o necessário na automação.
Dave Farley sugeriu em Automated Acceptance Testing Supports Continuous Delivery que não devemos usar os Sistemas de Gravação-e-Reprodução de interface:
Por sua natureza, os sistemas de gravação-e-reprodução de interface começam assumindo que sua interface é o foco do teste, e não o comportamento do sistema que o usuário deseja. Este é, de fato, um tipo de teste tecnicamente focado, em vez de um tipo de teste orientado ao comportamento. Como resultado, esses testes são sempre mais frágeis, mais propensos a quebrar em face de mudanças relativamente pequenas no sistema sob teste. Então os evito - muito trabalho a longo prazo.
InfoQ: Qual a sua visão sobre o uso de sistemas de gravação-e-reprodução de interface em testes?
Kolli: Pessoalmente, não sou fã de gravação-e-reprodução. É o mesmo que "uma medida única para tudo", e, na realidade, não se encaixa bem para a maioria de nós. A gravação-e-reprodução não atendem às necessidades sob medida; elas são os testes mais fracionados e, como resultado, não se poderá confiar em seu conjunto de testes de automação.
InfoQ: Quais são os seus principais aprendizados com a automação de testes?
Kolli: Ao longo dos anos, percebi que é fácil se deixar levar e exagerar na automação. É importante se concentrar em necessidades e requisitos. Por exemplo, se o requisito é testar áreas críticas do cliente, então, não precisamos investir tempo em recursos utilizados por apenas 2% dos usuários.
Se precisamos dar suporte a 10.000 usuários por vez, então não precisamos testar 11.000.
Manter a suíte de automação pode não parecer muito esforço, mas, à medida que seu código continua crescendo, torna-se cada vez mais complexo atualizá-lo e mantê-lo, por isso é muito importante ter um código limpo e fácil de ler.
Muitas vezes, tendemos a ignorar pequenos detalhes como relatórios e configuração, mas se atendemos adequadamente esses pequenos detalhes, eles se transformam em ativos valiosos.
InfoQ: Quais os desenvolvimentos notáveis que se vê nos testes automatizados? O que se espera que aconteça no futuro próximo?
Kolli: A cada dia, mais e mais empresas estão reconhecendo a importância da automatização de testes. A automação de testes evoluiu de ser apenas gravação-e-reprodução em seu computador local para executar um conjunto de testes personalizados feitos na nuvem.
Com o desenvolvimento da inteligência artificial (IA), a automação de testes será muito mais confiável e eficaz. Exemplos familiares são a Siri e o Google: eles aprendem e evoluem, identificam a diferença na voz, etc. A IA pode ser usada da mesma maneira no desenvolvimento de software para identificar padrões de código, áreas comuns de erro, etc.
Com a IA, a automação de testes pode se tornar parte integrante do desenvolvimento.