06 Janeiro, 2022 |
Por: Cristiano Baumgartner
06 Janeiro, 2022 |
Por: Cristiano Baumgartner
O teste automatizado vem sendo utilizado cada vez mais para aumentar a qualidade e confiabilidade no desenvolvimento de software. Além disso, o uso desta prática diminui o esforço empregado em testes manuais, reduz custos gradativamente, possibilita executar uma quantidade maior de testes em menos tempo, dentre outros benefícios.
Desse modo, neste post listaremos 11 dicas fundamentais para usar no desenvolvimento de automação de testes funcionais (ou caixa-preta, como também são conhecidos), os quais são conduzidos na interface sem ter acesso a estrutura lógica interna do software.
Acompanhe!
Procure arquitetar o projeto separando suas responsabilidades para que seja possível efetuar manutenções de forma simples e eficaz. Uma sugestão é utilizar padrões de projeto como page objects e page actions, os quais tem por objetivo evitar problemas como código duplicado, dentre outros, através da segmentação dos elementos e ações de acordo com as páginas existentes na aplicação.
Criar classes utilitárias para definir configurações específicas como as do Selenium também é uma boa abordagem.
Identificar os elementos na tela é fundamental na automação de testes funcionais. Ao mapeá-los, dê prioridade para a utilização de identificadores únicos e estáticos (ids), visto que esta propriedade dificilmente se repete, tornando o script de teste confiável e menos propenso a falhas. Outra opção é usar a propriedade "name" que também é muito efetiva. Entretanto, caso tais propriedades não estejam disponíveis, aplique outros recursos como a localização por seletores css, xpath, link_text, etc.
Sempre que possível, utilize esperas dinâmicas como implicit wait ou explicit wait, uma vez que estes métodos tornam a execução dos scripts mais rápida em razão de que aguardam “até” o tempo máximo estabelecido para que a ação esperada seja executada. Em contrapartida, nas esperas estáticas como sleep, o tempo estipulado será “sempre” aguardado até o final, mesmo que a ação já tenha ocorrido, tornando a execução mais lenta.
Um componente chave da automação é o script de teste. Sua construção é parecida com a codificação de um software, podendo-se inclusive utilizar padrões e boas práticas de desenvolvimento. Portanto, desenvolva os scripts de maneira segmentada, que validem funções específicas do software e que possam ser executados de forma independente. Tal conduta facilita a análise e identificação dos testes que passaram/falharam além de proporcionar agilidade nas refatorações.
Maximizar a tela do navegador pode não funcionar bem em alguns contextos. Logo, ajustar o tamanho do mesmo para abrir em uma resolução mínima que atenda uma boa quantidade de dispositivos de acordo com o escopo do projeto, resulta em menor probabilidade de quebra dos testes.
Utilize o método "quit" para fechar as abas do navegador e encerrar as instâncias do selenium webdriver que foram abertas. Isso evita consumo de processamento, impede que os testes se tornem lentos e gerem resultados afetados pelo desempenho da máquina utilizada na operação.
Ao construir a estrutura da automação, torne possível a inclusão de diferentes navegadores para rodar os testes. Adicione também o modo headless, o qual realiza os procedimentos sem abrir a interface gráfica do browser, modo este usado em ambientes de integração contínua, exemplificando. Uma alternativa é dispor a automação para dar suporte inicialmente ao Google Chrome e incluir navegadores adicionais conforme necessidade e escopo do projeto.
Considere disponibilizar relatórios para viabilizar uma correta avaliação dos resultados gerados na execução das baterias de teste e tornar o gerenciamento da automação mais completo e compreensível. Além dos relatórios, outro meio de evidenciar os resultados pode ser através da geração de arquivos de imagens. Ferramentas como Allure Reports e Extends Reports auxiliam na visualização até mesmo dos passos que quebraram, juntamente (se assim for programado) com o screenshot de cada passo executado.
Alguns projetos de desenvolvimento são construídos a partir de histórias de usuário e comportamentos da aplicação. Neste caso, uma possibilidade é fazer uso da técnica de desenvolvimento BDD (behavior-driven development) na automação, onde os scripts são criados com base nos cenários que evidenciam como o sistema deve se comportar. Assim sendo, os scripts são escritos em linguagem natural e codificados na linguagem de programação desejada. Com isso, busca-se garantir que os resultados descritos nos cenários de teste foram alcançados, criando-se uma documentação “viva” à medida que a automação vai sendo implementada.
Certos projetos demandam a utilização de dados específicos como hostname, e-mail, porta de acesso e senha de usuários. Por conta disso, essas informações acabam se tornando sensíveis e passíveis de mudanças. Então, para que haja fácil manutenção e segurança desses dados, pode-se usar o conceito de programação orientada por dados.
Manter o código fonte da automação em um repositório para controle de versão é uma boa pedida, ainda mais se houver mais de um integrante trabalhando no mesmo projeto. Isso evita problema com perdas de código, permite gerenciamento de branches, possibilita futura integração contínua, etc.
Se você chegou até aqui, pôde conhecer um conjunto de atividades e práticas que podem ser aplicadas na construção de testes automatizados. O objetivo principal foi apresentar algumas soluções que usamos, inclusive, aqui na Testing Company, de acordo com padrões estabelecidos em nossos projetos, para que possamos ajudar nossos clientes na entrega de softwares, sistemas e aplicativos com atributos essenciais de qualidade e confiabilidade.
Para acompanhar nosso trabalho e continuar recebendo informações sobre Teste e Qualidade de Software, siga-nos também nas redes sociais.
Leonardo
Muito bom! ótimas dicas
Responder