NHM
EN

BLOG

Vì sao mọi thứ tôi bàn giao đều kèm danh sách đã kiểm và chưa kiểm

Tác giả Nguyễn Hải Minh · Đăng ngày · 4 phút đọc

Mỗi workflow, bot hay công cụ tôi bàn giao đều đi kèm hai danh sách: những gì tôi đã kiểm, kiểm ở đâu và bằng cách nào, và những gì tôi chưa kiểm. Khách cần biết phần nào đã chạy với dịch vụ thật, phần nào mới chạy với bản giả lập trên máy tôi. Không có danh sách đó thì câu "đã test rồi" có thể mang đủ thứ nghĩa, và những chỗ hổng sẽ lộ ra sau này khi đã chạy thật.

Các nhãn tôi dùng

Tôi giữ các thành phần dùng lại trong một thư viện nhỏ. Mỗi thành phần có README nêu mục đích, đầu vào và đầu ra, cách cài, giới hạn, cùng với mã, dữ liệu mẫu giả và bộ kiểm. Trạng thái nằm trong một tệp registry, theo một trong bốn mức:

  • draft: chưa kiểm.
  • unit_tested: bộ kiểm tự động chạy qua, chỉ dùng bản giả lập hoặc dữ liệu giả.
  • verified: đã chạy trên nền tảng hoặc API thật, có bằng chứng ghi lại. Mức này cần có khoá hoặc tài khoản thử.
  • rejected: đã thử và loại, có ghi lý do.

Mỗi mục còn có trường not_verified_against, liệt kê những nền tảng và điều kiện chưa từng chạy thử. Quy tắc của tôi đơn giản: nền tảng nào còn nằm trong trường đó thì tôi không nói với khách là đã kiểm trên nền tảng đó.

Tính đến ngày 10/11/2026, thư viện có mười hai thành phần. Mười một thành phần ở mức unit_tested, một thành phần là draft, và chưa có thành phần nào verified. Tôi muốn nói thẳng con số đó hơn là làm tròn cho đẹp.

Danh sách trông thế nào khi làm thật

Một mẫu n8n nhận webhook, kiểm dữ liệu rồi ghi một dòng đã qua 9/9 bài kiểm trên n8n 2.20.0 chạy cục bộ. "Bảng tính" và "báo lỗi" trong bản này là giả lập, chỉ ghi tệp trên máy. Vì vậy danh sách chưa kiểm của nó mở đầu bằng Google Sheets, Telegram, tải đồng thời và khởi động lại giữa chừng. Khi kiểm tôi còn phát hiện một lỗi: node lỗi thì webhook vẫn trả 200 với thân rỗng. Tôi ghi cả lỗi đó, kèm ghi chú rằng phải có nhánh lỗi trước khi giao mẫu này cho khách.

Một thành phần hỏi đáp trên tài liệu mới được thử với hai mô hình nhỏ chạy cục bộ trên tài liệu giả. Đó chưa phải kết quả có thể dựa vào: tài liệu là giả, mô hình nhỏ chạy cục bộ, chưa có API thương mại và chưa có dữ liệu khách.

Một cầu nối MT5 ghi sự kiện deal ra tệp biên dịch được với 0 lỗi, 0 cảnh báo, và phần logic khớp với bản tham chiếu viết bằng Python. Nó chưa chạy lần nào trong terminal nên vẫn là draft. Biên dịch sạch chỉ cho thấy mã dựng được.

Cùng cách làm với công cụ giao dịch

Với các tiện ích MetaTrader 5, mỗi ảnh tôi đăng đều ghi Đã kiểm hoặc Chưa kiểm. Đã kiểm nghĩa là tôi thấy hành vi đó chạy đúng trên terminal demo hoặc tài khoản ảo của Strategy Tester. Với bộ bảo vệ vốn, việc khoá khi chạm ngưỡng lỗ theo tiền và giữ khoá sau khi khởi động lại đã được kiểm. Ngưỡng theo phần trăm và theo sụt giảm thì chưa, và tôi ghi rõ như vậy. Không nhãn nào trong số này nói gì về lợi nhuận.

Vì sao tôi chịu khó làm vậy

Viết danh sách chưa kiểm làm thay đổi cách tôi làm việc. Nếu không nói được một thứ đã chạy ở đâu thì tức là tôi chưa thật sự kiểm nó, và tôi phát hiện ra điều đó trước khách. Nó cũng giúp lần trao đổi sau dễ hơn. Khi có tài khoản thử cho một dự án, tôi biết chính xác cần chạy gì, và một mục có thể chuyển từ unit_tested lên verified với bằng chứng đi kèm.

Nếu bạn có một quy trình muốn tự động hoá, hoặc một workflow đang chạy mà bạn chưa yên tâm, hãy gửi tôi mô tả nó đang chạy thế nào và chạm tới những dịch vụ nào. Tôi sẽ trả lời phần nào kiểm được trên máy tôi và phần nào cần quyền truy cập vào tài khoản thật của bạn.