[MÚSICA]
Na palestra anterior e exercício que se seguiu à palestra,
examinamos o uso de testes unitários em Angular.
Vimos como as diferentes partes da nossa aplicação Angular, os componentes,
os serviços, as diretivas, os tubos podem ser testados usando testes unitários.
Mas é claro, os testes de unidade
não revelam tudo sobre a interação entre os componentes.
É aí que as estratégias de teste de ponta a ponta nos permitem
ver todo o aplicativo funcionando como uma única unidade.
Então, nesta palestra, vamos examinar o uso de testes de ponta a ponta e
que papel eles desempenham na estratégia geral de testes para nossas aplicações angulares.
No exercício a seguir, analisaremos brevemente como podemos realizar testes
de ponta a ponta para nossa aplicação Angular, usando uma ferramenta chamada Transferidor.
Como já aprendemos na palestra anterior, os testes unitários
nos oferecem uma oportunidade maravilhosa para testar nossas unidades isoladamente.
Certificando-se de que nossas unidades executam o que se espera que executem,
sua lógica está correta e a interação entre o componente e
seu modelo está bem estabelecida.
Mas é claro, os testes unitários não
completam toda a imagem de como um aplicativo Angular típico funciona.
Você não tem unidades individuais trabalhando isoladamente.
Em vez disso, seus componentes interagem com os serviços.
Os componentes podem fazer uso de tipos.
Os serviços, por sua vez, interagirão com o back-end para buscar os dados.
E então o próprio componente será responsável por
renderizar as visualizações usando os modelos para o componente.
Então, como todo esse conjunto de unidades funciona em conjunto?
E como garantimos que o trabalho conjunto dessas unidades
esteja completamente livre de problemas?
Então é aí que testes de ponta a ponta e ao longo do caminho,
testes de integração nos ajuda a cobrir esses tipos de cenários.
É claro que os testes unitários desempenham um papel importante na estratégia geral de testes.
Mas sem fazer testes de ponta a ponta,
não podemos ter certeza de que nosso aplicativo está funcionando como esperado.
Uma coisa que devo enfatizar é que os testes unitários são rápidos e
muito fáceis de repetir e podem ser feitos várias vezes.
Os testes de integração e o teste de ponta a ponta são lentos e, portanto, eles são usados
apenas com moderação para confirmar que seu aplicativo está funcionando conforme o esperado.
Então, quando olhamos para a nossa estratégia geral de testes,
podemos olhar para ela como sendo organizada na forma de uma pirâmide.
Na parte inferior da pirâmide, ocupando toda a base e
formando a base de nossa estratégia geral de testes, estão testes unitários.
Como aprendemos, testes unitários nos permitem testar as unidades individuais isoladamente,
certificando-se de que sua lógica e
a maneira como essas unidades funcionam está correta.
E esses testes podem ser repetidos com muita frequência.
E, de fato, deve ser repetido frequentemente para garantir que as unidades individuais
estão funcionando como esperado.
Claro, em um segundo nível desta estratégia seriam testes de integração.
Como um pequeno grupo de unidades trabalha em conjunto em
implementando o que é necessário para ser feito por esse grupo de unidades?
Então talvez possamos testar um componente junto com
seus serviços para ver como o fluxo de informações entre eles acontece.
Mas no topo desta pirâmide é testes de ponta a ponta onde
olhamos para a aplicação geral.
E o desempenho do aplicativo geral e
atendendo aos requisitos esperados.
Então é aí que vemos o uso de testes de ponta a ponta.
Como você já pode esperar por este diagrama, os testes de ponta a ponta são lentos.
E assim não realizamos testes de ponta a ponta com muita frequência, em vez disso,
unit test formam a estratégia principal para o nosso teste de nossa aplicação Angular.
Os testes de ponta a ponta contribuem no quadro geral, mas eles não são feitos tão
com frequência, mas ainda são uma parte essencial da nossa estratégia de testes.
Então, como realizamos testes de ponta a ponta?
Vamos falar brevemente sobre as ferramentas que estão disponíveis para nós.
O ambiente de teste angular para
testes de ponta a ponta é suportado por uma ferramenta chamada Transferidor.
Quem disse que nerds não têm senso de humor?
Transferidor, Angular, lá vai você.
Então, o que é exatamente o Transferidor?
Transferidor é, como você poderia esperar, um programa de nó.
Assim, isso nos permite realizar testes de ponta a ponta.
Então, o Protractor executa os testes contra a sua aplicação.
Então o Protractor carrega seu aplicativo em um navegador e interage com
o aplicativo assim como um usuário real irá interagir com seu aplicativo.
Então, estamos olhando para interagir com seu aplicativo,
embora programaticamente, mas executar o tipo de operações que
um usuário típico executará como clicar em links, preencher formulários.
Enviando formulários, navegando para diferentes partes do seu aplicativo e assim por diante.
Então é aqui que o Protractor aproveita o uso de um WebDriver para controlar os navegadores
nos quais o teste pode ser realizado.
Um desses framework de aplicativo é chamado como o Selenium Framework,
que é usado para fazer testes automatizados dentro de navegadores.
Se você estiver usando o Chrome como parte de sua estratégia de teste ou Firefox,
então você pode usar o que é chamado de conexão direta.
Isso está disponível através de um Transtractor para se conectar diretamente a esses navegadores e
realizar testes dentro desses navegadores.
Agora, os próprios testes aproveitam a estrutura de ajuste para
expressando o teste.
Assim, você ainda veria o usuário descrever um int e
antes de cada um que você viu com testes de unidade.
Exceto que agora, vamos aproveitar o suporte do transferidor para
ser capaz de gerar interações reais semelhantes ao usuário com nosso aplicativo
usando código.
Então é isso que vamos aprender no exercício que segue esta aula
particular.
Faremos uso do Transtractor e escreveremos nossas estratégias de teste de ponta a ponta.
E, claro, aproveite o suporte Angular CLI para
realizando testes de ponta a ponta no exercício que se segue a esta palestra.
[MÚSICA]