Định nghĩa
Dry run là chế độ chạy thử trong đó chương trình thực thi toàn bộ logic, nhưng không tạo ra bất kỳ thay đổi thực tế nào lên dữ liệu hay hệ thống.
Nói cách khác:
- Hệ thống chạy thử toàn bộ logic.
- Báo trước các bước và kết quả dự kiến.
- Nhưng không tạo ra tác động thật (không ghi dữ liệu, không thay đổi trạng thái của bất kỳ dữ liệu nào, không ảnh hưởng hệ thống).
Tại sao cần Dry run?
- ✅ Nhìn thấy chính xác những gì thật sự sẽ diễn ra.
- ✅ Kiểm tra tính chính xác, ngăn chặn sai sót trước khi chạy thực tế.
- ✅ Xem trước kết quả để quyết định có làm thật hay không.
Để dễ hiểu hơn, có một khái niệm khá tương đồng và được sử dụng rộng rãi hơn trong các buổi biểu diễn - "Rehearsal".
- Rehearsal (Dry Run): Diễn thử gần như giống 100% buổi biểu diễn chính thức để xem mọi thứ vận hành ra sao, nhưng chưa có khán giả thật.
- Buổi biểu diễn thật: Làm thật, có khán giả, có kết quả thật.
Áp dụng thực tế
Mình có một script để chuyển đổi link ảnh từ định dạng Obsidian wikilink sang Markdown chuẩn. Script này có quyền đọc, sửa và ghi đè hàng loạt file nội dung.
🤔 Vấn đề:
Chỉ cần có một vài lỗi nhỏ trong logic:
- Link của toàn bộ các file có thể bị sai hàng loạt.
- Để khôi phục về lại trạng thái ban đầu trước khi thay đổi sẽ rất mất thời gian.
💡 Giải pháp:
Trước khi chạy thật, mình bật chế độ dry run:
- Script đọc toàn bộ file như bình thường.
- In ra danh sách file sẽ bị thay đổi.
- Hiển thị nội dung trước / sau của từng chỗ bị convert.
- Nhưng không ghi bất kỳ thay đổi nào vào file.
⚡️ Kết quả:
- Mình nhìn thấy chính xác script sẽ làm gì.
- Dễ dàng phát hiện một vài trường hợp chưa xử lý đúng để sửa lại logic.
- Sau khi output dry run đúng như mong đợi, mình mới cho chạy thật.

Góc tò mò
Theo một số nguồn tài liệu mình tìm được, thì thuật ngữ Dry run xuất phát từ huấn luyện chữa cháy vào đầu thế kỷ XIX.
- Dry run (Diễn tập khô): Thực hành với vòi phun nước nhưng không có nước (khô).
- Wet run (Diễn tập ướt): Chữa cháy thực tế với nước thật.
Sau đó được áp dụng bởi:
- Quân đội (diễn tập không dùng đạn thật)
- Hàng không (các chuyến bay mô phỏng)
- Kỹ thuật phần mềm (kiểm thử mà không thay đổi)
Nguồn tham khảo: