Transferidor - Introdução
Este capítulo fornece uma introdução ao Protractor, onde você aprenderá sobre a origem desta estrutura de teste e por que você deve escolhê-la, o funcionamento e as limitações desta ferramenta.
O que é transferidor?
Protractor é uma estrutura de teste ponta a ponta de código aberto para aplicativos Angular e AngularJS. Ele foi construído pelo Google no topo do WebDriver. Ele também serve como um substituto para a estrutura de teste AngularJS E2E existente, chamada “Angular Scenario Runner”.
Ele também funciona como um integrador de solução que combina tecnologias poderosas como NodeJS, Selenium, Jasmine, WebDriver, Cucumber, Mocha etc. Junto com o teste de aplicativo AngularJS, ele também escreve testes de regressão automatizados para aplicativos web normais. Isso nos permite testar nosso aplicativo como um usuário real, porque executa o teste usando um navegador real.
O diagrama a seguir dará uma breve visão geral do Transferidor -
Observe que no diagrama acima, temos -
Protractor - Conforme discutido anteriormente, é um wrapper sobre WebDriver JS especialmente projetado para aplicativos angulares.
Jasmine- É basicamente uma estrutura de desenvolvimento orientada por comportamento para testar o código JavaScript. Podemos escrever os testes facilmente com Jasmine.
WebDriver JS - É uma implementação de vínculos Node JS para selenium 2.0 / WebDriver.
Selenium - Simplesmente automatiza o navegador.
Origem
Como dito anteriormente, o Protractor é um substituto para a estrutura de teste AngularJS E2E existente chamada “Angular Scenario Runner”. Basicamente, a origem do Transferidor começa com o final do Scenario Runner. Uma questão que surge aqui é por que precisamos construir o Protractor? Para entender isso, primeiro precisamos verificar seu antecessor - Scenario Runner.
Início do Transferidor
Julie Ralph, a principal contribuidora para o desenvolvimento do Protractor, teve a seguinte experiência com o Angular Scenario Runner em outro projeto do Google. Isso se tornou ainda mais a motivação para construir o Transferidor, especialmente para preencher as lacunas -
“Tentamos usar o Scenario Runner e descobrimos que ele realmente não conseguia fazer as coisas que precisávamos testar. Precisávamos testar coisas como fazer login. Sua página de login não é uma página Angular, e o Scenario Runner não conseguiu lidar com isso. E não conseguia lidar com coisas como pop-ups e várias janelas, navegar no histórico do navegador e coisas assim. ”
A maior vantagem para o Transferidor foi a maturidade do projeto Selenium e ele envolve seus métodos para que possa ser facilmente usado para projetos angulares. O design do Protractor é construído de tal forma que testa todas as camadas, como IU da web, serviços de back-end, camada de persistência e assim por diante de um aplicativo.
Por que transferidor?
Como sabemos, quase todos os aplicativos estão usando JavaScript para desenvolvimento. A tarefa dos testadores se torna difícil quando o JavaScript aumenta de tamanho e se torna complexo para os aplicativos devido ao número crescente dos próprios aplicativos. Na maioria das vezes torna-se muito difícil capturar os elementos da web em aplicativos AngularJS, usa sintaxe HTML estendida para expressar componentes de aplicativos da web, usando JUnit ou Selenium WebDriver.
A questão aqui é por que o Selenium Web Driver não consegue encontrar os elementos da web AngularJS? A razão é porque os aplicativos AngularJS têm alguns atributos HTML estendidos, como ng-repetidor, ng-controlador e ng-model, etc., que não estão incluídos nos localizadores Selenium.
Aqui, a importância do Protractor passa a existir porque o Protractor na parte superior do Selenium pode manipular e controlar esses elementos HTML estendidos em aplicativos da web AngularJS. É por isso que podemos dizer que a maioria dos frameworks se concentra na realização de testes de unidade para aplicativos AngularJS, o Protractor usado para fazer testes da funcionalidade real de um aplicativo.
Trabalho do transferidor
Protractor, a estrutura de teste, funciona em conjunto com o Selenium para fornecer uma infraestrutura de teste automatizada para simular a interação de um usuário com um aplicativo AngularJS que está sendo executado em um navegador ou dispositivo móvel.
O funcionamento do Transferidor pode ser compreendido com a ajuda das seguintes etapas -
Step 1- Na primeira etapa, precisamos escrever os testes. Isso pode ser feito com a ajuda de Jasmim ou Mocha ou Pepino.
Step 2- Agora, precisamos executar o teste que pode ser feito com a ajuda do Transferidor. Também é chamado de executor de teste.
Step 3 - Nesta etapa, o servidor Selenium ajudará a gerenciar os navegadores.
Step 4 - Por fim, as APIs do navegador são chamadas com a ajuda do Selenium WebDriver.
Vantagens
Esta estrutura de teste ponta a ponta de código aberto oferece as seguintes vantagens -
Uma ferramenta de código aberto, o Protractor é muito fácil de instalar e configurar.
Funciona bem com a estrutura Jasmine para criar o teste.
Suporta desenvolvimento dirigido por teste (TDD).
Contém esperas automáticas, o que significa que não precisamos adicionar esperas e suspensões explicitamente ao nosso teste.
Oferece todas as vantagens do Selenium WebDriver.
Suporta testes paralelos em vários navegadores.
Oferece o benefício de sincronização automática.
Possui excelente velocidade de teste.
Limitações
Esta estrutura de teste ponta a ponta de código aberto possui as seguintes limitações -
Não descobre quaisquer verticais na automação do navegador porque é um wrapper para WebDriver JS.
O conhecimento de JavaScript é essencial para o usuário, pois está disponível apenas para JavaScript.
Fornece apenas teste de front-end porque é uma ferramenta de teste orientada para IU