Docker - O próximo passo no teste automatizado.
Continuando um pouco aquilo que mencionei no último relato (Link), tive um requisito do meu cliente em realizar a automatização de um aplicativo com um ferramenta que não conhecia, o Cypress. Apesar da falta de conhecimento, com um pouco dedicação e estudo (o material de referencia do Cypress é fantástico - Link) consegui superar esse desafio e realizar o pedido conforme o cliente queria.
Mas ai que começou as surpresas.
O cliente gostaria de executar a automatização num ambiente com Jenkins, com daily e night tests e num pipeline de integração continua utilizando a ferramenta padrão da empresa, o Jenkins. Justo, um pedido normal o ambiente DevOps de hoje. E apesar de não conhecer o Cypress, eu dominava bem o Jenkins.
Entretanto, o cliente exigiu que eu utilizasse o Docker! E ai começou os meus problemas. Nunca eu tinha feito um projeto de automatização com Docker. Eu já tinha visto e ouvido falar em como funciona, mas nunca tinha trabalho com a criação das imagens e do container em si.
Bem, depois de vários dias de trabalho, muita dor de cabeça e muito stackoverflow (rs), consegui compreender e começar a utilizar o Docker com o Cypress. Montei a imagem utilizando as imagens do Cypress de base que já tinham o Chrome e crie o container pronto para ser executado pelo meu job no Jenkins dentro de um pipeline (a imagem abaixo é apenas um exemplo ilustrativo)
Eu gostei muito desta experiência. Apesar de passar por uns apertos pela falta de conhecimento técnico destas ferramentas, foi um desafio aprender Cypress e Docker e integra-los. Eu prometo que em breve faço um post mais técnico sobre a utilização do Cypress com Docker.
Mas voltando ao título deste artigo, assim como alguns anos atrás eu percebi que a automatização serial essencial para o QA do futuro, digo que o Docker vai ser essencial para continuar o processo de DevOps (ou pelo menos, ferramentas de container). Há um ganho significativo construir um container de automatização que tem o comportamento como um micro serviço que pode ser colocado em diferentes ferramentas de automatização.