Executando testes simultâneos em diferentes dispositivos
Fala galera, mais uma vez seguindo com os estudos sobre Testes e Qualidade de Software, onde minha proposta é aprender e me desenvolver profissionalmente. Dado o contexto da publicação anterior onde falei sobre o Zalenium mas não comentei que foi descontinuado e seguindo a dica de um colega no LinkedIn(obrigado! rs), achei pertinente um novo texto sobre esse tema só que retirando o Zalenium da proposta de arquitetura.
A melhor solução que ilustra a nova proposta é a do Selenium Grid 3 conforme imagem retirada da documentação. Isso significa que foram usados a quantidade de componentes necessários que o Grid 3 disponibiliza. Se você quiser utilizar mais recursos, indico o Grid 4 que veio com uma atualização bem interessante e robusta.
Recursos utilizados
Um client pode enviar as solicitações de execuções para o hub que se encarregue de executar os testes remotamente nos nós/nodes.
O nó/node podemos dizer, nesse contexto, que são contêineres com instâncias do Selenium que disponibilizam navegadores específicos, por exemplo, Chrome e Firefox em diferentes plataformas.
Cenário de teste:
É o mesmo da outra publicação.
O cenário de teste acessa a página do Google utilizando um browser, pesquisa por uma conta do Medium, clica no resultado desejado e confirma se o perfil está correto.
Configuração dos testes
Como na publicação anterior, utilizei o TestNG para execução dos testes paralelos. O arquivo .xml está configurado para rodar os testes em 3 navegadores diferentes, Chrome, Firefox e Edge conforme abaixo:
Docker compose
Com uma nova proposta de arquitetura de testes, criei outro repositório no Github, que você pode acessar clicando aqui. Podemos analisar o arquivo docker-compose.yml onde temos os contêineres necessários para execução do script.
Esse arquivo possui uma imagem do Jenkins, 3 imagens dos nós/nodes que disponibilizam instâncias do Chrome, Firefox e Edge e uma imagem do hub.
Para utilizar/executar essa arquitetura podemos rodar os comandos abaixo:
$ docker-compose -f docker-compose.yml up
Caso você nunca tenha baixado as imagens, o Docker se encarrega de baixá-las e inicia os contêineres para cada uma.
Para verificar se os contêineres foram iniciados podemos executar o comando:
$ docker ps
Nome das imagens conforme configuração no docker-compose.yml
selenium/node-firefox:4.1.2–20220217
selenium/node-chrome:4.1.2–20220217
selenium/node-edge:4.1.2–20220217
selenium/hub:4.1.2–20220217
Parar a execução dos contêineres:
$ docker-compose -f docker-compose.yml down
Para acessar o Selenium Grid e visualizar as execuções em tempo real basta acessar a url http://localhost:4444/
No Selenium Grid as execuções e os nós/nodes são exibidos e através dele podemos acessar os recursos disponíveis.
Obs.: Caso seja necessário entender como executar o caso de teste você pode acessar o novo repositório no Github ou a publicação anterior.
Esses mecanismos podem apoiar bastante a escalar e otimizar os testes em diferentes dispositivos e também a entender melhor o Selenium.
Enquanto estava escrevendo essa publicação encontrei também muitos recursos que são disponibilizados no Grid 4 como router, distributor, session map, new session queue e até event bus. Vale a pena olhar a documentação e atualizar seus estudos nessa ferramenta super interessante.
É isso galerinha, espero que essa publicação possa agregar de alguma maneira. Ficaria muito feliz em receber seu feedback ou comentário. Tmj e até mais!