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

2
00:00:04,307 --> 00:00:09,895
Trong bài giảng và bài tập trước đó theo sau bài giảng,

3
00:00:09,895 --> 00:00:14,330
chúng tôi đã kiểm tra việc sử dụng các bài kiểm tra đơn vị trong Angular.

4
00:00:14,330 --> 00:00:18,920
Chúng tôi đã thấy cách các phần khác nhau của ứng dụng Angular của chúng tôi, các thành phần,

5
00:00:18,920 --> 00:00:26,420
các dịch vụ, các chỉ thị, các đường ống có thể được kiểm tra bằng cách sử dụng các bài kiểm tra đơn vị.

6
00:00:26,420 --> 00:00:27,000
Nhưng tất nhiên, các

7
00:00:27,000 --> 00:00:32,550
bài kiểm tra đơn vị không tiết lộ mọi thứ về sự tương tác giữa các thành phần.

8
00:00:32,550 --> 00:00:37,090
Đó là nơi mà các chiến lược thử nghiệm đầu cuối cho phép chúng ta

9
00:00:37,090 --> 00:00:42,480
nhìn thấy toàn bộ ứng dụng hoạt động như một đơn vị duy nhất.

10
00:00:42,480 --> 00:00:49,200
Vì vậy, trong bài giảng này, chúng tôi sẽ xem xét việc sử dụng các bài kiểm tra End--to-End và

11
00:00:49,200 --> 00:00:54,950
vai trò của chúng trong chiến lược thử nghiệm tổng thể cho các ứng dụng Angular của chúng tôi.

12
00:00:54,950 --> 00:01:01,592
Trong bài tập sau đây, chúng ta sẽ xem xét ngắn gọn về cách chúng ta có thể tiến hành

13
00:01:01,592 --> 00:01:06,160
kiểm tra đầu cuối cho ứng dụng Angular của chúng tôi, sử dụng một công cụ gọi là Protractor.

14
00:01:08,110 --> 00:01:13,710
Như chúng ta đã học được trong bài giảng trước đó, các bài kiểm tra đơn vị

15
00:01:13,710 --> 00:01:19,650
cung cấp cho chúng ta một cơ hội tuyệt vời để kiểm tra các đơn vị của chúng tôi trong sự cô lập.

16
00:01:19,650 --> 00:01:25,105
Đảm bảo rằng các đơn vị của chúng tôi thực hiện những gì họ mong đợi sẽ thực hiện,

17
00:01:25,105 --> 00:01:29,446
logic của chúng là chính xác, và tương tác giữa các thành phần và

18
00:01:29,446 --> 00:01:33,720
mẫu của nó được thiết lập tốt.

19
00:01:33,720 --> 00:01:38,230
Nhưng tất nhiên, các bài kiểm tra đơn vị không

20
00:01:38,230 --> 00:01:43,720
hoàn thành toàn bộ bức tranh về cách một ứng dụng Angular điển hình hoạt động.

21
00:01:43,720 --> 00:01:47,807
Bạn không có các đơn vị riêng lẻ làm việc trong sự cô lập.

22
00:01:47,807 --> 00:01:51,293
Thay vào đó, các thành phần của bạn tương tác với các dịch vụ.

23
00:01:51,293 --> 00:01:53,573
Các thành phần có thể sử dụng các loại.

24
00:01:53,573 --> 00:01:58,503
Các dịch vụ, lần lượt, sẽ tương tác với phụ trợ để lấy dữ liệu.

25
00:01:58,503 --> 00:02:02,300
Và sau đó bản thân thành phần sẽ chịu trách nhiệm

26
00:02:02,300 --> 00:02:06,670
hiển thị các chế độ xem bằng cách sử dụng các mẫu cho thành phần.

27
00:02:06,670 --> 00:02:13,686
Vậy làm thế nào để toàn bộ các đơn vị này làm việc cùng nhau?

28
00:02:13,686 --> 00:02:18,485
Và làm thế nào để chúng tôi đảm bảo rằng việc làm việc cùng nhau của

29
00:02:18,485 --> 00:02:22,202
các đơn vị này hoàn toàn không có vấn đề?

30
00:02:22,202 --> 00:02:26,931
Vì vậy, đó là nơi kiểm tra đầu cuối và trên đường đi,

31
00:02:26,931 --> 00:02:32,780
kiểm tra tích hợp giúp chúng tôi để bao gồm các loại kịch bản.

32
00:02:32,780 --> 00:02:39,190
Tất nhiên, các bài kiểm tra đơn vị đóng một vai trò quan trọng trong chiến lược thử nghiệm tổng thể.

33
00:02:39,190 --> 00:02:42,133
Nhưng nếu không thực hiện các bài kiểm tra đầu cuối,

34
00:02:42,133 --> 00:02:47,852
chúng tôi không thể hoàn toàn chắc chắn rằng ứng dụng của chúng tôi đang hoạt động như mong đợi.

35
00:02:47,852 --> 00:02:52,697
Một điều mà tôi phải nhấn mạnh là các bài kiểm tra đơn vị là nhanh chóng và

36
00:02:52,697 --> 00:02:56,790
rất dễ lặp lại và có thể được thực hiện nhiều lần. Kiểm

37
00:02:56,790 --> 00:03:01,861
tra tích hợp và kiểm tra đầu cuối là chậm, và vì vậy chúng

38
00:03:01,861 --> 00:03:08,390
chỉ được sử dụng ít để xác nhận rằng ứng dụng của bạn đang hoạt động như mong đợi.

39
00:03:08,390 --> 00:03:11,830
Vì vậy, khi chúng ta nhìn vào chiến lược thử nghiệm tổng

40
00:03:11,830 --> 00:03:16,070
thể của mình, chúng ta có thể nhìn vào nó như được tổ chức dưới dạng kim tự tháp.

41
00:03:16,070 --> 00:03:19,940
Ở dưới cùng của kim tự tháp, chiếm toàn bộ cơ sở và

42
00:03:19,940 --> 00:03:25,251
hình thành nền tảng của chiến lược thử nghiệm tổng thể của chúng tôi, là các bài kiểm tra đơn vị.

43
00:03:26,710 --> 00:03:31,790
Như chúng ta đã học được, các bài kiểm tra đơn vị cho phép chúng ta kiểm tra các đơn vị riêng lẻ một cách cô lập,

44
00:03:31,790 --> 00:03:35,460
đảm bảo rằng logic của chúng và

45
00:03:35,460 --> 00:03:39,970
cách các đơn vị này hoạt động là chính xác.

46
00:03:39,970 --> 00:03:42,890
Và những bài kiểm tra này có thể được lặp lại rất thường xuyên.

47
00:03:42,890 --> 00:03:48,040
Và thực sự, cần được lặp lại thường xuyên để đảm bảo rằng các đơn vị cá nhân

48
00:03:48,040 --> 00:03:49,610
đang hoạt động như mong đợi.

49
00:03:50,630 --> 00:03:57,850
Tất nhiên, ở một cấp độ thứ hai của chiến lược này sẽ là kiểm tra tích hợp.

50
00:03:57,850 --> 00:04:02,600
Làm thế nào một nhóm nhỏ các đơn vị làm việc cùng nhau trong việc

51
00:04:02,600 --> 00:04:07,680
thực hiện bất cứ điều gì cần thiết để được thực hiện bởi nhóm các đơn vị đó?

52
00:04:07,680 --> 00:04:12,460
Vì vậy, có lẽ chúng ta có thể kiểm tra một thành phần cùng với các

53
00:04:12,460 --> 00:04:17,730
dịch vụ của nó để xem dòng chảy của thông tin giữa chúng xảy ra như thế nào.

54
00:04:17,730 --> 00:04:22,880
Nhưng ở trên cùng của kim tự tháp này là các thử nghiệm cuối đến cuối nơi

55
00:04:22,880 --> 00:04:25,320
chúng ta nhìn vào ứng dụng tổng thể.

56
00:04:25,320 --> 00:04:29,880
Và ứng dụng tổng thể đang hoạt động tốt như thế nào và

57
00:04:29,880 --> 00:04:32,890
đáp ứng các yêu cầu mong đợi của nó.

58
00:04:32,890 --> 00:04:36,990
Vì vậy, đó là nơi chúng ta thấy việc sử dụng các bài kiểm tra đầu cuối.

59
00:04:36,990 --> 00:04:42,680
Như bạn có thể đã mong đợi bởi sơ đồ này, các bài kiểm tra đầu cuối là chậm.

60
00:04:42,680 --> 00:04:48,584
Và vì vậy chúng tôi không thực hiện các bài kiểm tra đầu cuối rất thường xuyên, thay vào đó,

61
00:04:48,584 --> 00:04:55,412
đơn vị kiểm tra hình thành chiến lược cốt lõi để thử nghiệm ứng dụng Angular của chúng tôi.

62
00:04:55,412 --> 00:05:02,149
Các bài kiểm tra đầu cuối đóng góp trong bức tranh tổng thể, nhưng chúng được thực hiện không

63
00:05:02,149 --> 00:05:08,021
thường xuyên, nhưng vẫn là một phần thiết yếu trong chiến lược thử nghiệm của chúng tôi.

64
00:05:08,021 --> 00:05:10,852
Vậy làm thế nào để chúng ta thực hiện các bài kiểm tra từ cuối đến cuối?

65
00:05:10,852 --> 00:05:15,210
Hãy nói ngắn gọn về các công cụ có sẵn cho chúng tôi.

66
00:05:15,210 --> 00:05:18,199
Môi trường thử nghiệm Angular cho các thử

67
00:05:18,199 --> 00:05:23,740
nghiệm đầu cuối được hỗ trợ bởi một công cụ có tên là Protractor.

68
00:05:23,740 --> 00:05:27,930
Ai nói rằng những kẻ đam mê không có cảm giác hài hước?

69
00:05:27,930 --> 00:05:30,950
Máy đo lường, góc cạnh, đây rồi.

70
00:05:30,950 --> 00:05:33,450
Vậy thước đo chính xác là gì?

71
00:05:33,450 --> 00:05:37,500
Protractor là, như bạn có thể mong đợi, một chương trình nút.

72
00:05:37,500 --> 00:05:40,940
Vì vậy, điều này cho phép chúng tôi thực hiện các bài kiểm tra đầu cuối.

73
00:05:40,940 --> 00:05:45,510
Vì vậy, Protractor chạy các bài kiểm tra đối với ứng dụng của bạn.

74
00:05:45,510 --> 00:05:49,800
Vì vậy, Protractor tải ứng dụng của bạn vào một trình duyệt và tương tác với

75
00:05:49,800 --> 00:05:54,570
các ứng dụng giống như một người dùng thực sự sẽ tương tác với ứng dụng của bạn.

76
00:05:54,570 --> 00:05:59,160
Vì vậy, chúng tôi đang xem xét tương tác với ứng dụng của bạn,

77
00:05:59,160 --> 00:06:03,410
mặc dù lập trình, nhưng thực hiện các loại hoạt động mà

78
00:06:03,410 --> 00:06:07,500
một người dùng điển hình sẽ thực hiện như nhấp vào liên kết, điền vào các biểu mẫu.

79
00:06:07,500 --> 00:06:13,110
Gửi biểu mẫu, điều hướng đến các phần khác nhau của ứng dụng của bạn và vân vân.

80
00:06:13,110 --> 00:06:18,310
Vì vậy, đây là nơi Protractor tận dụng việc sử dụng một WebDriver để kiểm soát các

81
00:06:18,310 --> 00:06:23,980
trình duyệt mà trên đó các thử nghiệm có thể được thực hiện.

82
00:06:23,980 --> 00:06:27,570
Một ứng dụng framework như vậy được gọi là Selenium Framework,

83
00:06:27,570 --> 00:06:31,720
được sử dụng để thực hiện kiểm tra tự động trong trình duyệt.

84
00:06:31,720 --> 00:06:36,021
Nếu bạn đang sử dụng Chrome như một phần của chiến lược thử nghiệm hoặc Firefox,

85
00:06:36,021 --> 00:06:39,119
thì bạn có thể sử dụng những gì được gọi là kết nối trực tiếp.

86
00:06:39,119 --> 00:06:43,502
Điều đó có sẵn thông qua một Protractor để kết nối trực tiếp với các trình duyệt này và

87
00:06:43,502 --> 00:06:45,828
thực hiện kiểm tra trong các trình duyệt đó.

88
00:06:45,828 --> 00:06:50,273
Bây giờ, các bài kiểm tra tự tận dụng khuôn khổ điều chỉnh để

89
00:06:50,273 --> 00:06:51,790
thể hiện bài kiểm tra.

90
00:06:51,790 --> 00:06:55,450
Vì vậy, bạn vẫn sẽ thấy người dùng mô tả một int và

91
00:06:55,450 --> 00:06:58,810
trước mỗi mà bạn đã nhìn thấy với các bài kiểm tra đơn vị.

92
00:06:58,810 --> 00:07:04,332
Ngoại trừ rằng bây giờ, chúng tôi sẽ được tận dụng sự hỗ trợ thước đo

93
00:07:04,332 --> 00:07:09,119
để có thể tạo ra tương tác giống như người dùng thực sự với

94
00:07:09,119 --> 00:07:11,157
ứng dụng của chúng tôi bằng cách sử dụng mã.

95
00:07:11,157 --> 00:07:15,363
Vì vậy, đó là những gì chúng ta sẽ học trong bài tập mà sau bài

96
00:07:15,363 --> 00:07:15,979
giảng đặc biệt này.

97
00:07:15,979 --> 00:07:21,324
Chúng tôi sẽ sử dụng Protractor và viết các chiến lược thử nghiệm đầu cuối của chúng tôi.

98
00:07:21,324 --> 00:07:24,815
Và tất nhiên, tận dụng hỗ trợ Angular CLI để

99
00:07:24,815 --> 00:07:29,983
thực hiện các bài kiểm tra đầu cuối trong bài tập sau bài giảng này.

100
00:07:29,983 --> 00:07:32,969
[ NHẠC]