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ế
Mức độ nghiêm trọng cho biết mức độ thiệt hại của một lỗi. Ưu tiên cho biết bao lâu thì khắc phục được. Tìm hiểu lý do tại sao chúng không phải lúc nào cũng khớp, xem tất cả bốn kết hợp cùng với các ví dụ và tiến hành các cuộc họp phân loại kết thúc bằng các quyết định rõ ràng.
- Mức độ nghiêm trọng đo lường tác động của lỗi lên hệ thống. Mức độ ưu tiên đo lường mức độ khẩn cấp cần khắc phục.
- Người thử nghiệm thường đề xuất mức độ nghiêm trọng, trong khi chủ sở hữu sản phẩm thường quyết định mức độ ưu tiên.
- Chúng hoạt động độc lập nên lỗi đánh máy có thể rất khẩn cấp và sự cố có thể chờ đợi.
- Mức độ ưu tiên thay đổi theo bối cảnh kinh doanh, trong khi mức độ nghiêm trọng có xu hướng ổn định.
Tên công ty bị sai chính tả trên trang chủ và tính năng xuất hiếm khi được sử dụng bị lỗi: bạn sửa cái nào trước? Những lập luận như thế này là lý do khiến các nhóm thử nghiệm tách biệt mức độ nghiêm trọng và mức độ ưu tiên. Một phần mô tả thiệt hại kỹ thuật, phần còn lại mô tả tính cấp bách của hoạt động kinh doanh.
Nếu không có sự phân biệt đó, mọi lỗi sẽ được gắn nhãn “nghiêm trọng”, các nhãn sẽ mất đi ý nghĩa và các nhà phát triển không còn tin tưởng chúng nữa. Hướng dẫn này cung cấp cho bạn các định nghĩa và ví dụ rõ ràng, cùng với quy trình đơn giản để đưa ra các quyết định này. Các ví dụ mang tính minh họa và tỷ lệ chính xác khác nhau giữa các nhóm và công cụ.
Câu trả lời ngắn gọn
Mức độ nghiêm trọng câu trả lời: lỗi này ảnh hưởng đến sản phẩm nặng đến mức nào? Sự cố hoặc mất dữ liệu là nghiêm trọng, trong khi trục trặc về mặt thẩm mỹ thì không.
Ưu tiên câu trả lời: chúng tôi nên khắc phục trong bao lâu? Điều đó phụ thuộc vào khách hàng bị ảnh hưởng, thời hạn, doanh thu, rủi ro pháp lý và uy tín thương hiệu.
Hãy nghĩ về một bệnh viện. Mức độ nghiêm trọng là tình trạng của bệnh nhân nghiêm trọng đến mức nào. Ưu tiên là thứ tự điều trị cho bệnh nhân, điều này cũng phụ thuộc vào các yếu tố khác, chẳng hạn như ai có thể chờ đợi an toàn và nguồn lực nào miễn phí.
Mức độ nghiêm trọng và mức độ ưu tiên cạnh nhau
| Khía cạnh | Mức độ nghiêm trọng | Ưu tiên |
|---|---|---|
| Câu hỏi | Tác động xấu đến mức nào? | Phải sửa trong bao lâu? |
| Tập trung | Hiệu ứng kỹ thuật trên hệ thống | Nhu cầu kinh doanh và lập kế hoạch |
| Thường được thiết lập bởi | Kỹ sư kiểm tra hoặc QA | Chủ sở hữu sản phẩm hoặc người quản lý dự án |
| cơ sở | Hành vi được quan sát | Khách hàng, doanh thu, thời hạn, rủi ro |
| Thay đổi theo thời gian? | hiếm khi | Thường xuyên |
| quyết định | Lỗi nghiêm trọng đến mức nào | Thứ tự của hàng đợi sửa chữa |
Mức độ nghiêm trọng
Hầu hết các đội sử dụng khoảng bốn hoặc năm cấp độ. Đây là thang đo chung:
| Cấp độ | Ý nghĩa | Ví dụ |
|---|---|---|
| Quan trọng (S1) | Hệ thống ngừng hoạt động, mất dữ liệu hoặc vi phạm bảo mật mà không có cách giải quyết | Lưu hóa đơn sẽ xóa hồ sơ khách hàng |
| Thiếu tá (S2) | Một tính năng chính bị hỏng hoặc chỉ tồn tại một giải pháp khắc phục | Tìm kiếm không trả lại kết quả nào cho bất kỳ truy vấn nào |
| Trung bình (S3) | Một tính năng bị lỗi một phần và có cách giải quyết hợp lý | Bộ lọc ngày không thành công nhưng việc sắp xếp theo ngày vẫn hoạt động |
| Nhỏ (S4) | Bất tiện nhỏ, chức năng còn nguyên vẹn | Chú giải công cụ xuất hiện sai vị trí |
| tầm thường (S5) | Chỉ mỹ phẩm | Biểu tượng hơi lệch |
Mức độ ưu tiên
| Cấp độ | Ý nghĩa | Hành động điển hình |
|---|---|---|
| P1, khẩn cấp | Phải sửa ngay bây giờ | Bỏ công việc khác và xem xét một hotfix |
| P2, cao | Phải được sửa trước khi phát hành tiếp theo | Lịch trình trong sprint hiện tại |
| P3, trung bình | Nên sửa sớm | Đặt trong một cuộc chạy nước rút sắp tới |
| P4, thấp | Khắc phục khi có dung lượng | Giữ hồ sơ tồn đọng và thỉnh thoảng xem lại |
Viết ra ý nghĩa của từng cấp độ đối với nhóm của bạn, lý tưởng nhất là kèm theo thời gian phản hồi mục tiêu cho từng cấp độ. “P1 có nghĩa là ai đó sẽ bắt đầu trong vòng một giờ” hữu ích hơn nhiều so với “P1 có nghĩa là rất quan trọng”.
Bốn sự kết hợp, với các ví dụ
Cách rõ ràng nhất để hiểu điều này là xem xét từng sự kết hợp:
| Mức độ ưu tiên cao | Mức độ ưu tiên thấp | |
|---|---|---|
| Mức độ nghiêm trọng cao | Thanh toán không thành công đối với tất cả khách hàng trong quá trình bán hàng | Gặp sự cố khi xuất sang định dạng tệp mà hầu như không ai sử dụng |
| Mức độ nghiêm trọng thấp | Tên công ty bị sai chính tả trên trang chủ | Lỗi đánh máy trong bài viết trợ giúp cũ có ít người đọc |
Mức độ nghiêm trọng cao, mức độ ưu tiên cao
Mọi người đều không thể thanh toán, doanh nghiệp mất tiền từng phút và không có cách giải quyết nào. Đây là trường hợp hiển nhiên: bỏ mọi thứ và sửa nó.
Mức độ nghiêm trọng cao, mức độ ưu tiên thấp
Ứng dụng gặp sự cố khi xuất sang định dạng cũ. Về mặt kỹ thuật, đó là một thất bại nghiêm trọng. Nhưng nếu chỉ một phần nhỏ người dùng chạm tới tính năng này và định dạng hiện đại hoạt động tốt thì nó có thể chờ bản phát hành theo lịch trình.
Mức độ nghiêm trọng thấp, mức độ ưu tiên cao
Tên công ty bị sai chính tả trên trang chủ. Không có gì bị hỏng và không có dữ liệu nào gặp rủi ro. Tuy nhiên, mọi khách truy cập đều nhìn thấy nó, điều đó làm tổn hại đến lòng tin và nếu một buổi ra mắt lớn diễn ra vào ngày mai thì nó cần được sửa chữa ngay hôm nay.
Mức độ nghiêm trọng thấp, mức độ ưu tiên thấp
Một lỗi đánh máy nhỏ trong bài viết trợ giúp hiếm khi được truy cập. Hãy sửa nó khi thuận tiện. Nếu tồn đọng của bạn chứa đầy những thứ này, hãy cân nhắc việc gộp chúng thành một nhiệm vụ dọn dẹp.
Một lỗi, hai ưu tiên khác nhau
Cùng một khiếm khuyết có thể có mức độ ưu tiên khác nhau tùy thuộc vào ngữ cảnh. Giả sử email xác nhận đơn hàng gửi đi có logo sai.
| Bối cảnh | Mức độ nghiêm trọng | Ưu tiên |
|---|---|---|
| Công cụ nội bộ nhỏ | thứ yếu | P4 |
| Thương hiệu đại chúng vừa được đổi thương hiệu, có thông báo trong tuần này | thứ yếu | P1 hoặc P2 |
Mức độ nghiêm trọng không thay đổi vì tác động lên hệ thống là như nhau. Nhưng tình hình kinh doanh đã làm được. Thời gian cũng có thể thay đổi mọi thứ. Lỗi P3 hôm nay có thể trở thành P1 một tuần trước khi khách hàng lớn đi vào hoạt động.
Mẹo: Một số thay đổi về ngữ cảnh sẽ ảnh hưởng đến mức độ nghiêm trọng. Việc tính sai thuế có vẻ vừa phải cho đến khi bạn biết rằng chúng áp dụng cho tất cả hóa đơn, vì vậy hãy kiểm tra mức độ lan rộng của lỗi trước khi bạn giải quyết ở một mức độ nào đó.
Ai quyết định mức độ nghiêm trọng và ưu tiên?
- Người thử nghiệm thường đề xuất mức độ nghiêm trọng vì họ đã nhìn thấy hành vi và hiểu tác động lên hệ thống.
- Chủ sở hữu hoặc người quản lý sản phẩm thường quyết định mức độ ưu tiên vì họ cân nhắc khách hàng, doanh thu và lộ trình.
- Nhà phát triển thêm thông tin về nguyên nhân, rủi ro của việc khắc phục và thời gian thực hiện.
- Các nhóm hỗ trợ đưa ra bằng chứng về số lượng khách hàng bị ảnh hưởng và mức độ ảnh hưởng nặng nề như thế nào.
Các nguồn và nhóm khác nhau sẽ thực hiện những trách nhiệm này và trong một công ty khởi nghiệp nhỏ, một người có thể đảm nhận tất cả những việc đó. Điều quan trọng là mọi người đều biết ai là người đưa ra quyết định cuối cùng, vì vậy những bất đồng sẽ kết thúc bằng một quyết định.
Cách đánh giá một lỗi
Khi bạn không chắc chắn, hãy giải quyết những câu hỏi này.
Đối với mức độ nghiêm trọng:
- Nó có làm mất hoặc làm hỏng dữ liệu hoặc tiết lộ thông tin cá nhân không?
- Nó có ngăn chức năng chính hoạt động không?
- Có cách giải quyết nào không và người dùng bình thường có thể tìm thấy nó không?
- Bao nhiêu tính năng bị ảnh hưởng?
Về ưu tiên:
- Có bao nhiêu người dùng bị ảnh hưởng và những người dùng nào?
- Nó có tốn tiền hay tạo ra rủi ro pháp lý hoặc tuân thủ không?
- Sắp có đợt phát hành, demo hoặc giảm giá?
- Mức độ hiển thị của nó như thế nào và nó có thể gây tổn hại đến danh tiếng của bạn không?
- Nó có cản trở công việc khác, chẳng hạn như kiểm tra không?
Chạy phân loại lỗi
Phân loại là cuộc họp thường kỳ nơi một nhóm xem xét các lỗi mới và quyết định điều gì sẽ xảy ra tiếp theo. Một định dạng đơn giản hoạt động tốt:
- Chuẩn bị. Người kiểm tra đảm bảo rằng mỗi lỗi mới đều có các bước, bằng chứng rõ ràng và mức độ nghiêm trọng được đề xuất.
- Xác nhận. Kiểm tra xem nó có thể được sao chép và không phải là bản sao.
- Quyết định. Đồng ý về mức độ nghiêm trọng, đặt mức độ ưu tiên và chỉ định chủ sở hữu.
- Đóng vòng lặp. Từ chối, trì hoãn hoặc lên lịch cho từng lỗi và ghi lại lý do.
Giữ nó ngắn gọn và thường xuyên. Trong những ngày cuối cùng trước khi phát hành, việc phân loại 15 phút hàng ngày là điều phổ biến. Mức độ nghiêm trọng và mức độ ưu tiên cũng ảnh hưởng đến quyết định phát hành của bạn, vì vậy hãy đồng ý trước với các quy tắc, chẳng hạn như “không có lỗi S1 hoặc S2 nào khi phát hành”, như một phần trong tiêu chí thoát của bạn.
Mức độ nghiêm trọng và mức độ ưu tiên trong báo cáo lỗi
Mục ngắn gọn, rõ ràng giúp mọi người đưa ra quyết định đúng đắn:
Title: Checkout returns error 500 when a coupon is applied
Severity: S1 - blocks purchase, no workaround
Priority: P1 proposed - sale starts Friday
Build: 2.14.0, production
Reach: All customers using a coupon (around 30% of orders)
Steps: 1. Add an item 2. Apply SAVE10 3. Click Pay
Result: Error 500 and no order is created
Expected: Order is created with the discount applied
Những con số đó là ví dụ. Trong một báo cáo thực tế, hãy sử dụng các số đo được từ nhật ký của bạn và giải thích lý do của bạn. Tìm hiểu thêm trong hướng dẫn của chúng tôi về cách viết báo cáo lỗi. Việc này cũng giúp bạn biết ý nghĩa của các mã lỗi, vì vậy, hãy chuẩn bị sẵn bảng ghi chú về mã trạng thái HTTP của chúng tôi.
Những lỗi thường gặp
- Xử lý chúng như cùng một trường. Nếu cả hai luôn khớp nhau, bạn đang mất đi thông tin hữu ích.
- Thổi phồng mức độ nghiêm trọng để thu hút sự chú ý. Một khi mọi thứ đều quan trọng thì chẳng có gì quan trọng cả.
- Để người thử nghiệm tự mình đặt mức độ ưu tiên. Họ hiếm khi có được bức tranh toàn cảnh về doanh nghiệp.
- Không bao giờ xem xét các hồ sơ tồn đọng. Các ưu tiên đã cũ, vì vậy hãy thường xuyên kiểm tra lại các lỗi cũ.
- Không có định nghĩa bằng văn bản. Không có chúng, mọi người áp dụng các nhãn khác nhau và cuối cùng bạn phải tranh luận về các từ.
- Bỏ qua các vấn đề chồng chất ở mức độ nghiêm trọng thấp. Năm mươi vấn đề nhỏ có thể khiến sản phẩm có cảm giác bị hỏng, ngay cả khi chỉ riêng vấn đề đó không nghiêm trọng.
Lời kết
Hãy tách biệt hai câu hỏi: nó tệ đến mức nào và phải sửa chữa trong bao lâu? Thống nhất về các định nghĩa bằng văn bản cho từng cấp độ và nêu rõ ai là người quyết định. Bước tiếp theo, hãy lấy mười lỗi lâu đời nhất trong trình theo dõi của bạn và đánh giá lại chúng bằng cách sử dụng các câu hỏi ở trên. Bạn có thể sẽ tìm thấy một số thứ nên di chuyển và một số thứ nên đóng lại.
Câu hỏi thường gặp
Sự khác biệt giữa mức độ nghiêm trọng và mức độ ưu tiên là gì?
Mức độ nghiêm trọng là mức độ một lỗi gây hại cho hệ thống. Ưu tiên là mức độ khẩn cấp cần được khắc phục. Một là về tác động kỹ thuật, và hai là về tính cấp thiết trong kinh doanh.
Một lỗi có thể có mức độ nghiêm trọng thấp và mức độ ưu tiên cao không?
Đúng. Tên công ty viết sai chính tả trên trang chủ không ảnh hưởng gì nhưng nó rất dễ thấy, vì vậy một nhóm có thể muốn sửa nó ngay lập tức.
Một lỗi có thể có mức độ nghiêm trọng cao và mức độ ưu tiên thấp không?
Đúng. Sự cố xảy ra trong một tính năng cũ hiếm khi được sử dụng là nghiêm trọng về mặt kỹ thuật nhưng với ít người dùng bị ảnh hưởng và một giải pháp thay thế tốt, điều này có thể chờ đợi.
Ai đặt ra mức độ nghiêm trọng và ưu tiên?
Người kiểm tra thường đề xuất mức độ nghiêm trọng và chủ sở hữu sản phẩm hoặc người quản lý thường quyết định mức độ ưu tiên. Nhiều nhóm cùng nhau hoàn thiện cả hai trong cuộc họp phân loại lỗi.
Cái nào cần được sửa trước, mức độ nghiêm trọng cao hay mức độ ưu tiên cao?
Sửa theo thứ tự ưu tiên, vì mức độ ưu tiên là yếu tố quyết định hàng đợi. Tuy nhiên, mức độ nghiêm trọng là một thông tin đầu vào quan trọng nên các lỗi nghiêm trọng thường được ưu tiên cao.
Tiếp tục học hỏi
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.
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.
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 →DevOpsGiả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ềmGiả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ềmGiả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 & SQLDELETE 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 & SQLGiả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ềmGiao 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ềmGiả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ềmHà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 →DevOpsGiá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 →DevOpsDocker 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ềmKiể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 & SQLGiả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 & SQLCâ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ềmJWT 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ềmGiả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ềmGiả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ạoNhú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 →DevOpsTriể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ềmKiể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ềmTrườ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 & SQLTố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 & SQLSQL 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ềmHướ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ềmXử 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ềmCá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ạoMô 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 →DevOpsCá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ềmPhâ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ềmMứ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 & SQLHướ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 & SQLGiả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ềmGit 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ềmList 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 & SQLGiả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 →