1
00:00:00,000 --> 00:00:04,307
[MUSICA]

2
00:00:04,307 --> 00:00:09,895
Nella lezione precedente ed esercizio che ha seguito la lezione,

3
00:00:09,895 --> 00:00:14,330
abbiamo esaminato l'uso di test unitari in Angular.

4
00:00:14,330 --> 00:00:18,920
Abbiamo visto come le diverse parti della nostra applicazione angolare, i componenti,

5
00:00:18,920 --> 00:00:26,420
i servizi, le direttive, i tubi possono essere testati utilizzando test unitari.

6
00:00:26,420 --> 00:00:27,000
Ma naturalmente,

7
00:00:27,000 --> 00:00:32,550
i test unitari non rivelano tutto sull'interazione tra i componenti.

8
00:00:32,550 --> 00:00:37,090
Ecco dove le strategie di test end-to-end ci permettono di

9
00:00:37,090 --> 00:00:42,480
vedere l'intera applicazione funzionare come una singola unità.

10
00:00:42,480 --> 00:00:49,200
Quindi, in questa lezione, esamineremo l'uso di test end-to-end e

11
00:00:49,200 --> 00:00:54,950
quale ruolo svolgono nella strategia complessiva di test per le nostre applicazioni angolari.

12
00:00:54,950 --> 00:01:01,592
Nell' esercizio che segue, esamineremo brevemente come possiamo condurre

13
00:01:01,592 --> 00:01:06,160
test end-to-end per la nostra applicazione Angular, utilizzando uno strumento chiamato Goniometro.

14
00:01:08,110 --> 00:01:13,710
Come abbiamo già imparato nella lezione precedente, i test unitari

15
00:01:13,710 --> 00:01:19,650
ci offrono una meravigliosa opportunità per testare le nostre unità in isolamento.

16
00:01:19,650 --> 00:01:25,105
Assicurandosi che le nostre unità eseguano ciò che dovrebbero eseguire,

17
00:01:25,105 --> 00:01:29,446
la loro logica sia corretta e che l'interazione tra il componente e il

18
00:01:29,446 --> 00:01:33,720
suo modello sia ben consolidata.

19
00:01:33,720 --> 00:01:38,230
Ma, naturalmente, i test unitari non

20
00:01:38,230 --> 00:01:43,720
completano l'intero quadro di come funziona una tipica applicazione Angular.

21
00:01:43,720 --> 00:01:47,807
Non si dispone di singole unità che lavorano in isolamento.

22
00:01:47,807 --> 00:01:51,293
Invece, i componenti interagiscono con i servizi.

23
00:01:51,293 --> 00:01:53,573
I componenti possono fare uso di tipi.

24
00:01:53,573 --> 00:01:58,503
I servizi, a loro volta, interagiranno con il backend per recuperare i dati.

25
00:01:58,503 --> 00:02:02,300
E poi il componente stesso sarà responsabile

26
00:02:02,300 --> 00:02:06,670
del rendering delle viste utilizzando i modelli per il componente.

27
00:02:06,670 --> 00:02:13,686
Allora, come fa questo insieme di unita' a lavorare insieme?

28
00:02:13,686 --> 00:02:18,485
E come facciamo a garantire che la collaborazione di queste

29
00:02:18,485 --> 00:02:22,202
unità sia completamente priva di problemi?

30
00:02:22,202 --> 00:02:26,931
Ecco dove test end-to-end e lungo la strada,

31
00:02:26,931 --> 00:02:32,780
test di integrazione ci aiuta a coprire questo tipo di scenari.

32
00:02:32,780 --> 00:02:39,190
Naturalmente, i test unitari svolgono un ruolo importante nella strategia globale di test.

33
00:02:39,190 --> 00:02:42,133
Ma senza eseguire test end-to-end,

34
00:02:42,133 --> 00:02:47,852
non possiamo essere completamente sicuri che la nostra applicazione stia funzionando come previsto.

35
00:02:47,852 --> 00:02:52,697
Una cosa che devo sottolineare è che i test unitari sono veloci e

36
00:02:52,697 --> 00:02:56,790
molto facili da ripetere e possono essere eseguiti più volte.

37
00:02:56,790 --> 00:03:01,861
I test di integrazione e i test end-to-end sono lenti e quindi vengono utilizzati

38
00:03:01,861 --> 00:03:08,390
solo con parsimonia per confermare che l'applicazione sta funzionando come previsto.

39
00:03:08,390 --> 00:03:11,830
Quindi, quando guardiamo alla nostra strategia globale di test,

40
00:03:11,830 --> 00:03:16,070
possiamo considerarla organizzata sotto forma di piramide.

41
00:03:16,070 --> 00:03:19,940
Nella parte inferiore della piramide, occupando l'intera base e

42
00:03:19,940 --> 00:03:25,251
formando le fondamenta della nostra strategia globale di test, ci sono test unitari.

43
00:03:26,710 --> 00:03:31,790
Come abbiamo appreso, i test unitari ci permettono di testare le singole unità in isolamento,

44
00:03:31,790 --> 00:03:35,460
assicurandoci che la loro logica e

45
00:03:35,460 --> 00:03:39,970
il modo in cui queste unità funzionano siano corrette.

46
00:03:39,970 --> 00:03:42,890
E questi test possono essere ripetuti molto frequentemente.

47
00:03:42,890 --> 00:03:48,040
E in effetti, dovrebbe essere ripetuto frequentemente per garantire che le singole unità

48
00:03:48,040 --> 00:03:49,610
stanno funzionando come previsto.

49
00:03:50,630 --> 00:03:57,850
Naturalmente, ad un secondo livello di questa strategia sarebbero test di integrazione. In che

50
00:03:57,850 --> 00:04:02,600
modo un piccolo gruppo di unità lavora insieme nell'

51
00:04:02,600 --> 00:04:07,680
attuazione di tutto ciò che è necessario fare da tale gruppo di unità?

52
00:04:07,680 --> 00:04:12,460
Quindi forse potremmo testare un componente insieme ai

53
00:04:12,460 --> 00:04:17,730
suoi servizi per vedere come avviene il flusso di informazioni tra di loro.

54
00:04:17,730 --> 00:04:22,880
Ma in cima a questa piramide è end to end test in cui

55
00:04:22,880 --> 00:04:25,320
guardiamo l'applicazione complessiva.

56
00:04:25,320 --> 00:04:29,880
E quanto bene l'applicazione complessiva sta prestando e

57
00:04:29,880 --> 00:04:32,890
soddisfacendo i requisiti previsti.

58
00:04:32,890 --> 00:04:36,990
Ecco dove vediamo l'uso di test end-to-end.

59
00:04:36,990 --> 00:04:42,680
Come ci si potrebbe già aspettare da questo diagramma, i test end-to-end sono lenti.

60
00:04:42,680 --> 00:04:48,584
E quindi non eseguiamo test end-to-end molto frequentemente, invece, il

61
00:04:48,584 --> 00:04:55,412
test unitario costituisce la strategia principale per il nostro test della nostra applicazione angolare.

62
00:04:55,412 --> 00:05:02,149
I test end-to-end contribuiscono al quadro generale, ma non vengono eseguiti così

63
00:05:02,149 --> 00:05:08,021
frequentemente, ma sono ancora una parte essenziale della nostra strategia di test.

64
00:05:08,021 --> 00:05:10,852
Quindi, come eseguiamo test end-to-end?

65
00:05:10,852 --> 00:05:15,210
Parliamo brevemente degli strumenti che sono disponibili per noi.

66
00:05:15,210 --> 00:05:18,199
L' ambiente di test angolare per i

67
00:05:18,199 --> 00:05:23,740
test end-to-end è supportato da uno strumento denominato Goniometro.

68
00:05:23,740 --> 00:05:27,930
Chi dice che i geek non hanno il senso dell'umorismo?

69
00:05:27,930 --> 00:05:30,950
Goniometro, Angular, ecco a te.

70
00:05:30,950 --> 00:05:33,450
Quindi che cosa è esattamente Goniometro?

71
00:05:33,450 --> 00:05:37,500
Goniometro è, come ci si potrebbe aspettare, un programma nodo.

72
00:05:37,500 --> 00:05:40,940
Questo ci permette quindi di effettuare test end-to-end.

73
00:05:40,940 --> 00:05:45,510
Quindi Goniometro esegue i test contro la tua applicazione.

74
00:05:45,510 --> 00:05:49,800
Quindi Goniometro carica la tua applicazione in un browser e interagisce con

75
00:05:49,800 --> 00:05:54,570
l'applicazione proprio come un utente reale interagirà con la tua applicazione.

76
00:05:54,570 --> 00:05:59,160
Quindi stiamo cercando di interagire con la tua applicazione,

77
00:05:59,160 --> 00:06:03,410
anche se a livello di programmazione, ma eseguendo il tipo di operazioni che

78
00:06:03,410 --> 00:06:07,500
un utente tipico eseguirà come fare clic sui link, compilare moduli.

79
00:06:07,500 --> 00:06:13,110
Invio di moduli, navigazione in diverse parti della tua candidatura e così via.

80
00:06:13,110 --> 00:06:18,310
Quindi questo è dove Goniometro sfrutta l'uso di un WebDriver per controllare

81
00:06:18,310 --> 00:06:23,980
i browser su cui è possibile eseguire il test.

82
00:06:23,980 --> 00:06:27,570
Uno di questi framework di app è chiamato come Selenium Framework,

83
00:06:27,570 --> 00:06:31,720
che viene utilizzato per eseguire test automatici all'interno dei browser.

84
00:06:31,720 --> 00:06:36,021
Se utilizzi Chrome come parte della tua strategia di test o Firefox,

85
00:06:36,021 --> 00:06:39,119
puoi usare quella che viene chiamata connessione diretta.

86
00:06:39,119 --> 00:06:43,502
Questo è disponibile tramite un goniometro per connettersi direttamente a questi browser ed

87
00:06:43,502 --> 00:06:45,828
eseguire test all'interno di tali browser.

88
00:06:45,828 --> 00:06:50,273
Ora, i test stessi sfruttano il quadro di regolazione per

89
00:06:50,273 --> 00:06:51,790
esprimere il test.

90
00:06:51,790 --> 00:06:55,450
Quindi vedresti ancora che l'utente descriva un int e

91
00:06:55,450 --> 00:06:58,810
prima di ognuno che hai visto con i test unitari.

92
00:06:58,810 --> 00:07:04,332
Tranne che ora, stiamo per sfruttare il supporto del goniometro per

93
00:07:04,332 --> 00:07:09,119
essere in grado di generare reali interazioni simili all'utente con la nostra

94
00:07:09,119 --> 00:07:11,157
applicazione usando il codice.

95
00:07:11,157 --> 00:07:15,363
Quindi questo è ciò che impareremo nell'esercizio che segue questa particolare

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

97
00:07:15,979 --> 00:07:21,324
Faremo uso di Goniometro e scriveremo le nostre strategie di test end-to-end.

98
00:07:21,324 --> 00:07:24,815
E, naturalmente, sfruttare il supporto Angular CLI per

99
00:07:24,815 --> 00:07:29,983
eseguire test end-to-end nell'esercizio che segue questa lezione.

100
00:07:29,983 --> 00:07:32,969
[ MUSIC]