Por que automatizar os testes de software? - DBC Company
Por que automatizar os testes de software?
Olá, meus amigos (já me sinto íntimo de vocês), para quem ainda não me conhece, sou Carlos Alexandre Figueiredo e trabalho como Quality Assurance na DBC Company.
Hoje entramos no nosso terceiro episódio de série de artigos mensais sobre teste de software, hoje vamos falar sobre a automação de teste, como funciona, quais seus benefícios e o que para mim é o mais importante, quando utilizar.
Para entender um pouco melhor sobre o que é automação de teste, precisamos tirar de nossas mentes aquela imagem de um robô fazendo as atividades de um humano. Até porque isto não seria automação de teste, mas sim inteligência artificial. E isto é assunto para um outro artigo e com um especialista de IA. Mas eu prometo tentar trazer este artigo a vocês.
Bom, voltando ao nosso assunto automação de teste, precisamos entender o processo de criação de um produto, seja ele um software ou um aplicativo. A equipe responsável pelo desenvolvimento deste produto precisa passar por um processo inicial onde é o entendimento do que este produto precisa fazer, quais são as "regras do jogo" que precisa seguir, como se fosse uma partida de futebol, onde um jogador de linha não pode colocar a mão na bola ou isto é considerado uma falta. Mas o goleiro pode. Esta é uma regra do jogo.
Após entender o que o produto precisa fazer e quais regras precisa seguir, é hora de colocar a mão na massa e começar a produzir este produto. Mas ele não precisa ser produzido todo de uma vez, podemos desmembrar este produto em pequenas partes, para facilitar o entendimento e o desenvolvimento. Vamos fazer mais uma analogia. Ao construir uma bicicleta, não existe uma caixa em que você joga um monte de alumínio e borracha nesta caixa e do outro lado sai uma bicicleta. Ela é construída aos poucos. Primeiro alguém constrói o quadro, que é o responsável por sustentar todas as outras peças, depois alguém faz a roda e assim por diante. No software também eh assim, são produzidos em partes. E após a construção de uma parte é necessário testar para garantir que está de acordo com o esperado. Se quiser saber mais detalhes de como é feito este teste e quais técnicas, dá uma conferida lá no primeiro artigo desta série, intitulado O que é Teste de Software e qual sua importância.
Este teste demora um tempo para ser feito e sempre que uma parte do software é finalizado, testado e aprovado, é necessário juntas com as outras partes que também já foram testadas e aprovadas. Mas sempre que junta uma parte de um software a outro, pode ocorrer de nesta junção, criar uma falha. Vamos entender utilizando a analogia anterior? Bom pense da seguinte forma, alguém produziu o quadro da bicicleta e outra pessoa construiu a roda. Estas peças em separado estavam corretas, mas quando juntou, notou-se que o tamanho da roda esta muito superior ao espaço de encaixe no quadro. Com isto gerou uma falha e precisa ser corrigida. Depois de corrigida, eu preciso verificar se agora sim está do tamanho correto. E é aí que entra a automação. Se alguém já testou isto uma vez, e se eu conseguir uma forma de assim que a falha foi corrigida, o teste executar automático novamente, sem a necessidade de mais uma vez outra pessoa ir lá e testar?
Esta forma é realizada através do uso de softwares que possuem a função de gerenciar e controlar alguns dos testes já realizados pela equipe. Este software utiliza de estratégias pré-definidas baseadas nas "regras do jogo" definidas lá no início do processo e utiliza técnicas de comparação dos resultados. Assim é possível automatizar o teste e garantir que os resultados obtidos sejam equivalentes aos desejados.
Com estas informações acredito que já conseguimos identificar algumas vantagens da automação do teste e por isto vou enumerar algumas destas vantagens:
A automação dos testes tende a reduzir as chances de termos erros nos testes;
A quantidade de esforço humano para realizar os testes de forma manual é reduzido com os testes automatizados, o que nos leva a terceira vantagem;
Os testes automatizados podem e devem ser reutilizados quantas vezes achar necessário, poupando os recursos humanos pois você não precisará de várias pessoas para realizar um teste manual;
Nos testes automatizados é possível simular mais de um usuário testando o software nos mais diversos dispositivos e cenários criando um volume de usuários testando. Podemos ver mais detalhes no segundo artigo desta série, intitulado Teste de performance é só velocidade?;
Após entender o que é o teste automatizado, como funciona e seus benefícios, fica ainda uma dúvida. Quando utilizar?
Já conseguimos notar que o teste é um passo importante no desenvolvimento de um produto, e o que se espera com a automação deste teste é ganhar tempo para focar em outras áreas e mesmo assim manter a qualidade e reduza os custos.
Mas se automatizarmos o teste de uma parte do produto que se altera com frequência, não vamos conseguir ganhar o tempo, pois uma vez que a "regra do jogo" mudou, precisamos ajustar o teste automatizado para se adequar a esta mudança, e isto deve ser feito sempre que a regra mudar. Neste caso, ao invés de ganharmos tempo, vamos perder tempo alterando o teste de novo e de novo e de novo. É necessário focar em automatizar todas as partes do produto que não vai alterar, assim conseguimos executar o mesmo teste n vezes sem mudar nada.
Dessa forma, a automação deve ser bem analisada junto à equipe para que assim seja possível definir quais partes vão ser automatizados e se realmente valerá a pena realizar o processo.
A automação de testes dá uma segurança maior à toda equipe principalmente no que tange às correções no código ou implementação de novas funcionalidades e deve ser introduzida no processo como uma técnica adicional ao processo de desenvolvimento e de qualidade, na qual o principal objetivo é agregar valor ao serviço prestado e às entregas ao cliente.