Chào mừng trở lại.
Hãy làm một bài tập nhỏ thú vị bằng cách xem lại một đoạn mã mà chúng ta đã viết trước đây.
Hãy nhớ trò chơi đoán số ngẫu nhiên mà chúng ta phải đoán một số từ một đến mười?
Nếu tôi chạy tệp này, bạn thấy không?
Nó yêu cầu tôi đoán.
Vì vậy, hãy nói một, hai, ba, bốn, năm, sáu, bảy, tám, chín.
Và cuối cùng tôi cũng nhận được số.
Bạn là một thiên tài.
Con số là chín.
Vì vậy, làm thế nào chúng ta có thể kiểm tra mã này?
Bây giờ, một điều bạn sẽ nhận thấy ở đây là chúng tôi không thực sự có một chức năng.
Và hãy nhớ khi tôi đã nói với bạn về lập trình hàm và cách tốt khi chia mã của chúng
ta thành các bit nhỏ của các hàm thực hiện một việc và một việc thực sự tốt, đặc biệt là các hàm thuần túy.
Chà, một trong những lợi ích lớn với tâm lý đó là bạn tạo ra mã thực sự, rất dễ
kiểm tra.
Thay vì có logic thực sự phức tạp trong các bài kiểm tra của mình, chúng ta có thể chỉ cần cung cấp cho các hàm của mình một đầu
vào và mong đợi một đầu ra.
Và đây là lý do tại sao chúng tôi có bài kiểm tra đơn vị.
Và ý tưởng của bài kiểm tra đơn vị là chúng tôi đang kiểm tra từng phần của đơn vị.
Các bài kiểm tra đơn vị này là các phần nhỏ thử nghiệm các chức năng đơn giản này.
Vì vậy, thách thức của tôi đối với bạn là sử dụng mã này và cố gắng chia nó thành các hàm đơn giản.
Hiện nay.
Trong trường hợp của chúng tôi, tôi muốn chúng tôi chỉ kiểm tra phần này của mã, đây là phần đoán, nơi chúng tôi nhận được
đầu vào.
Đó sẽ là dự đoán và sau đó kiểm tra nó với một số câu trả lời ngẫu nhiên mà chúng ta có và chúng ta nên mong đợi một
số loại đầu ra.
Vì vậy, chúng tôi nhập một số.
Phải từ 1 đến 10.
Và nếu chúng ta làm đúng, chúng ta phải lấy chuỗi.
Nhưng mấu chốt ở đây là chúng ta có thể muốn chuyển nó thành một hàm mà chúng ta có thể kiểm tra.
Chúng ta có thể bỏ qua thế giới bên ngoài.
Và chia nó thành một chức năng nhỏ của riêng nó.
Vì vậy, hãy tạm dừng video ở đây và thử xem.
Bạn sẽ phải vượt qua một số vấp váp, nhưng nó sẽ thực sự kiểm tra sự hiểu biết của bạn về các
bài kiểm tra.
Ha ha.
Vui.
Đó là một cách chơi chữ.
Vì vậy, hãy tạm dừng video, thử xem.
Nếu không, tôi sẽ đi với câu trả lời.
Điều đầu tiên tôi muốn làm là thiết lập lại bài kiểm tra của mình.
Tôi sẽ nhập bài kiểm tra đơn vị và tôi sẽ tạo chính kiểm tra lớp.
Hay chúng ta hãy gọi nó là kịch bản thử nghiệm lần này hoặc một trò chơi thử nghiệm.
Tôi sẽ nói bài kiểm tra đơn vị.
Trường hợp thử nghiệm.
Đây sẽ là trường hợp thử nghiệm của chúng tôi.
Và sau đó ở đây tôi sẽ tạo, giả sử chỉ là một bài kiểm tra đơn giản.
Đầu vào trò chơi hoặc thử nghiệm.
Nhận cái tôi.
Và bây giờ, tôi sẽ vượt qua điều này bởi vì chúng tôi không thực sự làm bất cứ điều gì.
Cuối cùng, tôi sẽ nói nếu.
Đặt tên vì hai chính sau đó chạy thử nghiệm đơn vị.
Chấm chính.
Vì vậy, đây chỉ là thiết lập đơn giản của chúng tôi.
Vì vậy, nếu chúng ta chạy điều này ngay bây giờ, hãy giả sử Python ba.
Kiểm tra số pi.
Chúng tôi thấy rằng chúng tôi đã chạy một thử nghiệm.
Được rồi.
Vì vậy, đây là thiết lập của chúng tôi.
Tiếp theo, những gì tôi muốn làm là thực sự lấy nó ra để tôi có thể sử dụng nó trong tệp thử nghiệm của mình bằng cách giải nén
nó thành một hàm.
Vì vậy, tôi sẽ chỉ nói ở phần trên cùng ở đây.
Tôi sẽ xác định suy đoán của chúng tôi.
Trò chơi hay chúng ta hãy gọi nó là chạy.
Đoán.
Điều đó sẽ nhận được một đầu vào.
Hoặc giả đoán, và sau đó nó sẽ chạy mã này.
Vì vậy, chúng ta hãy làm điều đó.
Tôi sẽ lấy.
Đoạn mã này.
Như thế này.
Và chỉ cần dán nó vào đây.
Bây giờ đoán sai cũng sẽ cần biến câu trả lời.
Vì vậy, tôi sẽ cung cấp cho nó một câu trả lời tham số thứ hai.
Như thế này.
Vì vậy, bây giờ tôi có thể chỉ đơn giản là bên trong đây.
Chạy chức năng này với đoán và trả lời.
Chỉ vậy thôi.
Vì vậy, hãy lưu nó ở đây và chạy thử nghiệm này, hoặc chỉ chạy tệp thực tế để đảm bảo rằng nó vẫn hoạt
động.
Ồ, và chúng ta có một chút thụt lề ở đó.
Vì vậy, chúng tôi phải đảm bảo rằng thụt lề của chúng tôi là chính xác.
Bởi vì hãy nhớ trong Python, điều đó có nghĩa là một cái gì đó.
Được rồi.
Bây giờ chúng tôi có một vấn đề.
Chúng ta có một khoảng nghỉ bên ngoài vòng lặp bởi vì trong khi chúng tôi đang sử dụng từ khóa break và tốt, chúng tôi đang
ở ngoài vòng lặp.
Vì vậy, một điều chúng ta có thể làm là chúng ta có thể nói trở lại đây.
Vì vậy, hãy chạy lại.
Và tiếp tục đoán một cái tên.
Hoặc một số.
Và ở đó bạn đi.
Điều này vẫn đang hoạt động.
Tôi có thể sử dụng return ở đây vì giếng này sẽ chạy và quay trở lại.
Nhưng bây giờ chúng tôi vẫn đang ở trong trò chơi.
Vì vậy, có lẽ chúng ta chỉ có thể quay trở lại.
ĐÚNG VẬY.
Và nói nếu.
Chạy đoán.
Đúng rồi.
Chúng ta sẽ thoát ra khỏi điều này.
Lại.
Hãy bắt đầu trò chơi của chúng ta.
Tôi sẽ giải quyết vấn đề này và chạy lại trò chơi.
Một hai ba bốn.
Và ở đó bạn đi.
Tôi đã nhập một số.
Tôi là thiên tài.
Chúng tôi vừa kết thúc trò chơi.
Hãy làm cho nó nhỏ hơn một chút để bạn có thể thấy.
Vì vậy, chúng tôi có cuộc chạy của chúng tôi.
Đoán là tôi đã sửa đổi mã một chút.
Nhưng điều quan trọng là tôi đã trích xuất một đơn vị chức năng để tôi có thể kiểm tra một cái gì đó như
Run.
Đoán.
Vì vậy, có vẻ như tôi đã sửa đổi mã của chúng tôi, nhưng mã vẫn hoạt động.
Vì vậy, bây giờ chúng ta hãy bắt đầu thử nghiệm chức năng đoán chạy của chúng tôi.
Hãy đi đây.
Và bắt đầu nhập tập lệnh của chúng tôi.
Và ở đây làm một vài điều.
Đầu tiên, tôi muốn câu trả lời là, giả sử, bằng năm.
Và dự đoán sẽ bằng năm.
Vì vậy, chúng tôi muốn đảm bảo rằng nếu người đoán và câu trả lời khớp với nhau, thì, khách nhầm sẽ thông
qua câu lệnh if và in ra rằng bạn là thiên tài hoặc trường hợp không phải là trường hợp đúng.
Vì vậy, hãy nói tự khẳng định dấu chấm.
Bình đẳng.
Tập lệnh đó hoặc lần đầu tiên hãy thực sự chạy nó.
Vì vậy, hãy có kết quả bằng với dấu chấm tập lệnh.
Nó là cái gì vậy?
Chạy, đoán.
Chạy.
Đoán.
Và cho nó câu trả lời.
Và đoán.
Và chúng tôi mong đợi kết quả.
Trở về.
ĐÚNG VẬY.
Vì vậy, chúng tôi chỉ có thể khẳng định đúng rằng.
Kết quả là đúng.
Nếu bây giờ tôi chạy cái này.
Ồ, chúng tôi thực sự bắt đầu trò chơi.
Vì vậy, làm thế nào chúng ta có thể sửa chữa điều này?
Chà, chúng ta có thể đóng nó và thực sự thêm if name Main.
Ở đây.
Vì vậy, xuống đây.
Chúng tôi sẽ nói, này, chỉ chạy tệp này nếu đây là tệp chính đang được chạy như vậy.
Nếu tôi quay lại để kiểm tra ở đây và chạy lại điều này.
Được rồi.
Bây giờ nó đang hoạt động nhưng tôi nhận được một đối tượng trò chơi kiểm tra lỗi xác nhận không có thuộc tính khẳng định true bởi vì.
Chà, tôi.
Viết sai chính tả đó.
Hãy thử lại lần nữa.
Được rồi.
Có vẻ như một bài kiểm tra đã chạy và mọi thứ đều tốt.
Chúng tôi cũng thấy rằng nó được in ra.
Bạn là một thiên tài.
Rất rất tốt.
Nhân tiện, tôi chỉ cho bạn cách kiểm tra này bởi vì đây là cách một kịch bản trong cuộc sống thực.
Bạn tiếp tục vi phạm mọi thứ, bạn tiếp tục mắc lỗi, và sau đó bạn cố gắng sửa chữa chúng và sửa mã của
bạn.
Và bạn có thể thấy mã của chúng tôi đã trông ngày càng tốt hơn chỉ bằng cách chạy các thử nghiệm này.
Được chứ.
Ta còn làm gì khác được nữa?
Hãy nói ở đây.
Đó là chúng tôi sẽ sao chép điều này.
Và để mọi thứ ngắn gọn hơn, tôi sẽ nhập trực tiếp các thông số vào đây.
Chỉ vậy thôi.
Giả sử đầu vào, giả sử không chính xác.
Hoặc.
Đoán sai.
Vì vậy, giả sử câu trả lời là năm và tôi đoán là không.
Vì vậy, chúng tôi muốn khẳng định rằng điều này sẽ bằng sai.
Vì vậy, nếu tôi chạy cái này.
Để kiểm tra khả năng vượt qua của họ.
Điều đó thật tuyệt vời.
Chúng ta có thể kiểm tra những gì khác ở đây?
Được rồi.
Chà, chúng tôi muốn kiểm tra điều đó nếu kết quả đoán không nằm trong khoảng từ 0 đến 10 hoặc từ 1 đến 10.
Trong trường hợp đó, chúng tôi muốn có một bản in của.
Này, Bozo.
Tôi đã nói từ 1 đến 10.
Vì vậy, một lần nữa, tôi có thể kiểm tra.
Đó nếu suy đoán của tôi sai.
Con số.
Giả sử câu trả lời là năm, nhưng tôi cho 11.
Chúng tôi muốn khẳng định.
Vâng, ngay bây giờ chúng tôi đang in và không làm gì cả.
Vì vậy, có lẽ chúng ta nên trả về false chỉ để có một số nhất quán ở đây.
Một lần nữa nếu tôi làm điều đó và tôi chạy.
Của bạn đây.
Ba bài kiểm tra đang trôi qua.
Thật tuyệt.
Và còn rất nhiều, rất nhiều bài kiểm tra nữa mà chúng ta có thể viết.
Có lẽ chúng ta hãy làm một bài kiểm tra nữa, đó là kiểm tra.
Điều gì sẽ xảy ra nếu đầu vào là một chuỗi?
Nếu tôi chạy cái này.
Ồ.
Và chắc chắn rằng sai.
Nhập ở đây.
Hãy chắc chắn rằng các tên khác nhau.
Và tôi có bốn bài kiểm tra đang chạy.
Bởi vì điều này sẽ không trôi qua và nó sẽ trả về false.
Bây giờ có nhiều thứ khác mà chúng ta có thể làm ở đây.
Nhưng bạn có thể thấy sức mạnh của thử nghiệm ngay bây giờ.
Nếu bạn có bài kiểm tra khác với tôi, không sao cả, mọi người.
Các trường hợp thử nghiệm là khác nhau.
Toàn bộ điểm của thử nghiệm là chỉ đơn giản.
Nhìn vào mã của chúng tôi và xem cách chúng tôi có thể cải thiện nó, cách chúng tôi có thể phá vỡ mã của mình, cách chúng tôi có
thể đơn giản hóa mã của mình bằng cách chia nó thành các đơn vị nhỏ hơn, các đơn vị nhỏ hơn có thể được kiểm tra và sửa một số lỗi mà
có lẽ chúng tôi muốn nghĩ đến .
Bây giờ có nhiều thứ khác mà chúng ta có thể làm, nhưng bạn sẽ nhận thấy ở đây ý tưởng đã hoạt động như thế nào trên từng mảnh
nhỏ tại một thời điểm.
Kiểm tra nó, và sau đó có thể tiếp tục, chúng ta có thể xem xét phần này của mã hoặc có thể thử và chấp nhận một
phần của mã.
Và đây là điều.
Khi bạn đang làm việc cho một công ty, tôi cho rằng có vô số bài kiểm tra mà bạn có thể
làm.
Bạn có thể có hàng trăm dòng ở đây để kiểm tra mã của bạn đến từng bit.
Nhưng chỉ vì bạn đang thử nghiệm càng nhiều lần càng tốt, điều đó không thực sự làm cho các bài kiểm tra của bạn tốt.
Như tôi đã nói, có vô số bài kiểm tra mà bạn có thể viết.
Ý tưởng là viết cho các bài kiểm tra chất lượng tốt bao gồm hầu hết các trường hợp của bạn.
Nhưng cuối cùng bạn sẽ có lợi nhuận giảm dần khi bạn phải đánh đổi giữa việc viết mã và viết
các bài kiểm tra.
Và đôi khi, tùy thuộc vào những gì công việc yêu cầu, bạn có thể phải tập trung nhiều hơn vào các bài kiểm tra và ít
tập trung hơn vào mã.
Hoặc đôi khi có thể bạn cần phải di chuyển nhanh và bạn không có thời gian để viết các bài kiểm tra.
Và một lần nữa, tùy thuộc vào nhu cầu kinh doanh, đó cũng có thể là trường hợp.
Nhưng với phần này, tôi hy vọng bạn hiểu một số nguyên tắc sau kiểm thử trong phát triển phần mềm.
Có nghĩa là, các lỗi sẽ luôn phát sinh trong mã của chúng ta.
Và chúng ta có thể sử dụng ánh sáng để giúp chúng ta làm việc này.
Nhưng một trong những cách tốt nhất để đảm bảo rằng mã của chúng tôi hoạt động bình thường là kiểm tra.
Và chúng tôi càng có nhiều thử nghiệm có nghĩa là mã của chúng tôi càng ổn định.
Hẹn gặp lại các bạn trong phần tiếp theo.
Tạm biệt.