Kiểm tra sự 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ế
Phần mềm có thể vượt qua mọi bài kiểm tra nhưng vẫn làm thất vọng những người cần nó. UAT là bước kiểm tra cuối cùng xem nó có giải quyết được vấn đề kinh doanh thực sự hay không. Tìm hiểu ai nên chạy nó, cách lập kế hoạch và khi nào đăng xuất.
- Thử nghiệm chấp nhận của người dùng kiểm tra xem phần mềm có đáp ứng nhu cầu kinh doanh thực tế hay không bằng cách sử dụng các tình huống thực tế.
- Nó được điều hành bởi người dùng doanh nghiệp hoặc khách hàng chứ không phải bởi nhóm xây dựng phần mềm.
- QA hỏi “nó có hoạt động như được chỉ định không?”, trong khi UAT hỏi “nó có giải quyết được vấn đề không?”.
- Thống nhất về tiêu chí đầu vào, tiêu chí đầu ra và ai đăng xuất trước khi UAT bắt đầu.
Một nhóm đã từng cung cấp một hệ thống chi phí vượt qua mọi bài kiểm tra kỹ thuật. Vào ngày đầu tiên, nhóm tài chính phát hiện ra rằng họ không thể xử lý các yêu cầu bồi thường bằng nhiều loại tiền tệ, vốn chiếm phần lớn công việc của họ. Không có gì bị “hỏng”, nhưng nó không thể sử dụng được. Thử nghiệm chấp nhận của người dùng tồn tại để nắm bắt chính xác loại khoảng trống đó trước khi ra mắt.
Hướng dẫn này trình bày UAT khác với các thử nghiệm khác như thế nào, cách chạy từng bước và cách quyết định khi nào bạn sẵn sàng phát hành. Tình huống trên và các ví dụ dưới đây chỉ mang tính minh họa và quy trình này phải được điều chỉnh theo tỷ lệ cho phù hợp với dự án của bạn.
UAT là gì?
UAT thường là giai đoạn thử nghiệm cuối cùng trước khi phát hành, trong đó người dùng dự định xác nhận rằng phần mềm có thể thực hiện công việc của họ trong điều kiện thực tế. Nó còn được gọi là thử nghiệm người dùng cuối hoặc thử nghiệm chấp nhận. Nó xuất hiện sau quá trình phát triển và thử nghiệm hệ thống, khi sản phẩm được kỳ vọng sẽ ổn định.
Mục đích của nó không phải là tìm ra mọi lỗi. Đến giai đoạn này, hầu hết những thứ đó đã biến mất. Mục đích là xác nhận: chúng ta đã xây dựng đúng thứ chưa? Người kiểm tra xác minh rằng sản phẩm phù hợp với đặc điểm kỹ thuật. UAT xác nhận rằng đặc điểm kỹ thuật và sản phẩm thực sự đáp ứng được nhu cầu.
Kiểm tra UAT và QA
| Khía cạnh | QA hoặc kiểm tra hệ thống | UAT |
|---|---|---|
| Câu hỏi chính | Nó có hoạt động như được chỉ định không? | Nó có đáp ứng được nhu cầu kinh doanh không? |
| Thực hiện bởi | Người kiểm tra và kỹ sư QA | Người dùng doanh nghiệp hoặc khách hàng |
| Thời gian | Trong và sau khi phát triển | Ngay trước khi phát hành |
| Dựa trên | Yêu cầu và thiết kế | Quy trình làm việc kinh doanh thực tế |
| Tập trung | Khiếm khuyết, trường hợp khó khăn, tích hợp | Khả năng sử dụng và phù hợp với mục đích |
| Kiến thức kỹ thuật | Thường cao | Không cần thiết |
| kết quả | Báo cáo lỗi | Chấp nhận hoặc từ chối |
UAT không thay thế các thử nghiệm khác. Nếu người dùng tiếp tục gặp phải các lỗi cơ bản thì bản dựng chưa sẵn sàng và bạn đang lãng phí thời gian có hạn của họ. Những vấn đề đó thuộc về các cấp độ kiểm tra trước đó và thử nghiệm hồi quy.
Ai điều hành UAT?
| Vai trò | Trách nhiệm |
|---|---|
| Người dùng cuối | Chạy kịch bản và đưa ra phản hồi |
| Chủ sở hữu sản phẩm hoặc nhà phân tích kinh doanh | Xác định phạm vi và viết hoặc đánh giá các kịch bản |
| Điều phối viên UAT hoặc trưởng nhóm QA | Lập kế hoạch các phiên, hỗ trợ người thử nghiệm, theo dõi các vấn đề |
| Nhà phát triển | Khắc phục sự cố và trả lời các câu hỏi kỹ thuật |
| Nhà tài trợ kinh doanh | Đưa ra quyết định đăng xuất cuối cùng |
Chọn những người thử nghiệm thực sự làm việc ngay hôm nay. Người xử lý khiếu nại có kinh nghiệm sẽ phát hiện ra các vấn đề mà người quản lý hoặc người được ủy quyền không bao giờ gặp phải. Bao gồm nhiều kinh nghiệm, bởi vì một nhân viên mới thường tiết lộ những bước khó hiểu mà một chuyên gia làm việc mà không để ý. Và hãy đảm bảo rằng người quản lý của họ dành thời gian cho việc này, vì UAT không thể thành công khi khối lượng công việc đầy ắp.
Các loại UAT
| Loại | Nó kiểm tra những gì | Ví dụ |
|---|---|---|
| Chấp nhận kinh doanh | Đáp ứng mục tiêu kinh doanh | Nhân viên hoàn thành một yêu cầu thực tế từ đầu đến cuối |
| Thử nghiệm alpha | Thử nghiệm nội bộ trong môi trường được kiểm soát | Nhân viên dùng thử ứng dụng mới trước người dùng bên ngoài |
| Thử nghiệm beta | Khách hàng thực trong điều kiện thực | Bản xem trước công khai có giới hạn |
| Chấp nhận hợp đồng | Đáp ứng các điều khoản hợp đồng đã thỏa thuận | Một khách hàng xác minh một hệ thống được phân phối |
| Chấp nhận theo quy định | Đáp ứng các quy tắc pháp lý hoặc tuân thủ | Kiểm tra các quy định về chăm sóc sức khỏe hoặc ngân hàng |
| Chấp nhận vận hành | Sẵn sàng đưa vào sản xuất | Quy trình sao lưu, giám sát và hỗ trợ |
Quy trình UAT bảy bước
1. Xác định phạm vi và mục tiêu
Quyết định những gì đang được chấp nhận, những gì nằm ngoài phạm vi và những kết quả kinh doanh nào là quan trọng. Ví dụ: “Nhân viên tài chính có thể gửi, phê duyệt và thanh toán yêu cầu chi phí bằng bất kỳ loại tiền tệ nào được hỗ trợ.”
2. Thống nhất tiêu chí chấp nhận
Viết ra bằng ngôn ngữ đơn giản về thành công trông như thế nào, lý tưởng nhất là vào thời điểm bắt đầu dự án thay vì một tuần trước khi khởi động. Tiêu chí mơ hồ dẫn đến tranh luận sau này.
3. Chọn và tóm tắt người thử nghiệm
Chọn người dùng thực sự, giải thích mục đích, chỉ cho họ cách ghi lại phản hồi và nói rõ rằng họ đang thử nghiệm phần mềm chứ không phải tự mình thử nghiệm. Nhiều người lo lắng về việc có điều gì đó không ổn.
4. Chuẩn bị môi trường và dữ liệu
Môi trường UAT phải giống với môi trường sản xuất nhất có thể trong thực tế. Sử dụng dữ liệu thực tế, thiết lập vai trò người dùng chính xác và kiểm tra các tiện ích tích hợp như email. Nếu bạn sao chép dữ liệu sản xuất, trước tiên hãy che giấu thông tin cá nhân. Chạy thử nghiệm khói nhanh chóng để người kiểm tra không đến và phát hiện bản dựng bị hỏng.
5. Viết kịch bản
Dựa trên những quy trình công việc thực tế hơn là các nút riêng lẻ. Họ nên đọc như công việc chứ không phải như phần mềm. Hướng dẫn của chúng tôi về trường hợp kiểm thử và kịch bản kiểm thử giải thích mức độ chi tiết bạn cần.
6. Chạy thử nghiệm và thu thập phản hồi
Chạy các phiên với người sẵn sàng trợ giúp. Thu thập các vấn đề ở một nơi bằng ảnh chụp màn hình. Hãy dành chút thời gian để khám phá miễn phí vì mọi người sẽ thử những thứ mà kịch bản không bao giờ lường trước được. Thử nghiệm thăm dò cung cấp các kỹ thuật hữu ích cho việc này.
7. Sửa lỗi, kiểm tra lại và ký duyệt
Phân loại phản hồi, khắc phục những vấn đề quan trọng và yêu cầu những người dùng tương tự xác nhận các bản sửa lỗi. Sau đó ghi lại một quyết định chính thức.
Một trường hợp thử nghiệm UAT
Trường hợp thử nghiệm UAT phải dễ dàng cho những người không có chuyên môn về kỹ thuật theo dõi. Dưới đây là một ví dụ về hệ thống chi phí:
ID: UAT-012
Scenario: Submit a foreign currency expense claim
User role: Sales employee
Before: Logged in, with a USD receipt ready
Steps:
1. Create a new expense claim
2. Enter a client dinner of 80 USD and attach the receipt
3. Submit the claim for approval
Expected: The amount is converted to INR at the current rate
The manager receives an approval request
The claim shows as "Awaiting approval"
Result: Pass / Fail
Comments:
Tester / Date:
Lưu ý rằng nó mô tả một nhiệm vụ thực tế chứ không phải các chi tiết kỹ thuật và có chỗ cho các nhận xét. Những nhận xét đó thường trở thành phần có giá trị nhất, chẳng hạn như “cái này hoạt động được, nhưng tôi sẽ không bao giờ tìm thấy nút đó”.
Mẹo: Hãy xem ít nhất một người dùng thực hiện việc này trực tiếp hoặc trong cuộc gọi. Mọi người thường làm việc xung quanh phần mềm khó hiểu và không bao giờ báo cáo về nó. Việc nhìn thấy họ do dự sẽ cho bạn biết nhiều điều hơn là việc “Đạt”.
Tiêu chí vào và ra
| Tiêu chí đầu vào (sẵn sàng bắt đầu) | Tiêu chí thoát (sẵn sàng kết thúc) |
|---|---|
| Kiểm tra hệ thống đã hoàn tất | Tất cả các kịch bản quan trọng đã được chạy |
| Không có lỗi nghiêm trọng hoặc lỗi cao | Không có lỗi nghiêm trọng mở |
| Môi trường và dữ liệu đã sẵn sàng | Đã đạt được tỷ lệ đậu đồng ý |
| Các kịch bản được xem xét | Các vấn đề còn lại đã có kế hoạch thống nhất |
| Người kiểm tra được thông báo ngắn gọn và có sẵn | Nhà tài trợ doanh nghiệp đã ký kết |
Những điều này phù hợp với vòng đời kiểm thử phần mềm rộng hơn. Đặt trước các con số với các bên liên quan của bạn. “Chúng tôi sẽ quyết định khi nào thấy phù hợp” có xu hướng dẫn đến sự đồng ý vội vàng do bị thúc đẩy bởi thời hạn.
Xử lý phản hồi
Phản hồi UAT là sự kết hợp của nhiều thứ và không phải tất cả đều là lỗi. Sắp xếp nó thành các loại:
| Loại | Ví dụ | Hành động thông thường |
|---|---|---|
| khiếm khuyết | Tổng số được tính sai | Khắc phục, dựa trên mức độ nghiêm trọng |
| Yêu cầu bị thiếu | Đa tiền tệ không được hỗ trợ | Khắc phục trước khi ra mắt hoặc lên kế hoạch lại |
| Vấn đề về khả năng sử dụng | Người dùng không thể tìm thấy nút gửi | Thường đáng sửa |
| Thay đổi yêu cầu | “Nó cũng có thể xuất sang PDF phải không?” | Thêm vào tồn đọng |
| Vấn đề đào tạo | Tính năng này hoạt động nhưng bị hiểu nhầm | Cập nhật hướng dẫn |
Sử dụng các quy tắc rõ ràng về những gì ngăn chặn một bản phát hành, như được mô tả trong mức độ nghiêm trọng so với mức độ ưu tiên. Và trả lời mọi mục, kể cả những mục bạn từ chối. Mọi người ngừng đưa ra phản hồi nếu nó dường như biến mất. Hướng dẫn của chúng tôi về cách viết báo cáo lỗi có thể giúp người kiểm tra mô tả vấn đề một cách rõ ràng.
Danh sách kiểm tra UAT
Trước UAT
- Phạm vi và tiêu chí chấp nhận được thỏa thuận bằng văn bản
- Kiểm tra hệ thống và hồi quy đã hoàn tất
- Người thử nghiệm được lựa chọn, thông báo ngắn gọn và cho thời gian
- Môi trường, tài khoản và dữ liệu thực tế đã sẵn sàng
- Dữ liệu cá nhân trong các bản sao đã bị che giấu
- Các kịch bản được doanh nghiệp xem xét
- Một nơi để ghi lại các vấn đề được thiết lập
- Chủ sở hữu đăng xuất được đặt tên
Trong UAT
- Một liên hệ hỗ trợ có sẵn
- Các vấn đề được xử lý mỗi ngày
- Tiến độ được chia sẻ với các bên liên quan
- Các bản sửa lỗi được triển khai và kiểm tra lại một cách có kiểm soát
Sau UAT
- Tiêu chí thoát đã được kiểm tra
- Các vấn đề đã biết được ghi lại, với chủ sở hữu
- Việc phê duyệt chính thức được ghi lại
- Ghi chú đào tạo và phát hành được cập nhật
- Một cuộc hồi tưởng ngắn đã được tổ chức
UAT trong nhóm Agile
UAT truyền thống xuất hiện như một giai đoạn lớn ở cuối, nơi gây bất ngờ sẽ tốn kém. Các đội linh hoạt rút ngắn vòng lặp đó. Chủ sở hữu sản phẩm xem xét từng câu chuyện theo tiêu chí chấp nhận của nó trong giai đoạn chạy nước rút và người dùng sẽ thấy phần mềm đang hoạt động trong các buổi đánh giá chạy nước rút. Nhiều nhóm vẫn chạy UAT tập trung trước khi phát hành chính, đặc biệt khi một số tính năng kết hợp thành một quy trình làm việc.
Với các bản phát hành thường xuyên, các kỹ thuật như cờ tính năng và triển khai canary cho phép người dùng thực sự thử tác phẩm mới dần dần. Lưu ý rằng những thử nghiệm chấp nhận này bổ sung nhưng chúng không tự động thay thế nó, đặc biệt là trong các ngành được quản lý cần hồ sơ chính thức.
Những lỗi thường gặp
- Coi nó như một hình thức. Việc đăng xuất mà không có mục đích sử dụng thực sự sẽ bảo vệ không ai.
- Sử dụng sai người kiểm tra. Nhà phát triển và QA có quá nhiều kiến thức về hệ thống để đại diện cho người dùng.
- Bắt đầu với bản dựng không ổn định. Người thử nghiệm nhanh chóng mất niềm tin và sự quan tâm.
- Hãy để nó đến phút cuối cùng. Khi đó sẽ không có thời gian để sửa những gì bạn đã học.
- Sử dụng dữ liệu không thực tế. Dữ liệu thử nghiệm hiếm khi có những trường hợp lộn xộn như công việc thực tế.
- Để phạm vi phát triển. Hãy coi những ý tưởng mới như những yêu cầu thay đổi, trừ khi chúng thực sự là những trở ngại.
Lời kết
UAT là cơ hội cuối cùng để bạn tìm hiểu, trước khi phát hành, liệu phần mềm có thực sự giúp ích cho những người sẽ sử dụng nó hay không. Lập kế hoạch ngay từ khi bắt đầu dự án, tuyển dụng người dùng thực và thống nhất về mức độ thành công. Đối với bản phát hành tiếp theo của bạn, hãy thử một thay đổi đơn giản: ngồi cùng một người dùng trong một tình huống thực tế và không nói gì trong khi họ làm việc.
Câu hỏi thường gặp
Nói một cách đơn giản, thử nghiệm chấp nhận của người dùng là gì?
Đây là lần kiểm tra cuối cùng trong đó người dùng thực dùng thử phần mềm với các tác vụ thực tế để xác nhận rằng phần mềm đáp ứng nhu cầu của họ trước khi phần mềm được phát hành.
Ai chịu trách nhiệm về UAT?
Người dùng doanh nghiệp hoặc khách hàng chạy thử nghiệm. Chủ sở hữu sản phẩm hoặc trưởng nhóm QA thường điều phối và nhà tài trợ doanh nghiệp thường đưa ra quyết định phê duyệt cuối cùng.
Sự khác biệt giữa UAT và thử nghiệm hệ thống là gì?
Kiểm tra hệ thống kiểm tra xem phần mềm có hoạt động như được chỉ định hay không và được thực hiện bởi người kiểm tra. UAT kiểm tra xem nó có đáp ứng nhu cầu kinh doanh và được thực hiện bởi người dùng hay không.
UAT xảy ra khi nào?
Thông thường sau khi kiểm tra hệ thống và trước khi phát hành sản phẩm, khi phần mềm đã ổn định. Các nhóm linh hoạt cũng có thể thực hiện các bước kiểm tra chấp nhận nhỏ hơn trong mỗi lần chạy nước rút.
UAT có thể được tự động hóa không?
Các phần của nó, chẳng hạn như kiểm tra lặp đi lặp lại quy trình công việc kinh doanh. Tuy nhiên, việc đánh giá phần mềm có hữu ích và phù hợp với mục đích hay không vẫn cần đến con người thực sự.
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 →