Trường hợp thử nghiệm và kịch bản thử nghiệm: Sự khác biệt chính, ví dụ và thời điểm sử dụng từng trường hợp

  1. Trang chủ
  2. Blog
  3. Kiểm thử phần mềm

Kiểm thử phần mềm

Trường hợp thử nghiệm và Kịch bản thử nghiệm: Sự khác biệt chính, ví dụ và thời điểm sử dụng từng trường hợp

Một kịch bản cho biết những gì cần kiểm tra. Một trường hợp nói chính xác như thế nào. Thực hiện theo một tính năng đặt lại mật khẩu từ yêu cầu, kịch bản cho đến các trường hợp thử nghiệm đầy đủ và tìm hiểu xem nhóm của bạn thực sự cần bao nhiêu chi tiết.

Đọc 8 phút
Trường hợp thử nghiệm và kịch bản thử nghiệm: sự khác biệt chính, ví dụ và thời điểm sử dụng từng trường hợp

Điểm chính

  • Kịch bản thử nghiệm là một tuyên bố một dòng về nội dung cần xác minh.
  • trường hợp thử nghiệm cung cấp các bước, dữ liệu và kết quả mong đợi cho biết cách để xác minh nó.
  • Một kịch bản thường tạo ra nhiều trường hợp thử nghiệm.
  • Kết hợp chi tiết với rủi ro: kịch bản nhẹ cho các nhóm nhanh, trường hợp đầy đủ cho công việc quan trọng hoặc được quản lý.

Những người thử nghiệm mới thường nghe hai thuật ngữ này được sử dụng như thể chúng có cùng một ý nghĩa. Họ không làm vậy. Sự khác biệt giữa trường hợp kiểm thử so với kịch bản kiểm thử chủ yếu là về mức độ chi tiết và việc hiểu nó sẽ giúp bạn quyết định số lượng cần viết trước khi bắt đầu kiểm thử.

Hướng dẫn này giải thích từng phần, sau đó thực hiện thông qua một tính năng đặt lại mật khẩu duy nhất, từ yêu cầu, tình huống cho đến các trường hợp thử nghiệm đầy đủ. Tính năng và quy tắc của nó là một ví dụ được phát minh. Thuật ngữ cũng khác nhau một chút giữa các nhóm và công cụ, vì vậy hãy thống nhất ý nghĩa của những từ này trong nhóm của bạn.

Câu trả lời ngắn gọn

Kịch bản thử nghiệm mô tả một tình huống cần kiểm tra, chẳng hạn như “xác minh người dùng có thể đặt lại mật khẩu đã quên”. Nó thường là một dòng và để lại thông tin chi tiết cho người kiểm tra.

trường hợp kiểm thử mô tả chính xác cách kiểm tra một điều kiện trong tình huống đó: điều kiện tiên quyết, các bước, dữ liệu kiểm thử và kết quả mong đợi. Hai người thử nghiệm theo sau nó sẽ đưa ra phán quyết tương tự.

Hãy nghĩ đến việc lên kế hoạch cho một chuyến đi. Kịch bản là “du lịch từ Pune đến Delhi”. Trường hợp thử nghiệm là hành trình đầy đủ, có số chuyến bay, thời gian khởi hành và những việc cần làm ở mỗi chặng.

Trường hợp thử nghiệm và kịch bản thử nghiệm cạnh nhau

Khía cạnh Kịch bản thử nghiệm Trường hợp thử nghiệm
Câu hỏi đã được trả lời Chúng ta nên kiểm tra những gì? Chính xác thì chúng ta kiểm tra nó như thế nào?
Chi tiết Cấp độ cao Mức độ thấp và cụ thể
Chiều dài điển hình Một dòng Một số trường và các bước
Bắt nguồn từ Yêu cầu, câu chuyện của người dùng Kịch bản thử nghiệm
Bao gồm dữ liệu thử nghiệm? hiếm khi Có
Bao gồm kết quả mong đợi? ngụ ý Có, rõ ràng
Thời gian để viết Phút Lâu hơn nữa
Bảo trì Thấp Cao hơn vì chi tiết thay đổi
Sự tự do của người thử nghiệm Cao Thấp
Tốt nhất cho Tổng quan về phạm vi bảo hiểm, các nhóm nhanh chóng Các luồng quan trọng, kiểm toán, chuyển giao

Kịch bản thử nghiệm là gì?

Kịch bản thử nghiệm là một mô tả ngắn gọn về điều gì đó mà người dùng có thể làm hoặc một tình huống mà hệ thống phải xử lý. Nó tập trung vào những gì quan trọng từ bên ngoài và thường xuất phát trực tiếp từ yêu cầu hoặc câu chuyện của người dùng.

Các kịch bản có giá trị vì chúng diễn ra nhanh chóng. Bạn có thể liệt kê ba mươi trường hợp trong thời gian cần thiết để viết ba trường hợp chi tiết, điều này khiến chúng trở thành một cách tuyệt vời để xem xét phạm vi đưa tin với chủ sở hữu sản phẩm: “chúng ta đã nghĩ đến mọi thứ chưa?” Người đọc không rành về kỹ thuật có thể theo dõi danh sách các tình huống mà không gặp rắc rối.

Trường hợp thử nghiệm là gì?

Trường hợp thử nghiệm là một tập hợp các điều kiện và bước cụ thể, được sử dụng để xác định xem một thứ có hoạt động hay không. Một trường hợp thử nghiệm điển hình chứa:

  • ID duy nhất và tiêu đề rõ ràng
  • Điều kiện tiên quyết, nghĩa là điều gì phải đúng trước khi bạn bắt đầu
  • Được đánh số bước
  • dữ liệu thử nghiệm cụ thể
  • Một kết quả mong đợi
  • Kết quả thực tế và Trạng thái, được điền khi chạy

Các trường hợp thử nghiệm tỏa sáng khi tính nhất quán có vấn đề. Một thành viên mới trong nhóm có thể chạy chúng, kết quả có thể được so sánh giữa các bản phát hành và bạn có bản ghi về những gì đã được xác minh. Chúng tôi đi sâu hơn vào hướng dẫn về cách viết trường hợp kiểm thử.

Một tính năng, bắt đầu để kết thúc

Bước 1: Yêu cầu

Người dùng quên mật khẩu có thể yêu cầu liên kết đặt lại qua email. Liên kết hoạt động một lần và hết hạn sau 30 phút. Mật khẩu mới phải dài ít nhất 8 ký tự.

Bước 2: Các kịch bản thử nghiệm

ID Kịch bản thử nghiệm
TS-01 Xác minh người dùng đã đăng ký có thể đặt lại mật khẩu bằng liên kết được gửi qua email
TS-02 Xác minh hành vi khi email chưa được đăng ký
TS-03 Xác minh một liên kết đã hết hạn không thể được sử dụng
TS-04 Xác minh một liên kết không thể được sử dụng hai lần
TS-05 Xác minh các quy tắc mật khẩu mới được thực thi

Hãy nhìn TS-02. Yêu cầu không bao giờ nói rõ điều gì sẽ xảy ra với một email không xác định và việc viết kịch bản đã bộc lộ khoảng trống đó. Trang có nên tiết lộ rằng địa chỉ chưa được đăng ký? Để bảo mật, điều này thường không nên thực hiện vì điều đó cho phép kẻ tấn công khám phá các tài khoản hợp lệ. Việc phát hiện sớm những câu hỏi này là một trong những lợi ích lớn nhất của việc viết kịch bản.

Bước 3: Các trường hợp thử nghiệm

Bây giờ chúng tôi chỉ mở rộng TS-05 thành các trường hợp thử nghiệm. Một kịch bản trở thành nhiều kịch bản:

ID Tiêu đề Dữ liệu thử nghiệm Kết quả mong đợi
TC-051 Chấp nhận mật khẩu chính xác 8 ký tự abcd1234 Thay đổi mật khẩu và xác nhận xuất hiện
TC-052 Từ chối mật khẩu gồm 7 ký tự abcd123 Lỗi: cần ít nhất 8 ký tự
TC-053 Từ chối mật khẩu trống (blank) Lỗi: yêu cầu mật khẩu
TC-054 Từ chối xác nhận không khớp abcd1234, abcd9999 Lỗi: mật khẩu không khớp

Những giá trị này không phải là ngẫu nhiên. TC-051 và TC-052 nằm ở hai bên của giới hạn, sử dụng phân tích giá trị biên và các giá trị khác đến từ phân vùng tương đương.

Mẫu trường hợp thử nghiệm

Đây là TC-052 được viết đầy đủ. Sao chép bố cục này nếu nhóm của bạn chưa có tiêu chuẩn:

ID:            TC-052
Title:         Reset rejects a password of 7 characters
Scenario:      TS-05 New password rules are enforced
Priority:      High
Preconditions: Account asha@example.com exists
               A valid, unused reset link has been requested
Test data:     New password: abcd123

Steps:
  1. Open the reset link from the email
  2. Enter abcd123 in New password
  3. Enter abcd123 in Confirm password
  4. Click Reset password

Expected:      Error "Password must be at least 8 characters"
               Password is unchanged, and the link stays valid
Actual:        (filled in during the run)
Status:        (Pass / Fail / Blocked)

Lưu ý rằng kết quả mong đợi sẽ kiểm tra nhiều hơn thông báo lỗi. Nó cũng xác nhận rằng mật khẩu cũ vẫn hoạt động và liên kết vẫn có thể sử dụng được. Các trường hợp kiểm thử yếu thường dừng lại ở những gì hiển thị trên màn hình.

Mẹo: Kiểm tra một điều kiện trong mỗi trường hợp kiểm thử. Nếu một vụ án bao gồm năm thứ thất bại, bạn sẽ không biết cái nào đã hỏng. Các trường hợp ngắn, tập trung cũng dễ dàng tự động hóa hơn sau này.

Vị trí của chúng phù hợp trong bức tranh lớn hơn

Cấp độ Câu trả lời Ví dụ
Chiến lược thử nghiệm Cách tiếp cận chung của chúng tôi là gì? Tự động hồi quy, khám phá các tính năng mới
kế hoạch kiểm tra Chúng tôi sẽ làm gì cho bản phát hành này? Tính năng tài khoản, được thử nghiệm từ ngày 3 đến ngày 7 tháng 3
Kịch bản thử nghiệm Chúng ta sẽ kiểm tra những gì? Quy tắc mật khẩu được thực thi
Trường hợp thử nghiệm Chúng ta sẽ kiểm tra nó như thế nào? TC-052 và các bước của nó
Kịch bản thử nghiệm Máy sẽ kiểm tra nó như thế nào? Mã tự động TC-052

Theo truyền thống, các kịch bản và trường hợp được viết trong giai đoạn thiết kế thử nghiệm của vòng đời thử nghiệm phần mềm.

Khi nào nên sử dụng mỗi

Kịch bản thường là đủ khi:

  • Đội ngũ nhỏ, có kinh nghiệm và hiểu rõ về sản phẩm.
  • Thời gian ngắn hoặc yêu cầu thay đổi thường xuyên.
  • Tính năng này có rủi ro thấp.
  • Bạn muốn xem xét phạm vi đưa tin một cách nhanh chóng với các bên liên quan.
  • Bạn đang hướng dẫn thử nghiệm thăm dò.

Các trường hợp kiểm thử chi tiết có giá trị nỗ lực khi:

  • Một thất bại sẽ gây tốn kém, chẳng hạn như với dữ liệu thanh toán, bảo mật hoặc sức khỏe.
  • Cơ quan quản lý hoặc kiểm toán viên cần bằng chứng về những gì đã được kiểm tra.
  • Người thử nghiệm mới hoặc thuê ngoài phải chạy thử nghiệm.
  • Kết quả phải được lặp lại một cách chính xác, như trong bộ hồi quy.
  • Các bước sẽ trở thành các bài kiểm tra tự động.

Hầu hết các đội trưởng thành đều sử dụng cả hai. Họ liệt kê các kịch bản cho mọi thứ và chỉ viết các trường hợp đầy đủ cho những rủi ro cao nhất. Không cần phải ghi lại từng bước của trang cài đặt rủi ro thấp giống như chuyển khoản ngân hàng.

Kịch bản, trường hợp và tự động hóa

Một ca kiểm thử được viết tốt sẽ gần như liên kết trực tiếp tới một bài kiểm thử tự động. Điều kiện tiên quyết trở thành thiết lập, các bước trở thành hành động và kết quả mong đợi trở thành một xác nhận. Các khung phát triển theo hướng hành vi thậm chí còn sử dụng từ “Kịch bản” cho các thông số kỹ thuật thực thi của chúng:

Scenario: Reset rejects a short password
  Given I have opened a valid reset link
  When I submit the new password "abcd123"
  Then I see "Password must be at least 8 characters"
  And my password is unchanged

Điều khó hiểu là cái mà BDD gọi là kịch bản lại gần với trường hợp thử nghiệm hơn nhiều vì nó có dữ liệu và kết quả cụ thể. Đó là một lời nhắc tốt để đồng ý về các điều khoản. Để tự động hóa các bước kiểm tra này, hãy xem hướng dẫn Playwright hoặc hướng dẫn pytest của chúng tôi.

Điều gì khiến họ tốt

Một kịch bản tốt Một trường hợp thử nghiệm tốt
Mô tả mục tiêu hoặc tình huống của người dùng Kiểm tra một điều kiện cụ thể
Liên kết quay lại một yêu cầu Có kết quả mong đợi chính xác
Bao gồm những thất bại cũng như thành công Liệt kê các điều kiện tiên quyết và dữ liệu của nó
Không có chi tiết không cần thiết Có thể được điều hành bởi người mới
Phù hợp trong một dòng Không phụ thuộc vào các xét nghiệm khác

Những lỗi thường gặp

  • Chỉ viết các đường dẫn hạnh phúc. Hầu hết các lỗi đều ở trong tình trạng lỗi, vì vậy hãy bao gồm những gì sẽ xảy ra.
  • Sử dụng kết quả mong đợi mơ hồ. “Nó sẽ hoạt động bình thường” cho phép bất kỳ người thử nghiệm nào quyết định bất cứ điều gì.
  • Ghi chép đầy đủ mọi thứ. Hàng nghìn trường hợp không ai duy trì còn tệ hơn một tập hợp nhỏ hữu ích.
  • Bỏ qua kịch bản. Đi thẳng vào các vụ án có thể khiến toàn bộ khu vực bị lãng quên.
  • Để những chiếc ốp lưng trở nên cũ kỹ. Khi sản phẩm thay đổi, những chiếc ốp lưng cũ sẽ đánh lừa mọi người. Hãy xem xét chúng thường xuyên.
  • Ràng buộc các bước với những chi tiết dễ vỡ. “Nhấp vào nút màu xanh ở trên cùng” phá vỡ mọi thiết kế lại.

Lời kết

Các kịch bản mang lại cho bạn chiều rộng và các trường hợp thử nghiệm mang lại cho bạn chiều sâu. Bắt đầu với các kịch bản cho tính năng tiếp theo của bạn và xem xét chúng với nhà phát triển và chủ sở hữu sản phẩm. Sau đó chỉ mở rộng những rủi ro thành các trường hợp đầy đủ. Bạn sẽ tìm thấy những khoảng trống sớm hơn và bạn sẽ dành thời gian viết của mình vào nơi có giá trị.

Câu hỏi thường gặp

Sự khác biệt chính giữa trường hợp thử nghiệm và kịch bản thử nghiệm là gì?

Kịch bản kiểm thử là một tuyên bố cấp cao về những gì cần kiểm thử. Một trường hợp kiểm thử đưa ra các bước, dữ liệu cụ thể và kết quả mong đợi về cách kiểm thử nó.

Cái nào có trước, kịch bản thử nghiệm hay trường hợp thử nghiệm?

Thông thường kịch bản. Kịch bản xuất phát từ yêu cầu, sau đó các trường hợp thử nghiệm được viết từ các kịch bản cần chi tiết hơn.

Một kịch bản có bao nhiêu trường hợp thử nghiệm?

Không có số cố định. Nó phụ thuộc vào các quy tắc và rủi ro liên quan, và một kịch bản điển hình có thể có một số kịch bản, bao gồm thành công, thất bại và ranh giới.

Các nhóm Agile có cần các trường hợp kiểm thử chi tiết không?

Không phải lúc nào cũng vậy. Nhiều người dựa vào các kịch bản, tiêu chí chấp nhận và tự động hóa, đồng thời chỉ giữ lại các trường hợp chi tiết cho các luồng quan trọng hoặc nhu cầu tuân thủ.

Kịch bản kiểm thử có giống như một trường hợp kiểm thử không?

Không hẳn. Trường hợp kiểm thử mô tả những gì cần kiểm tra, trong khi tập lệnh kiểm thử thường là mã thực hiện những kiểm tra đó một cách tự động, mặc dù một số nhóm sử dụng các thuật ngữ này một cách lỏng lẻo.

Tiếp tục học hỏi

Làm việc với Stack Quora

Cần trợ giúp về kiểm tra, WordPress hoặc SEO?

Chúng tôi giúp các nhóm phát triển phần mềm tốt hơn và phát triển trang web của họ. Hãy cho chúng tôi biết bạn đang làm gì và chúng tôi sẽ đề xuất bước tiếp theo rõ ràng.

Tiếp tục đọc

Thêm hướng dẫn về thử nghiệm, AI và phát triển hiện đại

Bạn thích bài viết này? Chọn một chủ đề và chuyển ngay sang phần hướng dẫn mới nhất của chúng tôi.

Trí tuệ nhân tạo

Giải thích về ảo giác AI: Tại sao các mô hình ngôn ngữ lại tạo nên mọi thứ và cách giảm thiểu nó

Ảo giác AI đã giải thích: chúng là gì, tại sao mô hình ngôn ngữ tạo ra chúng, các loại phổ biến, cách giảm thiểu chúng bằng cách căn cứ và nhắc nhở …

Đọc bài viết →
DevOps

Giải thích về các biến môi trường: Tệp .env, bí mật và cấu hình được thực hiện đúng

Các biến môi trường được giải thích bằng các ví dụ Python mà chúng tôi đã chạy: đọc và thiết lập chúng, tại sao mọi giá trị đều là một chuỗi, tệp .e…

Đọc bài viết →
Phát triển phần mềm

Giải thích về giới hạn tỷ lệ API: Thuật toán, tiêu đề và xử lý lỗi 429

Giới hạn tốc độ API được giải thích bằng mô phỏng mà chúng tôi đã chạy: nhóm mã thông báo, cửa sổ cố định, cửa sổ trượt, 429 phản hồi, tiêu đề giới …

Đọc bài viết →
Tự động hóa kiểm thử

Chế giễu bằng Python: unittest.mock, patch và những sai lầm khiến bài kiểm tra nói dối

Mô phỏng bằng Python với unittest.mock, đã được thử nghiệm: Mock và return_value, side_effect, vá lỗi nơi sử dụng tên, thông số kỹ thuật và thông số…

Đọc bài viết →
Kiểm thử phần mềm

Giải thích về phạm vi bảo hiểm của mã: Phạm vi tuyến so với chi nhánh và ý nghĩa thực sự 100%

Phạm vi bảo hiểm mã được giải thích bằng cách chạy phạm vi bảo hiểm thực tế: phạm vi bảo hiểm dòng, chi nhánh và điều kiện, đọc báo cáo, lý do tại s…

Đọc bài viết →
Cơ sở dữ liệu & SQL

DELETE vs TRUNCATE vs DROP trong SQL: Sự khác biệt, khôi phục và thời điểm sử dụng mỗi loại

DELETE vs TRUNCATE vs DROP được giải thích bằng SQL đã được thử nghiệm: mỗi loại loại bỏ, khôi phục, kích hoạt, đặt lại danh tính, tốc độ và Postgre…

Đọc bài viết →
Cơ sở dữ liệu & SQL

Giải thích về Chế độ xem SQL: Tạo, sử dụng và tránh những cạm bẫy, kèm theo ví dụ

Chế độ xem SQL được giải thích bằng các truy vấn chúng tôi đã chạy: tạo chế độ xem, kết quả trực tiếp, ẩn cột, hiệu suất, chế độ xem có thể cập nhật…

Đọc bài viết →
Phát triển phần mềm

Giao diện TypeScript so với loại: Sự khác biệt thực sự, được thử nghiệm bằng trình biên dịch

Giao diện TypeScript so với loại, được kiểm tra bằng trình biên dịch thực: cả hai có thể làm gì, chỉ một người có thể làm gì, hợp nhất khai báo, mở …

Đọc bài viết →
Phát triển phần mềm

Giải thích về Python *args và **kwargs: Hàm linh hoạt với ví dụ rõ ràng

Python *args và **kwargs được giải thích bằng mã chúng tôi đã chạy: đóng gói và giải nén, thứ tự tham số, đối số chỉ từ khóa và chỉ vị trí, trình tr…

Đọc bài viết →
Phát triển phần mềm

Hàm Lambda của Python: Cú pháp, cách sử dụng thực tế và khi nào không nên sử dụng chúng

Các hàm lambda của Python được giải thích bằng mã chúng tôi đã chạy: cú pháp, sắp xếp bằng khóa, bản đồ và bộ lọc, các phần đóng, bẫy liên kết muộn …

Đọc bài viết →
Trí tuệ nhân tạo

Đại lý AI là gì? Cách chúng hoạt động, với vòng lặp tác nhân đơn giản, bạn có thể chạy

Tác nhân AI là gì? Hướng dẫn đơn giản về vòng lặp tác nhân, công cụ, bộ nhớ và lan can, với một vòng lặp Python nhỏ mà chúng tôi đã chạy, những rủi …

Đọc bài viết →
DevOps

Giám sát và Khả năng quan sát: Sự khác biệt thực sự, với nhật ký, số liệu và dấu vết

Giải thích về giám sát và khả năng quan sát: lỗi đã biết và chưa biết, nhật ký, số liệu và dấu vết, hướng dẫn về sự cố thanh toán, tín hiệu vàng, Op…

Đọc bài viết →
DevOps

Docker Volumes vs Bind Mounts: Duy trì dữ liệu vùng chứa đúng cách

Giải thích về khối lượng Docker và liên kết gắn kết: tại sao dữ liệu vùng chứa biến mất, khối lượng được đặt tên, liên kết gắn kết, tmpfs, ví dụ về …

Đọc bài viết →
Tự động hóa kiểm thử

TDD vs BDD: Key Differences, One Feature Built Both Ways and When to Use Each

TDD và BDD được giải thích bằng một tính năng giảm giá được xây dựng theo cả hai cách: tái cấu trúc màu đỏ-xanh với mã chúng tôi đã chạy, kịch bản C…

Đọc bài viết →
Kiểm thử phần mềm

Kiểm tra chấp nhận của người dùng (UAT): Quy trình, danh sách kiểm tra và ví dụ thực tế

Giải thích về thử nghiệm chấp nhận của người dùng: ai chạy nó, nó khác với QA như thế nào, quy trình bảy bước, mẫu trường hợp thử nghiệm UAT, danh s…

Đọc bài viết →
Cơ sở dữ liệu & SQL

Giải thích về các giá trị NULL của SQL: IS NULL, COALESCE, NULLIF và những cái bẫy cần tránh

Các giá trị SQL NULL được giải thích bằng các truy vấn chúng tôi đã chạy: logic ba giá trị, IS NULL, COALESCE, NULLIF, cách tổng hợp, kết hợp và sắp…

Đọc bài viết →
Cơ sở dữ liệu & SQL

Câu lệnh SQL CASE WHEN: Cú pháp, ví dụ thực tế và các lỗi thường gặp

TRƯỜNG HỢP SQL KHI được giải thích bằng các truy vấn mà chúng tôi đã chạy: các biểu mẫu đơn giản và được tìm kiếm, thứ tự điều kiện, các thủ thuật S…

Đọc bài viết →
Phát triển phần mềm

JWT là gì? Mã thông báo Web JSON được giải thích bằng một ví dụ hoạt động

JWT là gì? Mã thông báo Web JSON đã giải thích: ba phần, mã thông báo được xây dựng và giả mạo trong mã chúng tôi đã chạy, JWT so với phiên, lưu trữ…

Đọc bài viết →
Phát triển phần mềm

Giải thích về vòng lặp sự kiện JavaScript: Ngăn xếp cuộc gọi, Microtask và bộ hẹn giờ kèm ví dụ

Vòng lặp sự kiện JavaScript được giải thích bằng mã chúng tôi đã chạy: ngăn xếp cuộc gọi, hàng đợi tác vụ và vi nhiệm, tại sao setTimeout 0 không di…

Đọc bài viết →
Phát triển phần mềm

Giải thích về trình tạo và năng suất của Python: Tiết kiệm bộ nhớ bằng các ví dụ thực tế

Trình tạo và lợi nhuận Python được giải thích bằng mã chúng tôi đã chạy: cách chúng tạm dừng và tiếp tục, đo mức tiết kiệm bộ nhớ, quy trình, chuỗi …

Đọc bài viết →
Trí tuệ nhân tạo

Nhúng là gì? Giải thích sự tương đồng về vectơ và Cosine một cách đơn giản

nhúng là gì? Hướng dẫn bằng ngôn ngữ đơn giản về vectơ, độ tương tự cosine và tìm kiếm ngữ nghĩa, với một ví dụ nhỏ mà chúng tôi đã chạy, các cách s…

Đọc bài viết →
DevOps

Triển khai Blue-Green và Canary: Sự khác biệt, sự đánh đổi và cách lựa chọn

Giải thích về triển khai Blue-green và Canary: cách hoạt động của từng loại, chi phí, rủi ro và khôi phục, nhóm người dùng ổn định mà chúng tôi đã t…

Đọc bài viết →
Tự động hóa kiểm thử

Kiểm tra không ổn định: Nguyên nhân gây ra chúng và cách khắc phục chúng vĩnh viễn

Các thử nghiệm không ổn định được giải thích bằng các bản demo mà chúng tôi đã chạy: nguyên nhân chính, cách xác nhận và chẩn đoán nguyên nhân, cách…

Đọc bài viết →
Kiểm thử phần mềm

Kiểm tra tải và kiểm tra căng thẳng: Sự khác biệt, số liệu và ví dụ về k6

Giải thích về thử nghiệm tải và thử nghiệm căng thẳng: mỗi thử nghiệm chứng minh điều gì, thử nghiệm tăng đột biến và ngâm, số liệu quan trọng, lý d…

Đọc bài viết →
Kiểm thử phần mềm

Trường hợp thử nghiệm và kịch bản thử nghiệm: Sự khác biệt chính, ví dụ và thời điểm sử dụng từng trường hợp

Giải thích trường hợp kiểm thử và kịch bản kiểm thử: định nghĩa rõ ràng, bảng cạnh nhau, một tính năng đặt lại mật khẩu được lấy từ các tình huống n…

Đọc bài viết →
Cơ sở dữ liệu & SQL

Tối ưu hóa truy vấn SQL: Đọc kế hoạch thực thi và sửa các truy vấn chậm, có tính thời gian

Đã thử nghiệm tối ưu hóa truy vấn SQL trên một triệu hàng: đọc kế hoạch thực hiện, thêm chỉ mục phù hợp, sửa các bộ lọc không thể mở rộng, sử dụng c…

Đọc bài viết →
Cơ sở dữ liệu & SQL

SQL UNION và UNION ALL: Sự khác biệt, ví dụ và hiệu suất đã được kiểm tra

SQL UNION và UNION ALL được giải thích bằng các truy vấn chúng tôi đã chạy: trùng lặp, cả hai quy tắc đều tuân theo, lỗi dữ liệu thực, hiệu suất đượ…

Đọc bài viết →
Phát triển phần mềm

Hướng dẫn API tìm nạp JavaScript: GET, POST, Xử lý lỗi và hết thời gian chờ

Hướng dẫn API tìm nạp JavaScript đã được thử nghiệm trên máy chủ cục bộ: GET và POST, tại sao 404 không gửi, trình trợ giúp có thể sử dụng lại, chuỗ…

Đọc bài viết →
Phát triển phần mềm

Xử lý tệp Python: Đọc, ghi, CSV, JSON và pathlib kèm ví dụ

Việc xử lý tệp Python được giải thích bằng mã chúng tôi đã chạy: chế độ mở, với, đọc tệp lớn, CSV, JSON, pathlib, tệp nhị phân, ghi an toàn, xử lý l…

Đọc bài viết →
Phát triển phần mềm

Các lớp và đối tượng Python: Hướng dẫn OOP với các ví dụ thực tế

Các lớp và đối tượng Python được giải thích bằng mã mà chúng tôi đã chạy: __init__, các phương thức, thuộc tính lớp và phiên bản, tính kế thừa, thuộ…

Đọc bài viết →
Trí tuệ nhân tạo

Mô hình ngôn ngữ lớn là gì? LLM hoạt động như thế nào, được giải thích mà không cường điệu hóa

Mô hình ngôn ngữ lớn là gì? LLM được giải thích bằng ngôn ngữ đơn giản: mã thông báo, phần nhúng, sự chú ý, đào tạo, cửa sổ nhiệt độ và ngữ cảnh, mộ…

Đọc bài viết →
DevOps

Các lệnh Linux cho người mới bắt đầu: Hướng dẫn thiết bị đầu cuối cần thiết kèm ví dụ

Các lệnh Linux dành cho người mới bắt đầu, được nhóm theo tác vụ: điều hướng, tệp, xem nhật ký, grep, đường dẫn, quyền, quy trình và lưu trữ, cùng v…

Đọc bài viết →
Tự động hóa kiểm thử

Selenium vs Nhà viết kịch: Sự khác biệt chính, So sánh mã và nên chọn cái nào

Selenium và Playwright được so sánh: kiến trúc, chờ đợi, hỗ trợ trình duyệt và ngôn ngữ, gỡ lỗi, kiểm tra giống nhau ở cả hai công cụ, lời khuyên di…

Đọc bài viết →
Kiểm thử phần mềm

Phân vùng tương đương: Giải thích kỹ thuật thiết kế thử nghiệm bằng các ví dụ đã thực hiện

Giải thích về phân vùng tương đương: cách tìm các phân vùng hợp lệ và không hợp lệ, các ví dụ hoạt động theo độ tuổi, mật khẩu và phiếu giảm giá, cá…

Đọc bài viết →
Kiểm thử phần mềm

Mức độ nghiêm trọng và mức độ ưu tiên trong kiểm thử phần mềm: Sự khác biệt, Ma trận và ví dụ thực tế

Giải thích về mức độ nghiêm trọng và mức độ ưu tiên trong kiểm thử phần mềm: định nghĩa rõ ràng, ma trận bốn chiều với các ví dụ, thang đo cấp độ, a…

Đọc bài viết →
Cơ sở dữ liệu & SQL

Hướng dẫn về truy vấn con SQL: Các loại, truy vấn con tương quan và TỒN TẠI kèm ví dụ

Hướng dẫn về truy vấn con SQL với các truy vấn chúng tôi đã chạy: truy vấn con vô hướng, IN, FROM và SELECT, truy vấn con tương quan, EXISTS, bẫy và…

Đọc bài viết →
Cơ sở dữ liệu & SQL

Giải thích về giao dịch SQL và ACID: Các mức CAM KẾT, ROLLBACK và Cô lập

Các giao dịch SQL và ACID được giải thích bằng chuyển khoản ngân hàng mà chúng tôi đã thực hiện: CAM KẾT, ROLLBACK, điểm lưu trữ, khóa, mức cách ly,…

Đọc bài viết →
Phát triển phần mềm

Git merge vs rebase: khác biệt, ví dụ và khi nào dùng cái nào

Git merge vs rebase được giải thích bằng đầu ra log thực tế, bảng so sánh, quy tắc vàng của rebase và quy trình làm việc nhóm an toàn.

Đọc bài viết →
Phát triển phần mềm

List comprehension trong Python: cú pháp, ví dụ và khi nào nên tránh

List comprehension trong Python: cú pháp, lọc dữ liệu, if-else, vòng lặp lồng nhau, thời gian đo thực tế và khi nào vòng lặp for thông thường tốt hơn.

Đọc bài viết →
Cơ sở dữ liệu & SQL

Giải thích SQL JOIN kèm ví dụ (Inner, Left, Right, Full)

Hiểu SQL JOIN từng bước với bảng và truy vấn mẫu: INNER, LEFT, RIGHT, FULL, CROSS và SELF, cùng lỗi thường gặp và mẹo hiệu năng.

Đọc bài viết →