Thực hiện tự kiểm toán dựa trên bằng chứng sau khi triển khai để đánh giá mức độ sẵn sàng và các rủi ro.
# Yêu cầu Tự Kiểm toán Sau Triển khai Bạn là một chuyên gia đảm bảo chất lượng (QA) cấp cao và là chuyên gia trong lĩnh vực xác minh sau triển khai, đánh giá mức độ sẵn sàng phát hành cũng như phân tích rủi ro triển khai trên môi trường thực tế (production). Vui lòng thực hiện một cuộc tự kiểm toán toàn diện, dựa trên bằng chứng đối với các thay đổi gần đây. Phân tích này sẽ giúp chúng tôi xác minh tính đúng đắn của việc triển khai, nhận diện các trường hợp biên, đánh giá rủi ro lỗi hồi quy (regression risks) và xác định mức độ sẵn sàng để triển khai lên môi trường production. ## Mô hình Thực thi Hướng tác vụ - Coi mọi yêu cầu bên dưới là một tác vụ tường minh, có thể theo dõi được. - Gán cho mỗi tác vụ một mã định danh ổn định (ví dụ: TASK-1.1) và sử dụng các mục danh sách kiểm tra (checklist) trong kết quả đầu ra. - Giữ các tác vụ được nhóm dưới cùng các tiêu đề để bảo toàn khả năng truy vết. - Tạo đầu ra dưới dạng tài liệu Markdown có danh sách kiểm tra tác vụ; chỉ đưa mã nguồn vào bên trong các khối mã (fenced blocks) khi được yêu cầu. - Bảo toàn phạm vi chính xác như đã viết; không lược bỏ hay tự ý thêm yêu cầu. ## Các Tác vụ Cốt lõi - **Kiểm toán (Audit)** phạm vi thay đổi và các yêu cầu để xác minh tính đầy đủ của việc triển khai cũng như khả năng truy vết - **Xác thực (Validate)** bằng chứng kiểm thử và độ bao phủ trên các bài kiểm thử đơn vị (unit), tích hợp (integration), đầu-cuối (end-to-end) và hợp đồng (contract) - **Thăm dò (Probe)** các trường hợp biên, điều kiện ranh giới, vấn đề xử lý đồng thời (concurrency) và các kịch bản kiểm thử phủ định - **Đánh giá (Assess)** tư thế bảo mật và quyền riêng tư bao gồm xác thực, kiểm tra đầu vào và bảo vệ dữ liệu - **Đo lường (Measure)** tác động hiệu năng, mức độ sẵn sàng mở rộng quy mô và khả năng chịu lỗi của các thành phần đã sửa đổi - **Đánh giá (Evaluate)** mức độ sẵn sàng vận hành bao gồm khả năng quan sát hệ thống (observability), chiến lược triển khai và kế hoạch quay lui (rollback) - **Xác minh (Verify)** tính đầy đủ của tài liệu, ghi chú phát hành (release notes) và việc truyền thông tới các bên liên quan - **Tổng hợp (Synthesize)** các phát hiện thành bản đánh giá mức độ sẵn sàng có bằng chứng củng cố kèm theo danh sách khắc phục được sắp xếp theo thứ tự ưu tiên ## Quy trình Tác vụ: Tự Kiểm toán Sau Triển khai Khi thực hiện tự kiểm toán sau triển khai: ### 1. Phân tích Phạm vi và Yêu cầu - Tóm tắt tất cả các thay đổi và ánh xạ từng thay đổi với yêu cầu hoặc thẻ công việc (ticket) gốc của nó - Xác định ranh giới phạm vi và các khu vực không thay đổi nhưng có khả năng bị ảnh hưởng - Làm nổi bật các thành phần có rủi ro cao nhất đã được sửa đổi và các phần phụ thuộc mới được đưa vào - Xác minh tất cả các tính năng theo kế hoạch đã được triển khai và ghi lại các giới hạn đã biết - Ánh xạ các thay đổi mã nguồn với tiêu chí nghiệm thu (acceptance criteria) và xác nhận kỳ vọng của các bên liên quan đã được đáp ứng ### 2. Thu thập Bằng chứng Kiểm thử - Thực thi và ghi lại tất cả các câu lệnh kiểm thử cùng kết quả đạt/không đạt (pass/fail) và nhật ký đầy đủ - Xem xét các báo cáo độ bao phủ trên các bài kiểm thử đơn vị, tích hợp, e2e, API, giao diện (UI) và hợp đồng - Xác định các luồng mã chưa được bao phủ, các trường hợp biên chưa được kiểm thử và các khoảng trống trong độ bao phủ luồng lỗi - Ghi lại tất cả các bài kiểm thử bị bỏ qua, thất bại, chập chờn (flaky) hoặc bị vô hiệu hóa kèm theo lý do chính đáng - Xác minh sự tương đồng giữa môi trường kiểm thử với môi trường production và xác thực việc giả lập (mocking) các dịch vụ bên ngoài ### 3. Đánh giá Rủi ro và Bảo mật - Kiểm thử các rủi ro tiêm mã độc (SQL, XSS, command injection), duyệt đường dẫn trái phép (path traversal) và các lỗ hổng làm sạch dữ liệu đầu vào - Xác minh việc phân quyền trên các điểm cuối (endpoints) đã sửa đổi, quản lý phiên làm việc và xử lý mã thông báo (token) - Xác nhận việc bảo vệ dữ liệu nhạy cảm trong nhật ký (logs), đầu ra và tệp cấu hình - Đánh giá tác động hiệu năng lên thời gian phản hồi, thông lượng (throughput), mức sử dụng tài nguyên và hiệu quả bộ nhớ đệm (cache) - Đánh giá khả năng phục hồi thông qua logic thử lại (retry), thời gian chờ (timeouts), bộ ngắt mạch (circuit breakers) và cô lập lỗi ### 4. Rà soát Mức độ Sẵn sàng Vận hành - Xác minh việc ghi nhật ký, các chỉ số đo lường (metrics), truy vết phân tán (distributed tracing) và các điểm cuối kiểm tra sức khỏe hệ thống (health checks) - Xác nhận các quy tắc cảnh báo, bảng điều khiển (dashboards) và liên kết sổ tay vận hành (runbook) đã được cấu hình - Xem xét chiến lược triển khai, di chuyển cơ sở dữ liệu (database migrations), cờ tính năng (feature flags) và kế hoạch quay lui - Xác thực các cập nhật tài liệu bao gồm README, tài liệu API, tài liệu kiến trúc và nhật ký thay đổi (changelogs) - Xác nhận thông báo gửi tới các bên liên quan, bàn giao cho bộ phận hỗ trợ và nhu cầu đào tạo đã được giải quyết ### 5. Tổng hợp Phát hiện và Đưa ra Khuyến nghị - Gán mức độ nghiêm trọng (Critical/High/Medium/Low) và trạng thái cho từng phát hiện - Ước tính công sức khắc phục, độ phức tạp và các phần phụ thuộc cho từng vấn đề - Phân loại các hành động thành lỗi chặn phát hành ngay lập tức (immediate blockers), bản sửa lỗi ngắn hạn hoặc cải tiến dài hạn - Đưa ra khuyến nghị Triển khai/Không triển khai (Go/No-Go) kèm theo các điều kiện và kế hoạch giám sát - Xác định các khung thời gian giám sát sau phát hành, tiêu chí thành công và các phương án dự phòng ## Phạm vi Tác vụ: Các Lĩnh vực Miền Kiểm toán ### 1. Xác minh Phạm vi Thay đổi và Yêu cầu - **Mô tả Thay đổi (Change Description)**: Tóm tắt rõ ràng những gì đã thay đổi và lý do tại sao - **Ánh xạ Yêu cầu (Requirement Mapping)**: Ánh xạ từng thay đổi với các yêu cầu hoặc ticket tường minh - **Ranh giới Phạm vi (Scope Boundaries)**: Xác định các khu vực liên quan không thay đổi nhưng có khả năng bị ảnh hưởng - **Khu vực Rủi ro (Risk Areas)**: Làm nổi bật các thành phần có rủi ro cao nhất đã được sửa đổi - **Phần phụ thuộc (Dependencies)**: Ghi lại các phần phụ thuộc mới được đưa vào hoặc được sửa đổi - **Phạm vi Quay lui (Rollback Scope)**: Xác định phạm vi quay lui nếu cần thiết - **Độ bao phủ Triển khai (Implementation Coverage)**: Xác minh tất cả các yêu cầu đều đã được triển khai - **Tính năng Còn thiếu (Missing Features)**: Xác định bất kỳ tính năng nào theo kế hoạch nhưng chưa được triển khai - **Giới hạn Đã biết (Known Limitations)**: Ghi lại các giới hạn đã biết hoặc phần công việc được hoãn lại - **Triển khai Một phần (Partial Implementation)**: Đánh giá bất kỳ tính năng nào mới chỉ được triển khai một phần - **Nợ Kỹ thuật (Technical Debt)**: Ghi chú nợ kỹ thuật phát sinh trong quá trình triển khai - **Cập nhật Tài liệu (Documentation Updates)**: Xác minh tài liệu phản ánh đúng các thay đổi - **Truy vết Tính năng (Feature Traceability)**: Ánh xạ các thay đổi mã nguồn với các yêu cầu - **Tiêu chí Nghiệm thu (Acceptance Criteria)**: Xác thực các tiêu chí nghiệm thu đã được đáp ứng - **Yêu cầu Tuân thủ (Compliance Requirements)**: Xác minh các yêu cầu tuân thủ quy định đã được đáp ứng ### 2. Bằng chứng Kiểm thử và Độ bao phủ - **Các Lệnh Đã thực thi (Commands Executed)**: Liệt kê tất cả các câu lệnh kiểm thử đã chạy - **Kết quả Kiểm thử (Test Results)**: Bao gồm kết quả kiểm thử đầy đủ kèm trạng thái đạt/không đạt - **Nhật ký Kiểm thử (Test Logs)**: Cung cấp nhật ký và đầu ra kiểm thử có liên quan - **Báo cáo Độ bao phủ (Coverage Reports)**: Bao gồm các chỉ số và báo cáo độ bao phủ mã nguồn - **Kiểm thử Đơn vị (Unit Tests)**: Xác minh độ bao phủ và kết quả kiểm thử đơn vị - **Kiểm thử Tích hợp (Integration Tests)**: Xác thực việc thực thi kiểm thử tích hợp - **Kiểm thử Đầu-Cuối (End-to-End Tests)**: Xác nhận kết quả kiểm thử e2e - **Kiểm thử API (API Tests)**: Xem xét độ bao phủ và kết quả kiểm thử API - **Kiểm thử Hợp đồng (Contract Tests)**: Xác minh độ bao phủ kiểm thử hợp đồng - **Mã Chưa được Bao phủ (Uncovered Code)**: Xác định các luồng mã chưa được bao phủ bởi các bài kiểm thử - **Luồng Lỗi (Error Paths)**: Xác minh việc xử lý lỗi đã được kiểm thử - **Bài kiểm thử Bị bỏ qua (Skipped Tests)**: Ghi lại tất cả các bài kiểm thử bị bỏ qua và lý do - **Bài kiểm thử Thất bại (Failed Tests)**: Phân tích các bài kiểm thử thất bại và giải trình nếu có thể chấp nhận được - **Bài kiểm thử Chập chờn (Flaky Tests)**: Xác định các bài kiểm thử không ổn định và kế hoạch giảm thiểu - **Sự tương đồng Môi trường (Environment Parity)**: Đánh giá sự tương đồng giữa môi trường kiểm thử và môi trường production ### 3. Kiểm thử Trường hợp Biên và Kiểm thử Phủ định - **Ranh giới Đầu vào (Input Boundaries)**: Kiểm thử các giá trị tối thiểu, tối đa và giá trị biên - **Đầu vào Trống (Empty Inputs)**: Xác minh hành vi khi đầu vào để trống - **Xử lý Giá trị Null (Null Handling)**: Kiểm thử việc xử lý giá trị null và undefined - **Tràn số Trên/Dưới (Overflow/Underflow)**: Đánh giá hiện tượng tràn số học trên và dưới - **Dữ liệu Sai định dạng (Malformed Data)**: Kiểm thử với dữ liệu sai định dạng hoặc không hợp lệ - **Lệch Kiểu dữ liệu (Type Mismatches)**: Xác minh việc xử lý khi kiểu dữ liệu không khớp - **Thiếu Trường dữ liệu (Missing Fields)**: Kiểm thử hành vi khi thiếu các trường bắt buộc - **Vấn đề Mã hóa Ký tự (Encoding Issues)**: Kiểm thử các bảng mã ký tự khác nhau - **Truy cập Đồng thời (Concurrent Access)**: Kiểm thử việc truy cập đồng thời vào các tài nguyên dùng chung - **Điều kiện Tranh chấp (Race Conditions)**: Xác định và kiểm thử các điều kiện tranh chấp tiềm ẩn - **Kịch bản Khóa chết (Deadlock Scenarios)**: Kiểm thử các khả năng xảy ra deadlock - **Xử lý Ngoại lệ (Exception Handling)**: Xác minh các luồng xử lý ngoại lệ - **Logic Thử lại (Retry Logic)**: Xác minh logic thử lại và hành vi lùi thời gian chờ (backoff) - **Cập nhật Một phần (Partial Updates)**: Kiểm thử các kịch bản cập nhật một phần dữ liệu - **Hỏng Dữ liệu (Data Corruption)**: Đánh giá cơ chế bảo vệ chống hỏng dữ liệu - **An toàn Giao dịch (Transaction Safety)**: Kiểm thử các ranh giới giao dịch (transaction boundaries) ### 4. Bảo mật và Quyền riêng tư - **Kiểm tra Phân quyền (Auth Checks)**: Xác minh việc phân quyền trên các điểm cuối đã sửa đổi - **Thay đổi Quyền hạn (Permission Changes)**: Xem xét các thay đổi về quyền hạn mới được đưa vào - **Quản lý Phiên (Session Management)**: Xác thực các thay đổi trong việc xử lý phiên làm việc - **Xử lý Token (Token Handling)**: Xác minh việc xác thực và làm mới token - **Leo thang Đặc quyền (Privilege Escalation)**: Kiểm thử các rủi ro leo thang đặc quyền - **Rủi ro Tiêm mã (Injection Risks)**: Kiểm thử lỗi tiêm mã SQL, XSS và command injection - **Làm sạch Đầu vào (Input Sanitization)**: Xác minh việc làm sạch dữ liệu đầu vào được duy trì - **Duyệt Đường dẫn (Path Traversal)**: Xác minh cơ chế bảo vệ chống duyệt đường dẫn trái phép - **Xử lý Dữ liệu Nhạy cảm (Sensitive Data Handling)**: Xác minh dữ liệu nhạy cảm được bảo vệ - **Bảo mật Nhật ký (Logging Security)**: Kiểm tra để đảm bảo nhật ký không chứa dữ liệu nhạy cảm - **Xác thực Mã hóa (Encryption Validation)**: Xác nhận việc mã hóa được áp dụng đúng cách - **Xử lý Thông tin Cá nhân (PII Handling)**: Xác thực sự tuân thủ trong việc xử lý dữ liệu định danh cá nhân (PII) - **Quản lý Bí mật (Secret Management)**: Xem xét các thay đổi trong việc xử lý thông tin bí mật (secrets) - **Thay đổi Cấu hình (Config Changes)**: Xem xét các thay đổi cấu hình để đánh giá tác động bảo mật - **Thông tin Gỡ lỗi (Debug Information)**: Xác minh thông tin gỡ lỗi không bị phơi bày trên môi trường production ### 5. Hiệu năng và Độ tin cậy - **Thời gian Phản hồi (Response Time)**: Đo lường các thay đổi về thời gian phản hồi - **Thông lượng (Throughput)**: Xác minh các mục tiêu thông lượng được đáp ứng - **Mức sử dụng Tài nguyên (Resource Usage)**: Đánh giá các thay đổi về CPU, bộ nhớ và I/O - **Hiệu năng Cơ sở dữ liệu (Database Performance)**: Xem xét tác động hiệu năng của các câu truy vấn - **Hiệu quả Bộ nhớ đệm (Cache Efficiency)**: Xác thực tỷ lệ trúng bộ nhớ đệm (cache hit rates) - **Kiểm thử Tải (Load Testing)**: Xem xét kết quả kiểm thử tải nếu áp dụng - **Giới hạn Tài nguyên (Resource Limits)**: Kiểm thử việc xử lý khi chạm giới hạn tài nguyên - **Xác định Điểm nghẽn (Bottleneck Identification)**: Xác định bất kỳ điểm nghẽn cổ chai mới nào - **Xử lý Hết thời gian chờ (Timeout Handling)**: Xác nhận các giá trị timeout là phù hợp - **Bộ ngắt mạch (Circuit Breakers)**: Kiểm thử chức năng của bộ ngắt mạch - **Suy giảm Nhẹ nhàng (Graceful Degradation)**: Đánh giá hành vi giảm cấp dịch vụ có kiểm soát khi gặp sự cố - **Cô lập Lỗi (Failure Isolation)**: Xác minh khả năng cô lập lỗi - **Mất dịch vụ Một phần (Partial Outages)**: Kiểm thử hành vi trong trường hợp ngừng hoạt động một phần - **Lỗi Phần phụ thuộc (Dependency Failures)**: Kiểm thử kịch bản lỗi của các dịch vụ phụ thuộc bên ngoài - **Lỗi Dây chuyền (Cascading Failures)**: Đánh giá rủi ro xảy ra lỗi dây chuyền ### 6. Mức độ Sẵn sàng Vận hành - **Ghi nhật ký (Logging)**: Xác minh việc ghi nhật ký đầy đủ để phục vụ khắc phục sự cố - **Chỉ số Đo lường (Metrics)**: Xác nhận các chỉ số được phát ra cho các thao tác chính - **Truy vết (Tracing)**: Xác thực truy vết phân tán đang hoạt động tốt - **Kiểm tra Sức khỏe (Health Checks)**: Xác minh các điểm cuối kiểm tra sức khỏe hệ thống - **Quy tắc Cảnh báo (Alert Rules)**: Xác nhận các quy tắc cảnh báo đã được cấu hình - **Bảng điều khiển (Dashboards)**: Xác thực các bảng điều khiển vận hành - **Cập nhật Sổ tay Vận hành (Runbook Updates)**: Xác minh sổ tay vận hành phản ánh đúng các thay đổi - **Quy trình Leo thang Sự cố (Escalation Procedures)**: Xác nhận các quy trình báo cáo leo thang đã được ghi thành tài liệu - **Chiến lược Triển khai (Deployment Strategy)**: Xem xét phương pháp tiếp cận triển khai - **Di chuyển Cơ sở dữ liệu (Database Migrations)**: Xác minh các bước migration cơ sở dữ liệu là an toàn - **Cờ Tính năng (Feature Flags)**: Xác nhận cấu hình cờ tính năng - **Kế hoạch Quay lui (Rollback Plan)**: Xác minh kế hoạch quay lui đã được ghi thành tài liệu - **Ngưỡng Cảnh báo (Alert Thresholds)**: Xác minh các ngưỡng cảnh báo là phù hợp - **Luồng Báo cáo Leo thang (Escalation Paths)**: Xác minh cấu hình luồng báo cáo leo thang ### 7. Tài liệu và Truyền thông - **Cập nhật README (README Updates)**: Xác minh tệp README phản ánh đúng các thay đổi - **Tài liệu API (API Documentation)**: Cập nhật tài liệu API - **Tài liệu Kiến trúc (Architecture Docs)**: Cập nhật tài liệu kiến trúc - **Nhật ký Thay đổi (Change Logs)**: Ghi lại các thay đổi trong changelog - **Hướng dẫn Chuyển đổi (Migration Guides)**: Cung cấp hướng dẫn chuyển đổi nếu cần thiết - **Thông báo Ngừng hỗ trợ (Deprecation Notices)**: Thêm thông báo ngừng hỗ trợ nếu áp dụng - **Thay đổi Hiển thị cho Người dùng (User-Facing Changes)**: Ghi lại các thay đổi mà người dùng nhìn thấy được - **Thay đổi Gây vỡ Tương thích (Breaking Changes)**: Xác định rõ ràng các thay đổi gây vỡ tương thích (breaking changes) - **Các Vấn đề Đã biết (Known Issues)**: Liệt kê bất kỳ vấn đề nào đã biết - **Các Nhóm Bị ảnh hưởng (Impact Teams)**: Xác định các nhóm chịu ảnh hưởng bởi thay đổi - **Trạng thái Thông báo (Notification Status)**: Xác nhận đã gửi thông báo cho các bên liên quan - **Bàn giao Hỗ trợ (Support Handoff)**: Xác minh việc bàn giao cho đội ngũ hỗ trợ đã hoàn tất ## Danh sách Kiểm tra Tác vụ: Các Khu vực Xác minh Kiểm toán ### 1. Tính Đầy đủ và Khả năng Truy vết - Tất cả các yêu cầu đều được ánh xạ tới các thay đổi mã nguồn đã triển khai - Các tính năng còn thiếu hoặc mới triển khai một phần được ghi lại thành tài liệu - Nợ kỹ thuật phát sinh được lập danh mục kèm theo mức độ nghiêm trọng - Các tiêu chí nghiệm thu được xác thực đối chiếu với bản triển khai - Các yêu cầu tuân thủ được xác minh là đã đáp ứng ### 2. Bằng chứng Kiểm thử - Tất cả các câu lệnh và kết quả kiểm thử được ghi lại kèm trạng thái đạt/không đạt - Các chỉ số độ bao phủ mã nguồn đạt mục tiêu ngưỡng đề ra - Các bài kiểm thử bị bỏ qua, thất bại và chập chờn đều có lý do chính đáng và được ghi lại - Các trường hợp biên và điều kiện ranh giới được bao phủ đầy đủ - Các luồng lỗi và xử lý ngoại lệ đã được kiểm thử ### 3. Bảo mật và Bảo vệ Dữ liệu - Việc phân quyền và kiểm soát truy cập được thực thi trên tất cả các điểm cuối đã sửa đổi - Việc xác thực đầu vào ngăn chặn được các cuộc tấn công tiêm mã, duyệt đường dẫn và dữ liệu sai định dạng - Dữ liệu nhạy cảm không bị rò rỉ trong nhật ký, đầu ra hoặc thông báo lỗi - Mã hóa và quản lý bí mật được áp dụng chính xác - Các thay đổi cấu hình đã được rà soát về tác động bảo mật ### 4. Hiệu năng và Khả năng Phục hồi - Thời gian phản hồi và thông lượng đáp ứng các mục tiêu đã xác định - Mức sử dụng tài nguyên nằm trong giới hạn chấp nhận được - Logic thử lại, thời gian chờ và bộ ngắt mạch được cấu hình đúng cách - Cơ chế cô lập lỗi ngăn chặn được các lỗi dây chuyền - Thời gian phục hồi sau sự cố ở mức chấp nhận được ### 5. Mức độ Sẵn sàng Vận hành và Triển khai - Việc ghi nhật ký, chỉ số đo lường, truy vết và kiểm tra sức khỏe đã được xác minh - Các quy tắc cảnh báo và bảng điều khiển đã được cấu hình và liên kết với sổ tay vận hành - Chiến lược triển khai và kế hoạch quay lui đã được ghi thành tài liệu - Các cờ tính năng và việc di chuyển cơ sở dữ liệu đã được xác thực - Tài liệu hướng dẫn và việc truyền thông tới các bên liên quan đã hoàn tất ## Danh sách Kiểm tra Chất lượng Tự Kiểm toán Sau Triển khai Sau khi hoàn thành báo cáo tự kiểm toán, hãy xác minh: - [ ] Mọi phát hiện đều bao gồm bằng chứng có thể kiểm chứng (đầu ra kiểm thử, nhật ký hoặc tham chiếu mã nguồn) - [ ] Tất cả các yêu cầu đã được truy vết tới phần triển khai và độ bao phủ kiểm thử - [ ] Đánh giá bảo mật bao quát cả xác thực, phân quyền, kiểm tra đầu vào và bảo vệ dữ liệu - [ ] Tác động hiệu năng được đo lường bằng các chỉ số định lượng ở những nơi có sẵn dữ liệu - [ ] Các trường hợp biên và kịch bản kiểm thử phủ định được giải quyết rõ ràng - [ ] Mức độ sẵn sàng vận hành bao quát khả năng quan sát, cảnh báo, triển khai và quay lui - [ ] Mỗi phát hiện đều có mức độ nghiêm trọng, trạng thái, người phụ trách và hành động khuyến nghị - [ ] Khuyến nghị Go/No-Go được nêu rõ ràng kèm theo các điều kiện và lý do căn cứ ## Thực hành Tốt nhất cho Tác vụ ### Xác minh Dựa trên Bằng chứng - Luôn cung cấp bằng chứng có thể kiểm chứng (đầu ra kiểm thử, nhật ký, tham chiếu mã nguồn) cho từng phát hiện - Không phê duyệt hoặc đánh giá đạt cho bất kỳ khu vực nào nếu không có bằng chứng kiểm thử cụ thể - Bao gồm các bước tái hiện lỗi tối thiểu đối với các vấn đề nghiêm trọng (critical) - Phân biệt rõ giữa các sự thật đã được xác minh với các giả định hoặc suy luận - Đối chiếu chéo các phát hiện trên nhiều nguồn bằng chứng khi có thể ### Ưu tiên Rủi ro - Ưu tiên các vấn đề về bảo mật và tính đúng đắn hơn là các mối bận tâm về hình thức hay phong cách mã - Phân loại mức độ nghiêm trọng một cách nhất quán bằng thang đo Critical/High/Medium/Low - Cân nhắc cả xác suất xảy ra lẫn mức độ tác động khi đánh giá rủi ro - Báo cáo leo thang các vấn đề có thể gây mất dữ liệu, vi phạm bảo mật hoặc ngừng dịch vụ - Tách biệt các vấn đề chặn phát hành (release-blocking) khỏi các phát hiện mang tính khuyến nghị tham khảo ### Khuyến nghị Có tính Hành động - Cung cấp các bước khắc phục cụ thể, có thể kiểm thử được cho từng phát hiện - Bao gồm các phương án dự phòng khi cách sửa lỗi chính tiềm ẩn rủi ro - Ước tính công sức và độ phức tạp cho từng hành động khắc phục - Xác định sự phụ thuộc lẫn nhau giữa các hạng mục khắc phục - Xác định các bước xác minh để khẳng định mỗi bản sửa lỗi đều phát huy hiệu quả ### Truyền thông và Khả năng Truy vết - Sử dụng các mã định danh tác vụ ổn định xuyên suốt báo cáo để tham chiếu chéo - Duy trì khả năng truy vết từ yêu cầu đến triển khai và đến bằng chứng kiểm thử - Ghi lại rõ ràng các giả định, giới hạn đã biết và phần công việc được hoãn lại - Cung cấp bản tóm tắt điều hành (executive summary) với khuyến nghị Go/No-Go rõ ràng - Bao gồm kỳ vọng về mốc thời gian cho các hạng mục khắc phục còn đang mở ## Hướng dẫn Tác vụ theo Công nghệ ### Đường ống CI/CD (CI/CD Pipelines) - Xác minh các giai đoạn của đường ống bao phủ đầy đủ các bước dựng (build), kiểm thử (test), quét bảo mật và triển khai - Xác nhận các cổng kiểm thử (test gates) thực thi độ bao phủ tối thiểu và không có lỗi nghiêm trọng nào trước khi thăng cấp bản dựng (promotion) - Xem xét việc đánh phiên bản gói tạo tác (artifact versioning) và đảm bảo các bản dựng có thể tái tạo (reproducible builds) - Xác thực việc tiêm cấu hình đặc thù theo môi trường tại thời điểm triển khai - Kiểm tra nhật ký đường ống để tìm các cảnh báo hoặc lỗi không gây dừng hệ thống nhưng cho thấy các vấn đề tiềm ẩn ### Công cụ Giám sát và Quan sát Hệ thống (Monitoring and Observability Tools) - Xác minh việc gắn công cụ đo lường (metrics instrumentation) bao phủ độ trễ, tỷ lệ lỗi, thông lượng và độ bão hòa - Xác nhận việc ghi nhật ký có cấu trúc kèm theo mã định danh tương quan (correlation IDs) đã được bật cho tất cả các dịch vụ đã sửa đổi - Xác thực các đoạn truy vết phân tán (distributed tracing spans) bao phủ các lệnh gọi liên dịch vụ và các câu truy vấn cơ sở dữ liệu - Xem xét các định nghĩa bảng điều khiển (dashboard) để đảm bảo các chỉ số và điểm cuối mới đều được hiển thị - Kiểm thử các ngưỡng quy tắc cảnh báo với các kịch bản lỗi thực tế để tránh tình trạng quá tải cảnh báo (alert fatigue) ### Hạ tầng Triển khai và Quay lui - Xác nhận cấu hình triển khai blue-green hoặc canary đã được cập nhật cho các dịch vụ đã sửa đổi - Xác thực các kịch bản quay lui di chuyển cơ sở dữ liệu (database migration rollback scripts) có tồn tại và đã được kiểm thử - Xác minh các giá trị mặc định của cờ tính năng (feature flags) và đảm bảo khả năng ngắt khẩn cấp (kill-switch) cho các tính năng mới - Xem xét cấu hình bộ cân bằng tải và định tuyến để đảm bảo tính tương thích khi triển khai - Kiểm thử quy trình quay lui từ đầu đến cuối trên môi trường staging trước khi phát hành ## Dấu hiệu Cảnh báo Đỏ Khi Thực hiện Kiểm toán Sau Triển khai - **Thiếu bằng chứng kiểm thử**: Tuyên bố mã chạy đúng mà không có đầu ra kiểm thử, nhật ký hoặc dữ liệu độ bao phủ để chứng minh - **Bỏ qua rà soát bảo mật**: Các khu vực phân quyền, xác thực đầu vào hoặc bảo vệ dữ liệu bị đánh dấu là không áp dụng mà không có lý do chính đáng - **Không có kế hoạch quay lui**: Tiến hành triển khai mà không có quy trình quay lui đã được ghi thành tài liệu và kiểm thử - **Các luồng lỗi chưa được kiểm thử**: Chỉ bao phủ các kịch bản suôn sẻ (happy-path); việc xử lý ngoại lệ và các chế độ lỗi chưa được xác minh - **Trôi dạt môi trường (Environment drift)**: Môi trường kiểm thử khác biệt trọng yếu so với môi trường production về cấu hình, dữ liệu hoặc phần phụ thuộc - **Nợ kỹ thuật không được theo dõi**: Đi đường tắt trong lúc triển khai mà không ghi lại thành tài liệu để khắc phục trong tương lai - **Lỗi âm thầm (Silent failures)**: Các tình trạng lỗi bị nuốt mất hoặc chỉ ghi nhật ký ở mức thấp mà không phát cảnh báo hay chỉ số đo lường - **Truyền thông chưa đầy đủ tới các bên liên quan**: Các nhóm bị ảnh hưởng, bộ phận hỗ trợ hoặc khách hàng không được thông báo về các thay đổi hành vi hệ thống ## Đầu ra (Chỉ ghi vào tệp TODO) Chỉ ghi toàn bộ nội dung tự kiểm toán (đánh giá mức độ sẵn sàng, nhật ký bằng chứng và các việc cần làm tiếp theo) vào tệp `TODO_post-impl-audit.md`. Không tạo bất kỳ tệp nào khác. ## Định dạng Đầu ra (Dựa trên Tác vụ) Mọi phát hiện hoặc khuyến nghị phải bao gồm một Mã Tác vụ (Task ID) duy nhất và được trình bày dưới dạng một mục danh sách kiểm tra có thể theo dõi. Trong tệp `TODO_post-impl-audit.md`, hãy bao gồm: ### Tóm tắt Điều hành (Executive Summary) - Đánh giá mức độ sẵn sàng tổng thể (Ready/Not Ready/Conditional) - Các lỗ hổng nghiêm trọng nhất đã xác định được - Phân bổ mức độ rủi ro (Critical/High/Medium/Low) - Các hạng mục hành động ngay lập tức - Khuyến nghị Go/No-Go ### Các Phát hiện Chi tiết Sử dụng các ô đánh dấu (checkboxes) và mã định danh ổn định (ví dụ: `AUDIT-FIND-1.1`): - [ ] **AUDIT-FIND-1.1 [Issue Title]**: - **Evidence**: Đầu ra kiểm thử, nhật ký hoặc tham chiếu mã nguồn - **Impact**: Tác động đến người dùng hoặc hệ thống - **Severity**: Critical/High/Medium/Low - **Recommendation**: Hành động cụ thể tiếp theo - **Status**: Open/Blocked/Resolved/Mitigated - **Owner**: Người hoặc nhóm chịu trách nhiệm - **Verification**: Cách xác nhận vấn đề đã được giải quyết - **Timeline**: Thời điểm dự kiến giải quyết xong ### Các Khuyến nghị Khắc phục Sử dụng các ô đánh dấu và mã định danh ổn định (ví dụ: `AUDIT-REM-1.1`): - [ ] **AUDIT-REM-1.1 [Remediation Title]**: - **Category**: Immediate/Short-term/Long-term - **Description**: Hành động khắc phục cụ thể - **Dependencies**: Các điều kiện tiên quyết và yêu cầu phối hợp - **Validation Steps**: Các bước xác minh cho biện pháp khắc phục - **Release Impact**: Hạng mục này có chặn việc phát hành hay không ### Đánh giá Công sức & Mức độ Ưu tiên - **Công sức Triển khai (Implementation Effort)**: Ước tính thời gian phát triển (giờ/ngày/tuần) - **Mức độ Phức tạp (Complexity Level)**: Simple/Moderate/Complex dựa trên các yêu cầu kỹ thuật - **Phần phụ thuộc (Dependencies)**: Các điều kiện tiên quyết và yêu cầu phối hợp - **Điểm Ưu tiên (Priority Score)**: Ma trận kết hợp giữa rủi ro và công sức để xếp thứ tự ưu tiên - **Tác động Phát hành (Release Impact)**: Vấn đề này có chặn việc phát hành hay không ### Các Thay đổi Mã nguồn Đề xuất - Cung cấp các bản so sánh khác biệt kiểu bản vá (patch-style diffs - được ưu tiên) hoặc các khối tệp được gắn nhãn rõ ràng. - Bao gồm bất kỳ hàm bổ trợ cần thiết nào như một phần của đề xuất. ### Các Câu lệnh - Các câu lệnh chính xác cần chạy ở máy cục bộ và trong CI (nếu áp dụng) ## Danh sách Kiểm tra Tác vụ Đảm bảo Chất lượng Trước khi hoàn tất, hãy xác minh: ### Kỷ luật Xác minh - [ ] Bằng chứng kiểm thử có mặt đầy đủ và có thể kiểm chứng cho mọi khu vực được kiểm toán - [ ] Độ bao phủ còn thiếu được chỉ rõ kèm theo đánh giá rủi ro - [ ] Các bước tái hiện lỗi tối thiểu được đưa vào đối với các vấn đề nghiêm trọng - [ ] Chất lượng bằng chứng rõ ràng, thuyết phục và có dấu thời gian (timestamp) ### Khuyến nghị Có tính Hành động - [ ] Tất cả các bản sửa lỗi đều có thể kiểm thử, thực tế và được giới hạn phạm vi hợp lý - [ ] Các vấn đề về bảo mật và tính đúng đắn được ưu tiên hơn các thay đổi mang tính hình thức - [ ] Yêu cầu xác minh trên môi trường staging hoặc canary khi áp dụng - [ ] Cung cấp các phương án dự phòng khi cách sửa lỗi chính tiềm ẩn rủi ro ### Đặt Rủi ro vào Ngữ cảnh - [ ] Các khoảng trống ngăn cản việc triển khai được làm nổi bật thành các yếu tố chặn phát hành (release blockers) - [ ] Các tác động đến hành vi mà người dùng nhìn thấy được ưu tiên xử lý - [ ] Tác động đến đội trực sự cố (on-call) và bộ phận hỗ trợ được ghi lại thành tài liệu - [ ] Rủi ro lỗi hồi quy từ các thay đổi đã được đánh giá ## Các Lĩnh vực Trọng tâm Tác vụ Bổ sung ### An toàn Phát hành - **Mức độ Sẵn sàng Quay lui (Rollback Readiness)**: Đánh giá khả năng quay lui an toàn - **Chiến lược Triển khai (Rollout Strategy)**: Xem xét kế hoạch triển khai dần và giám sát - **Cờ Tính năng (Feature Flags)**: Đánh giá việc sử dụng cờ tính năng để triển khai an toàn - **Triển khai Theo Giai đoạn (Phased Rollout)**: Đánh giá khả năng triển khai theo từng giai đoạn - **Kế hoạch Giám sát (Monitoring Plan)**: Xác minh hệ thống giám sát đã sẵn sàng cho đợt phát hành ### Các Cân nhắc Sau Phát hành - **Khung thời gian Giám sát (Monitoring Windows)**: Xác định các khung thời gian giám sát sau khi phát hành - **Tiêu chí Thành công (Success Criteria)**: Xác định các tiêu chí thành công cho đợt phát hành - **Phương án Dự phòng (Contingency Plans)**: Ghi lại các phương án dự phòng nếu có sự cố phát sinh - **Mức độ Sẵn sàng Hỗ trợ (Support Readiness)**: Xác minh đội ngũ hỗ trợ đã được chuẩn bị sẵn sàng - **Tác động Khách hàng (Customer Impact)**: Đánh giá tác động của các vấn đề đối với khách hàng ## Nhắc nhở Thực thi Các cuộc tự kiểm toán sau triển khai tốt: - Dựa trên bằng chứng chứ không dựa trên ý kiến chủ quan; mọi tuyên bố đều được củng cố bởi đầu ra kiểm thử, nhật ký hoặc tham chiếu mã nguồn - Bao quát mọi chiều cạnh: tính đúng đắn, bảo mật, hiệu năng, khả năng vận hành và tài liệu - Phân biệt rõ giữa các vấn đề chặn phát hành và các cải tiến mang tính khuyến nghị - Đưa ra khuyến nghị Go/No-Go rõ ràng kèm theo các điều kiện tường minh - Bao gồm các hành động khắc phục cụ thể, có thể kiểm thử và được sắp xếp thứ tự ưu tiên theo mức độ rủi ro - Duy trì khả năng truy vết đầy đủ từ yêu cầu qua triển khai cho đến bằng chứng xác minh Vui lòng bắt đầu quá trình tự kiểm toán, tập trung vào việc xác minh có bằng chứng củng cố và mức độ sẵn sàng phát hành. --- **QUY TẮC:** Khi sử dụng prompt này, bạn phải tạo một tệp có tên là `TODO_post-impl-audit.md`. Tệp này phải chứa các phát hiện thu được từ quá trình nghiên cứu này dưới dạng các ô đánh dấu (checkboxes) có thể tích chọn để một mô hình ngôn ngữ lớn (LLM) có thể lập trình và theo dõi.
Rà soát các kịch bản (script) bash và POSIX sh trước khi chúng chạy trong CI, cron hoặc môi trường production. Phát hiện và gắn cờ việc thiếu chế độ nghiêm ngặt (strict mode), lệnh rm -rf trên các biến có thể bị rỗng, truyền kết quả curl qua pipe vào shell, lệnh eval, mở rộng biến không đặt trong dấu ngoặc kép, lệnh cd không kiểm tra lỗi, phân tích cú pháp kết quả lệnh ls, chmod 777, bí mật (secret) gắn cứng trong mã, tệp /tmp có tên dễ đoán trước, lệnh ssh nuốt mất dữ liệu của vòng lặp read, mã thoát (exit code) bị che khuất và các cú pháp riêng của bash (bashism) chạy dưới /bin/sh, sau đó trả về bản script đã được sửa lỗi. Bao gồm một bộ kiểm tra mã nguồn (linter) bằng thư viện chuẩn Python có hỗ trợ --self-test.
Tìm các bài kiểm thử chập chờn (flaky test) từ các lần chạy CI lặp đi lặp lại: phân tích cú pháp tệp JUnit XML hoặc lịch sử chạy dạng CSV, gắn cờ các bài kiểm thử lúc đạt lúc trượt (được xác nhận khi xảy ra trên cùng một commit), xếp hạng chúng theo tỷ lệ đảo chiều và tỷ lệ lỗi, đồng thời đề xuất nguyên nhân có thể xảy ra và cách khắc phục. Sử dụng khi CI "báo đỏ ngẫu nhiên", trước khi thêm cơ chế chạy lại (retry), hoặc khi phân loại danh sách cách ly (quarantine). Bao gồm công cụ phát hiện bằng thư viện chuẩn Python với cờ --self-test.
Kiểm toán các cặp màu tiền cảnh/hậu cảnh theo độ tương phản WCAG 2.x (mức AA và AAA cho văn bản thường và văn bản lớn), báo cáo tỷ lệ và kết quả đạt/không đạt, đồng thời lưu ý các rủi ro đối với người mù màu. Sử dụng khi kiểm tra bảng màu giao diện người dùng (UI palette), design token, hoặc hỏi "màu xám trên nền trắng này có dễ đọc không?". Bao gồm công cụ kiểm tra độ tương phản bằng thư viện chuẩn Python có hỗ trợ --self-test.
Quy trình triển khai có kỷ luật dành cho các tác nhân lập trình (coding agents). Hướng dẫn tác nhân kiểm tra trạng thái kho mã nguồn (repository) trước khi chỉnh sửa, bảo toàn các thay đổi không liên quan, lập kế hoạch cho các công việc lớn trước khi bắt tay vào triển khai, giữ phạm vi thay đổi hẹp và tập trung, chạy các bước kiểm chứng phù hợp, và chỉ tạo các commit gom theo từng mối quan tâm (concern-scoped) khi được cho phép. Được thiết kế cho các tác vụ triển khai tính năng, sửa lỗi, tái cấu trúc (refactoring) và khắc phục vấn đề trên các dự án phần mềm.