Testes paralelos com TestNG, Docker e Selenium Grid

neder
3 min readApr 3, 2022

--

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.

selenium grid 3

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
contêineres iniciados

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!

--

--

neder

Hey, I enjoy talking about Software Quality, Agile Testing and sometimes about random things.