1
00:00:00,000 --> 00:00:04,307
[MÚSICA]

2
00:00:04,307 --> 00:00:09,895
Na palestra anterior e exercício que se seguiu à palestra,

3
00:00:09,895 --> 00:00:14,330
examinamos o uso de testes unitários em Angular.

4
00:00:14,330 --> 00:00:18,920
Vimos como as diferentes partes da nossa aplicação Angular, os componentes,

5
00:00:18,920 --> 00:00:26,420
os serviços, as diretivas, os tubos podem ser testados usando testes unitários.

6
00:00:26,420 --> 00:00:27,000
Mas é claro, os testes de unidade

7
00:00:27,000 --> 00:00:32,550
não revelam tudo sobre a interação entre os componentes.

8
00:00:32,550 --> 00:00:37,090
É aí que as estratégias de teste de ponta a ponta nos permitem

9
00:00:37,090 --> 00:00:42,480
ver todo o aplicativo funcionando como uma única unidade.

10
00:00:42,480 --> 00:00:49,200
Então, nesta palestra, vamos examinar o uso de testes de ponta a ponta e

11
00:00:49,200 --> 00:00:54,950
que papel eles desempenham na estratégia geral de testes para nossas aplicações angulares.

12
00:00:54,950 --> 00:01:01,592
No exercício a seguir, analisaremos brevemente como podemos realizar testes

13
00:01:01,592 --> 00:01:06,160
de ponta a ponta para nossa aplicação Angular, usando uma ferramenta chamada Transferidor.

14
00:01:08,110 --> 00:01:13,710
Como já aprendemos na palestra anterior, os testes unitários

15
00:01:13,710 --> 00:01:19,650
nos oferecem uma oportunidade maravilhosa para testar nossas unidades isoladamente.

16
00:01:19,650 --> 00:01:25,105
Certificando-se de que nossas unidades executam o que se espera que executem,

17
00:01:25,105 --> 00:01:29,446
sua lógica está correta e a interação entre o componente e

18
00:01:29,446 --> 00:01:33,720
seu modelo está bem estabelecida.

19
00:01:33,720 --> 00:01:38,230
Mas é claro, os testes unitários não

20
00:01:38,230 --> 00:01:43,720
completam toda a imagem de como um aplicativo Angular típico funciona.

21
00:01:43,720 --> 00:01:47,807
Você não tem unidades individuais trabalhando isoladamente.

22
00:01:47,807 --> 00:01:51,293
Em vez disso, seus componentes interagem com os serviços.

23
00:01:51,293 --> 00:01:53,573
Os componentes podem fazer uso de tipos.

24
00:01:53,573 --> 00:01:58,503
Os serviços, por sua vez, interagirão com o back-end para buscar os dados.

25
00:01:58,503 --> 00:02:02,300
E então o próprio componente será responsável por

26
00:02:02,300 --> 00:02:06,670
renderizar as visualizações usando os modelos para o componente.

27
00:02:06,670 --> 00:02:13,686
Então, como todo esse conjunto de unidades funciona em conjunto?

28
00:02:13,686 --> 00:02:18,485
E como garantimos que o trabalho conjunto dessas unidades

29
00:02:18,485 --> 00:02:22,202
esteja completamente livre de problemas?

30
00:02:22,202 --> 00:02:26,931
Então é aí que testes de ponta a ponta e ao longo do caminho,

31
00:02:26,931 --> 00:02:32,780
testes de integração nos ajuda a cobrir esses tipos de cenários.

32
00:02:32,780 --> 00:02:39,190
É claro que os testes unitários desempenham um papel importante na estratégia geral de testes.

33
00:02:39,190 --> 00:02:42,133
Mas sem fazer testes de ponta a ponta,

34
00:02:42,133 --> 00:02:47,852
não podemos ter certeza de que nosso aplicativo está funcionando como esperado.

35
00:02:47,852 --> 00:02:52,697
Uma coisa que devo enfatizar é que os testes unitários são rápidos e

36
00:02:52,697 --> 00:02:56,790
muito fáceis de repetir e podem ser feitos várias vezes.

37
00:02:56,790 --> 00:03:01,861
Os testes de integração e o teste de ponta a ponta são lentos e, portanto, eles são usados

38
00:03:01,861 --> 00:03:08,390
apenas com moderação para confirmar que seu aplicativo está funcionando conforme o esperado.

39
00:03:08,390 --> 00:03:11,830
Então, quando olhamos para a nossa estratégia geral de testes,

40
00:03:11,830 --> 00:03:16,070
podemos olhar para ela como sendo organizada na forma de uma pirâmide.

41
00:03:16,070 --> 00:03:19,940
Na parte inferior da pirâmide, ocupando toda a base e

42
00:03:19,940 --> 00:03:25,251
formando a base de nossa estratégia geral de testes, estão testes unitários.

43
00:03:26,710 --> 00:03:31,790
Como aprendemos, testes unitários nos permitem testar as unidades individuais isoladamente,

44
00:03:31,790 --> 00:03:35,460
certificando-se de que sua lógica e

45
00:03:35,460 --> 00:03:39,970
a maneira como essas unidades funcionam está correta.

46
00:03:39,970 --> 00:03:42,890
E esses testes podem ser repetidos com muita frequência.

47
00:03:42,890 --> 00:03:48,040
E, de fato, deve ser repetido frequentemente para garantir que as unidades individuais

48
00:03:48,040 --> 00:03:49,610
estão funcionando como esperado.

49
00:03:50,630 --> 00:03:57,850
Claro, em um segundo nível desta estratégia seriam testes de integração.

50
00:03:57,850 --> 00:04:02,600
Como um pequeno grupo de unidades trabalha em conjunto em

51
00:04:02,600 --> 00:04:07,680
implementando o que é necessário para ser feito por esse grupo de unidades?

52
00:04:07,680 --> 00:04:12,460
Então talvez possamos testar um componente junto com

53
00:04:12,460 --> 00:04:17,730
seus serviços para ver como o fluxo de informações entre eles acontece.

54
00:04:17,730 --> 00:04:22,880
Mas no topo desta pirâmide é testes de ponta a ponta onde

55
00:04:22,880 --> 00:04:25,320
olhamos para a aplicação geral.

56
00:04:25,320 --> 00:04:29,880
E o desempenho do aplicativo geral e

57
00:04:29,880 --> 00:04:32,890
atendendo aos requisitos esperados.

58
00:04:32,890 --> 00:04:36,990
Então é aí que vemos o uso de testes de ponta a ponta.

59
00:04:36,990 --> 00:04:42,680
Como você já pode esperar por este diagrama, os testes de ponta a ponta são lentos.

60
00:04:42,680 --> 00:04:48,584
E assim não realizamos testes de ponta a ponta com muita frequência, em vez disso,

61
00:04:48,584 --> 00:04:55,412
unit test formam a estratégia principal para o nosso teste de nossa aplicação Angular.

62
00:04:55,412 --> 00:05:02,149
Os testes de ponta a ponta contribuem no quadro geral, mas eles não são feitos tão

63
00:05:02,149 --> 00:05:08,021
com frequência, mas ainda são uma parte essencial da nossa estratégia de testes.

64
00:05:08,021 --> 00:05:10,852
Então, como realizamos testes de ponta a ponta?

65
00:05:10,852 --> 00:05:15,210
Vamos falar brevemente sobre as ferramentas que estão disponíveis para nós.

66
00:05:15,210 --> 00:05:18,199
O ambiente de teste angular para

67
00:05:18,199 --> 00:05:23,740
testes de ponta a ponta é suportado por uma ferramenta chamada Transferidor.

68
00:05:23,740 --> 00:05:27,930
Quem disse que nerds não têm senso de humor?

69
00:05:27,930 --> 00:05:30,950
Transferidor, Angular, lá vai você.

70
00:05:30,950 --> 00:05:33,450
Então, o que é exatamente o Transferidor?

71
00:05:33,450 --> 00:05:37,500
Transferidor é, como você poderia esperar, um programa de nó.

72
00:05:37,500 --> 00:05:40,940
Assim, isso nos permite realizar testes de ponta a ponta.

73
00:05:40,940 --> 00:05:45,510
Então, o Protractor executa os testes contra a sua aplicação.

74
00:05:45,510 --> 00:05:49,800
Então o Protractor carrega seu aplicativo em um navegador e interage com

75
00:05:49,800 --> 00:05:54,570
o aplicativo assim como um usuário real irá interagir com seu aplicativo.

76
00:05:54,570 --> 00:05:59,160
Então, estamos olhando para interagir com seu aplicativo,

77
00:05:59,160 --> 00:06:03,410
embora programaticamente, mas executar o tipo de operações que

78
00:06:03,410 --> 00:06:07,500
um usuário típico executará como clicar em links, preencher formulários.

79
00:06:07,500 --> 00:06:13,110
Enviando formulários, navegando para diferentes partes do seu aplicativo e assim por diante.

80
00:06:13,110 --> 00:06:18,310
Então é aqui que o Protractor aproveita o uso de um WebDriver para controlar os navegadores

81
00:06:18,310 --> 00:06:23,980
nos quais o teste pode ser realizado.

82
00:06:23,980 --> 00:06:27,570
Um desses framework de aplicativo é chamado como o Selenium Framework,

83
00:06:27,570 --> 00:06:31,720
que é usado para fazer testes automatizados dentro de navegadores.

84
00:06:31,720 --> 00:06:36,021
Se você estiver usando o Chrome como parte de sua estratégia de teste ou Firefox,

85
00:06:36,021 --> 00:06:39,119
então você pode usar o que é chamado de conexão direta.

86
00:06:39,119 --> 00:06:43,502
Isso está disponível através de um Transtractor para se conectar diretamente a esses navegadores e

87
00:06:43,502 --> 00:06:45,828
realizar testes dentro desses navegadores.

88
00:06:45,828 --> 00:06:50,273
Agora, os próprios testes aproveitam a estrutura de ajuste para

89
00:06:50,273 --> 00:06:51,790
expressando o teste.

90
00:06:51,790 --> 00:06:55,450
Assim, você ainda veria o usuário descrever um int e

91
00:06:55,450 --> 00:06:58,810
antes de cada um que você viu com testes de unidade.

92
00:06:58,810 --> 00:07:04,332
Exceto que agora, vamos aproveitar o suporte do transferidor para

93
00:07:04,332 --> 00:07:09,119
ser capaz de gerar interações reais semelhantes ao usuário com nosso aplicativo

94
00:07:09,119 --> 00:07:11,157
usando código.

95
00:07:11,157 --> 00:07:15,363
Então é isso que vamos aprender no exercício que segue esta aula

96
00:07:15,363 --> 00:07:15,979
particular.

97
00:07:15,979 --> 00:07:21,324
Faremos uso do Transtractor e escreveremos nossas estratégias de teste de ponta a ponta.

98
00:07:21,324 --> 00:07:24,815
E, claro, aproveite o suporte Angular CLI para

99
00:07:24,815 --> 00:07:29,983
realizando testes de ponta a ponta no exercício que se segue a esta palestra.

100
00:07:29,983 --> 00:07:32,969
[MÚSICA]