Um trabalhador em vez de um testador? Vale a pena estudar Selenium em 2020?



Continuação da entrevista “Quem mais precisa de selênio? Alguém usa o BDD em 2020? Aprendizado de Máquina no Selenium »

O diálogo envolveu:

  • Vsevolod Brekelov e Daria Manukhina (comitê de programa da conferência Heisenbug);
  • Anna Chernyshova, desenvolvedora da biblioteca Akita e da nova ferramenta Healenium ;
  • Ivan Krutov, desenvolvedor do Selenoid .

No final do artigo, você pode descobrir a conclusão compartilhada por Ivan e Anna, ou seja, a resposta à pergunta: “Devo estudar o selênio ou escolher outra coisa?”. Além disso, conseguimos falar sobre:

  • Marker Man e descubra quem ele é;
  • Funcionários valiosos nas empresas;
  • Kit de ferramentas do testador;
  • Infraestrutura para testes de selênio;
  • Concorrentes de selênio.

Se você não leu a primeira parte da entrevista, aqui estão algumas capturas de tela do que os leitores mais se lembraram: O



artigo anterior interrompeu a questão do aprendizado de máquina. Vamos começar com ele.

- Se o aprendizado de máquina é realmente tão legal, que parte permanecerá viva para as pessoas, testadores?

Anya : No início, tudo precisará ser validado de uma maneira ou de outra. Isso funciona bem quando temos uma resposta clara à pergunta que o aprendizado de máquina resolve: sim ou não. Dependendo disso, sim ou não, a máquina toma uma decisão. Quando não há uma resposta clara para esta pergunta, ela já é necessária ...

- Um marcador especial.

Ivan : Qualquer aprendizado de máquina consiste em duas partes.

Em primeiro lugar, é o treinamento em si, quando o algoritmo recebe algum tipo de amostra dos dados corretos nos quais aprende e, em seguida, a aplicação do algoritmo. O estágio de aplicação do algoritmo é quando a máquina nos ajuda a resolver um grande número de problemas com base nas soluções corretas para um pequeno número de problemas. No estágio atual, o treinamento desses algoritmos será, de qualquer forma, do lado humano.

Em segundo lugar, o aprendizado de máquina é principalmente sobre pesquisa, todos os mecanismos de pesquisa na Internet são muito ativos nisso. Para melhorar a qualidade desses algoritmos, é preciso processar grandes quantidades de dados. O papel de uma pessoa pode ser reduzido a oferecer suporte a uma infraestrutura incrivelmente grande que analisará esses dados efetivamente. Talvez o próprio algoritmo faça o trabalho em si. Mas, para garantir todas as condições para que esse algoritmo funcione e tenha boa qualidade, ainda será um trabalho humano.
Para fornecer todas as condições para que o algoritmo possa funcionar e que tenha boa qualidade, ainda será um trabalho humano.
Por exemplo, para treinar um número grande, algum bom algoritmo, você precisa de um cluster distribuído de cálculos, algum tipo de MapReduce maluco . Para que isso funcione, você ainda precisa de pessoas que o configurem e procurem que funcione normalmente ou que também o escrevam especificamente para esta tarefa. O aprendizado de máquina não é um tópico muito simples. Quanto mais você deseja que ele funcione melhor, mais você precisa investir. A cada porcentagem seguinte de qualidade, esse é um tipo de enorme aumento incrível, não em porcentagem, mas em ordens de magnitude.
No estágio inicial, você pode iniciá-lo no seu laptop e, então, quanto melhor você deseja que ele funcione, mais você precisa investir.
- Ou seja, mesmo com essas máquinas, ainda não vamos deixar de executar testes em algum tipo de infraestrutura, em algumas máquinas. Este CI / CD com testes não irá a lugar algum. Portanto, por exemplo, o Selenoid certamente não será algo do passado, mas o mesmo não pode ser dito para o Selenium IDE.

Vanya : O Selenium IDE não está mais sujeito à extinção, mas ao fato de que se tornará uma ferramenta de nicho, como tudo o que eu disse antes. Ele tem equipes para quem é realmente conveniente. Alguém se sente à vontade para escrever autotestes a partir do zero, alguém se sente à vontade para gravar e reproduzir. Não estou inclinado a enterrar tudo assim, parece-me que este é um processo evolutivo.

- Bem, sim. "Cobol" está mesmo em testes, ao que parece.

Vanya : Estou falando de mainframes! Alguém Cobol, mainframes e tudo funciona. Parece-me que estamos falando mais sobre todos os tipos de problemas tecnológicos, e há outra nuance. No final, tudo se resume a dinheiro quando tudo começa a inchar.

Se tudo de alguma forma cresceu muito para nós, por exemplo, os custos de aprendizado de máquina, em algum momento a pergunta geral surgirá: "Essas despesas geralmente são justificadas?"

Qual é a nossa tarefa se usarmos Selenium? Testar. Pode acontecer que, em algum momento, os custos desse desenvolvimento de aprendizado de máquina sejam mais altos do que apenas contratar pessoas que se sentam e dão as mãos.

Por que as equipes ainda existem, há testes manuais, há testes automáticos? Por que os testadores manuais não desapareceram? Porque há uma certa classe de tarefas que é mais barata de executar e que as pessoas a testam com as mãos. É mais barato do que escrever autotestes. De qualquer maneira, tudo está contra a economia e não há como chegar a lugar nenhum.

Se tudo de alguma forma cresceu muito para nós, por exemplo, os custos de aprendizado de máquina, em algum momento a pergunta geral surgirá: "Essas despesas geralmente são justificadas?"


Quem é um "funcionário prestativo"?


"Mas a rapidez com que um produto chega a um usuário afeta a economia". A automação está apenas tentando reduzir o tempo de entrega para aumentar o lucro e a vantagem competitiva, certo?

Vanya : Certo. E um funcionário que percebe as atividades de sua empresa, como se fosse sua empresa pessoal. Ele conta dinheiro, pensa pelo menos neste tópico, não conta em unidades reais, mas pensa que provavelmente será mais barato para nós. Esse funcionário sempre será valioso para uma empresa que dirá isso em todas as reuniões: "Olha, pessoal, economizaremos agora, por exemplo, e, portanto, obteremos mais lucro". Mesmo se ele é um desenvolvedor júnior.

- Parece que eu raramente conheci essas pessoas no mercado.

Vanya : Bem! Eles são poucos.Poucas pessoas pensam .

- Acontece que todos estão acostumados a resolver o problema, e com o conjunto de ferramentas ou com as abordagens que já existem, mas poucos pensam se são realmente ótimos do ponto de vista dos negócios.

Anya : Depende do desenvolvimento da organização, da cultura que ela promove para seus funcionários. Recentemente, li o livro "Descobrindo as organizações do futuro" , existem diferentes categorias de organizações, elas são divididas por cores.

As organizações do futuro são empresas turquesas, onde todos os funcionários estão doentes e preocupados para que façamos o melhor para os usuários, e todos são incluídos no processo. Não há uma classificação rigorosa do que é a gerência, há funcionários inferiores, funcionários seniores, cada um com sua própria área de responsabilidade separada, como se não fosse a lugar algum em outras áreas relacionadas - não está lá. A responsabilidade entre todos os funcionários é compartilhada. Se a empresa começa a se mover nessa direção, começa a promover valores semelhantes entre seus funcionários, e mesmo se uma pessoa que não tem uma ideia de que é assim que se faz, enraíza para esse negócio, para o negócio, olha para os colegas, começa para estudar mais, se ele mudar de local de trabalho, isso também começará a se desenvolver. Isso vem do número de organizações similares que são agora,e quantos aparecerão.

Uso de selênio em 2020


- Como o Selenium é usado agora?

Vanya : Existem várias aplicações básicas das quais ouvi falar. A primeira coisa que sei é o teste funcional. Este é o uso pretendido: para abrir um site, executar alguns scripts do usuário, verificar se tudo funciona como deveria.
A segunda coisa que ouvi foi o uso de mecanismos de pesquisa (rastreamento de páginas na Internet e análise de seu conteúdo, capturas de tela). Isso permite que você entenda se é um site bom ou ruim.

Anya : Você também pode usá-lo como um teste de carregamento da interface do usuário.

Vania: É um pouco caro. Provavelmente existem pessoas que fazem isso, mas, em princípio, é caro. Pelo menos, este não é um aplicativo, não apenas testes funcionais. Ainda existem várias tarefas que exigem trabalho automatizado simples com o navegador. Alguns usam essa abordagem, por exemplo, para enviar spam.

De fato, o Selenium é apenas uma API que permite que o código funcione com os navegadores, só isso. Qualquer tarefa para a qual essa ferramenta é adequada pode usá-la, não necessariamente testando, qualquer coisa pode ser.

Kit de ferramentas do testador


- Para resolver os problemas do autoteste, que ferramentas além do Selenium os engenheiros costumam escolher? Eles pegam Java, Allure, Selenoid, Selenide, juntam tudo e conseguem uma boa metralhadora para resolver suas tarefas diárias. Ou há algo mais?




Anya : Aqui você precisa entender em quais níveis essa abordagem de automação consistirá. Em cada nível, você pode encerrar algum instrumento.

O primeiro nível é escolher o que escrever; é Java, .NET, JS? Eu trabalhei mais com Java e vou falar sobre isso. Na verdade, sobre o que construir o projeto - Java. Você pode montá-lo usando Maven ou Gradle. Agora, o Maven tem um apelido pom que é legal no YAML, é conveniente trabalhar com ele.

Em seguida, escolha como executar esses testes - esses são alguns JUnit ou TestNG. Eu tenho trabalhado com o JUnit 5 recentemente.

Em seguida, escolha o nível de interação com os elementos. Este é o selênio, ou algum tipo de invólucro, por exemplo, o seleneto. Com isso, você pode reduzir o tempo para escrever testes.

Em seguida, você precisa verificar os resultados do teste. Aqui está uma seleção muito grande de ferramentas. Você pode usar as mesmas asserções do JUnit 5 , agora elas são feitas de maneira bastante conveniente. Ou a biblioteca Hamcrest , eu realmente gosto. Ou AssertJ também é uma coisa conveniente. Quando você seleciona esse corredor para executar os testes, precisa pensar na execução paralela dos testes, como será melhor organizada. Na JUnit 5, isso é conveniente; a anotação é simplesmente feita lá.

Depois, quando o teste foi escrito, poderia ser um invólucro de BDD, o mesmo pepino. Se você escolher JUnit, serão necessárias outras coisas.

Além de infraestrutura. Trabalho com a Selenoid recentemente, foi o mais conveniente para mim.

Mais relatórios.

- Bem, os relatórios são, claro, Allure ?

Anya : Bem, ou ReportPortal .
Eu posso explicar quando o Allure é melhor, quando o ReportPortal é melhor. O fascínio é bom quando um projeto pequeno, então, idealmente, geralmente entra. Se esse é um tipo de projeto grande, em que 100500 mil testes ou é uma solução corporativa, ou existe o entendimento de que deve haver muitos testes e todos devem aparecer em algum tipo de relatório, então o ReportPortal é bom, é mais conveniente processar os resultados de um grande número deles testes. Quando há poucos testes, o Allure é mais conveniente.

Vania: Não sei se você sabe ou não que também participei do primeiro fascínio. Inicialmente, Allure apareceu no Yandex, como todos sabem, mas no final acabou que os caras foram fazer isso separadamente. Como resultado, elas são apenas a funcionalidade que o ReportPortal possui, todo tipo de coisas complexas: armazenamento de histórico e assim por diante, começaram a funcionar como um produto comercial separado, para que isso não apareça no Allure usual. E eles estão tentando vendê-lo. Se você deseja um relatório de código aberto para um grande número de testes, provavelmente o ReportPortal, embora eu nunca tenha tentado. Para pequenos projetos de algum tipo, Allure, parece-me, é para os olhos.

Todas essas ferramentas foram escritas para testes complexos com cenários bastante longos, onde era necessário visualizar bem todas as etapas que são feitas durante o teste. Esses relatórios não são particularmente adequados para testes de unidade, porque há apenas a resposta "sim / não", caiu - não caiu.

Infraestrutura para testes de selênio


- Vanya, você pode nos contar mais sobre a parte do servidor e com que frequência as pessoas precisam tocá-la? (para engenheiros de controle de qualidade, DevOps).


Imagem: Unsplash

Vanya : Qual é o lado do servidor? Deve ser algum tipo de aplicativo da Web que implemente o padrão Selenium. Para que possamos enviar comandos de acordo com os padrões Selenium para o nosso cliente, e este servidor executa todas as verificações que desejamos fazer por nós. Para o Selenium, agora existem várias ferramentas que o implementam.

Existe o mesmo Selenium regular, Selenium ou Selenium Grid ou Selenium Server - esse é um aplicativo escrito em Java, que é o mais antigo e o mais fácil em termos de recursos. Há três anos, a partir do padrão Selenium, da Selenium Grid, o projeto Zalenium iniciou. Ele já sabe como executar navegadores em contêineres do Docker. Este projeto implementa todo o padrão, suporta a possibilidade de gravação de vídeo, a capacidade de armazenar logs, tem uma interface melhor que o Selenium padrão.

Fizemos um projeto do zero chamado Selenoid . Essa também é uma implementação completamente independente do protocolo Selenium. Está escrito em Go, a instalação Java não é necessária, nada é necessário, apenas inicia no binário e precisa do Docker.

Além do código aberto, fazemos uma implementação para o Kubernetes, este é o Moon . Essa também é uma implementação completamente independente, necessária se você tiver o Kubernetes. Enfatizamos que a implantação da infraestrutura era fácil com algumas equipes. As pessoas gostam porque você entrou em duas equipes e tudo já funciona para você.

Existem todos os tipos de plataformas online para o Selenium, se você não deseja implantar o próprio Selenium. Você pode acessar os serviços em nuvem, pois eles são muito caros, mas, no entanto, são bastante populares.

Anya : Eu tive experiência com o SauceLabs , tudo também é bastante conveniente lá. Você simplesmente indica em qual navegador executar, eles até oferecem suporte a testes móveis. E você lança. Mas eles são caros.

Teste entre navegadores e navegadores móveis


- Como, do ponto de vista da compatibilidade entre navegadores e telefones celulares, o Selenium funciona e há algum problema na infraestrutura com isso? Eu sei que algumas pessoas testam determinados navegadores em telefones celulares. Felizmente, não testei com Selenium com as mãos, não sei como é difícil configurar tudo.

Vanya : É hemorróida e bastante cara. O objetivo é testar se, se abrirmos nosso aplicativo em algum telefone, em algum Chrome móvel, tudo funcionará da mesma maneira para nós. Naturalmente, queremos, como nos navegadores de desktop, fazer isso com o código.

A idéia simples inicial é comprar telefones de modelos diferentes, colocá-los em cima da mesa. Existem ferramentas prontas, por exemplo, Appiumque implementam o padrão Selenium. Essa também é uma implementação do Selenium-extension, que permite trabalhar apenas com dispositivos móveis. Inicialmente, isso foi feito apenas para o farm de telefones e tablets reais. O problema é que apenas a experiência operacional de tais fazendas telefônicas mostra que é muito caro. Ele quebra constantemente, você precisa substituir esses telefones, as baterias incham, exige sistemas bastante especiais que carregam esses telefones, você precisa colocar atualizações lá, garantir que nada quebre lá.

Agora tudo está se movendo lentamente para lançar tudo em emuladores. Existem programas especiais - emuladores que mostram exatamente a mesma coisa que um usuário vê em seu telefone ou tablet na tela de um computador ou servidor comum. Existem emuladores para Android e iOS. O problema é que, do ponto de vista do Android, essas são máquinas virtuais; esses emuladores não podem ser executados em nenhum hardware. Se você quer emuladores Android, precisa de servidores de ferro, é caro.

Se você deseja testar em emuladores para iOS, é necessário usar o hardware da Apple, ou seja, MacMini, MacPro, MacBook ou algo semelhante, também é caro. Isso ocorre devido às restrições de licenciamento da Apple. Portanto, é possível testar em dispositivos móveis, é claro como fazer a infraestrutura. Mesmo no Docker, você pode executar o Android, mas é muito caro. Se as pessoas querem fazer isso, precisam pensar muito.

A principal tarefa de testar no celular é encontrar bugs que tocam apenas no celular. Existem diferentes maneiras de torná-lo mais barato. É possível iniciar navegadores de desktop como o Chrome, no qual o agente do usuário é pressionado, a resolução de tela desejada é pressionada. A decisão de testar emuladores reais, em telefones, deve ser tomada com base no fato de você poder detectar bugs apenas no emulador ou no telefone.
A decisão sobre o teste em emuladores reais ou em telefones deve ser tomada com base em se você pode detectar bugs apenas no emulador ou no telefone.

Concorrentes de selênio


- A propósito, existem várias ferramentas, como Puppeteer, Playwright, que permitem emular com precisão e fazer testes em vários navegadores, incluindo em navegadores móveis. Talvez por um longo tempo todos tenham se mudado ou transplantado?

Vanya : Frontenders, ninguém mais se mexeu.

Anya : Essas são coisas legais, mas têm limitações em termos de compatibilidade entre navegadores. O Cypress para Firefox parece estar sendo atualizado em breve. Você pode escrever testes muito rapidamente, tudo é conveniente, mas você é limitado apenas pelo Chromium.

Vanya : Vamos começar com o Cypress . Em 2004-2005, o Selenium trabalhou da seguinte forma.

O navegador foi iniciado, uma extensão especial foi carregada nele, na qual os comandos para automatizar o navegador foram enviados. Depois de 15 anos, apareceram caras que olharam para ele. O Selenium abandonou essa abordagem, porque nem tudo pode ser feito com a ajuda de uma extensão. Como o Javascript, não é possível executar tudo no navegador; você não pode acessar arquivos no sistema de arquivos. O Selenium mudou para uma abordagem nativa, começou a escrever binários separados, separados do navegador. 15 anos se passaram. O pessoal do JavaScript criou uma ferramenta semelhante.

Titereiro é exatamente o mesmo. O Puppeteer é o Google Chrome, Chromium, que implementa um protocolo especial para trabalhar com este painel de depuração. O Chrome possui um painel de depuração para que você possa assistir a mensagens no console, solicitações de rede etc.

- As ferramentas de desenvolvedor são muito legais, é claro.

Vanya : Sim, é conveniente para o desenvolvedor. Como se viu, essa coisa interage com o navegador usando um protocolo especial. A idéia principal é não clicar no mouse neste protocolo, mas enviar comandos da mesma maneira que no Selenium. Os caras acabaram de escrever uma biblioteca Javascript que implementa o protocolo.

Anya : Parece-me que essas ferramentas podem ser adequadas para testes de componentes, que os próprios frontenders cobririam. Conheço esses casos de aplicação, eles foram muito bem.

Vania: Em geral, essas ferramentas são boas, são normais. Eles são apenas nichos, são adequados para fornecedores de front-end, porque eles têm suas próprias tarefas, executam alguns testes rapidamente localmente, mas o problema é que eles não atendem aos requisitos que já existem.

Há vários testes, por exemplo, escritos em Java - um volume frenético, eles precisam ser executados rapidamente, precisam ser dimensionados rapidamente e assim por diante. Este problema não está resolvido.

Não estou dizendo que essas ferramentas são ruins. De fato, mesmo equipes que produzem Cypress, ou equipes que fabricam Puppeteer, dizem que é o mesmo que Selenium. Há Gleb Bakhmutovquem faz Cypress, ele foi perguntado: Cypress Selenium ou não? Ele respondeu que essa é uma ferramenta de nicho normal para desenvolvedores de front-end, e eu concordo. Parece-me que eles têm algum tipo de funcionalidade comum, resolvem algum problema comum, mas ainda têm diferentes áreas de aplicação.

- Pessoal, você tem uma vasta experiência no uso do Selenium. Se você estivesse iniciando o teste de interface do usuário agora, qual ferramenta escolheria agora? Onde é melhor começar?

Anya : Eu começaria com Selenium de qualquer maneira. Porque é um padrão.

- Java e Selenium, certo?

Anya : Bem, você não pode Java, você pode .NET, Python, mas ainda assim o Selenium para eles, porque ele viveu, vive e viverá.

O selênio viveu, vive e viverá.


Ivan : Suponha que precisamos cortar algumas tábuas e uma pessoa é carpinteira.
Primeiro, ele precisa aprender a trabalhar com algo padrão, aprender a serrar com uma serra e, em seguida, usar algum tipo de máquina-ferramenta especializada e complexa.

O selênio é uma ferramenta simples que pode ser executada por todos. Existem 100.500 milhões de pessoas que lhe dirão como serrar um tronco com uma serra. Algo de nicho, por um lado, será legal cortá-lo, mas para tarefas de uso geral, o Selenium ainda é o melhor que existe no momento.

Anya : O selênio é uma base que você precisa conhecer para poder desenvolver mais e adicionar alguns pães interessantes a ele.

- Te agradece! Espero que as informações recebidas sejam úteis para nossos leitores.

Lembramos que a conferência Heisenbug 2020 Piter será realizada on-line . Lá, você pode conversar com Vanya e Anya e aprender mais sobre Healenium, Selenoid e o uso do protocolo Chrome DevTools no cluster Kubernetes.

Para aqueles que desejam ampliar seus horizontes e participar de mais de uma conferência, mas imediatamente 8, preparamos algo .

All Articles