Chạy ứng dụng Windows ở bất kỳ ngày nào - mà không đụng đến đồng hồ hệ thống
Đặt đồng hồ của một ứng dụng sang năm sau, đóng băng nó, hoặc tăng tốc để bản dùng thử 30 ngày hết hạn trong lúc bạn pha cà phê. Phần còn lại của máy vẫn giữ giờ thật - đăng nhập domain, chứng chỉ của bạn và mọi chương trình khác vẫn chạy bình thường.
Rồi nó cho bạn biết việc thay thế thời gian có thực sự hiệu quả hay không.
Miễn phí và mã nguồn mở, GPL-3.0 Bản di động hoặc cài đặt Chạy không cần quyền quản trị viên Không bao giờ kết nối internet
Một phiên trông như thế nào
23:59:50
18:12:33
Vì sao nó tồn tại
Kiểm thử bất cứ thứ gì phụ thuộc vào ngày tháng đều phải dịch chuyển thời gian. Cả hai cách thông thường đều tệ.
Hạn giấy phép, thời gian dùng thử, gia hạn gói đăng ký, hiệu lực chứng chỉ, tuổi thọ token, báo cáo cuối tháng và cuối năm, tính lãi, lời nhắc.
Cách 1 - đổi đồng hồ hệ thống
Nó làm hỏng đăng nhập domain và Kerberos, vô hiệu hóa chứng chỉ TLS khiến trình duyệt ngừng hoạt động, làm Windows Update rối loạn, và khiến mọi ứng dụng khác trên máy ghi dấu thời gian sai. Trên máy tham gia domain, chính sách nhóm thường chặn thay đổi này hoặc hoàn nguyên sau vài phút, nên bài kiểm thử thậm chí không lặp lại được.
Cách 2 - chờ
Nghĩa là: không kiểm thử. Các trường hợp phụ thuộc vào ngày tháng bị bỏ qua, và “giấy phép không bao giờ hết hạn” đến tay khách hàng.
Nó làm được gì
Một tiến trình di chuyển trong thời gian. Không có gì khác trên máy làm vậy.
Bất kỳ thời điểm nào
Một ngày giờ cụ thể, hoặc một mốc tương đối - +30 days, -1 year.
Trôi, đóng băng hoặc tăng tốc
Tốc độ bình thường, đồng hồ bị giữ nguyên, hoặc hệ số nhân là số nguyên. x1440
biến một ngày thành một phút.
Múi giờ riêng
Một độ lệch cố định chỉ cho tiến trình đó, trong khi múi giờ hệ thống vẫn nguyên chỗ cũ.
Tiến trình con đi theo
Trình cài đặt và trình khởi chạy sinh ra các tiến trình con. Thiếu điều đó, bài kiểm thử chỉ bao phủ một nửa những gì đã chạy.
Nhảy giữa chừng phiên
Tiến hoặc lùi - kể cả bước nhảy lùi mà laptop thực hiện sau khi đồng bộ lại với máy chủ thời gian.
Cả Electron và Chromium
Thông qua một cơ chế khác, vì đồng hồ của chúng nằm trong renderer bị cô lập mà việc chèn mã không với tới.
Phần mà không ai khác làm
Làm sao bạn biết nó đã hiệu quả?
Với mọi công cụ khác, bạn không biết. Ứng dụng khởi động, hiển thị một ngày nào đó, và bạn đoán. Nhưng nó có thể đọc đồng hồ qua một kênh mà công cụ chưa bao giờ chặn - từ máy chủ, từ cơ sở dữ liệu, qua một lớp runtime - và khi đó “bài kiểm thử đã qua” hoàn toàn vô nghĩa.
- →Một kết luận trước khi bài kiểm thử thật bắt đầu: hoạt động / hoạt động một phần / không hoạt động
- →Trong 44 kênh thời gian, kênh nào đã được bao phủ, và ứng dụng đã truy vấn mỗi kênh bao nhiêu lần
- →Kênh nào không được bao phủ - nói thẳng, không bao giờ bỏ sót
- →Cảnh báo kèm hệ quả: “ứng dụng này đọc giờ từ mạng - việc thay thế cục bộ có thể chưa đủ”
Hai phút làm quen
Một cửa sổ để khám phá, một dòng lệnh cho CI. Cùng một động cơ phía sau cả hai.
# Chạy một ứng dụng như thể đây là giây cuối cùng của năm 2027 chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59 # Xem bản dùng thử 30 ngày hết hạn trong lúc bạn pha cà phê: x1440 là một ngày mỗi phút chrono run "C:\apps\test.exe" --mode x1440 # Dùng một kịch bản có tên thay cho ngày, và ghi bằng chứng ra tệp chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt
Máy tính ngày trả lời nửa còn lại của việc kiểm thử ngày tháng - dùng ngày nào:
$ chrono calc --preset year-2038 --zone +00:00 Chrono Mock - date calculator preset: year-2038 - 2038 boundary explains: Does the app survive the 32-bit Unix time boundary (2038-01-19T03:14:07Z)? base: 2038-01-19T03:14:07 result: 2038-01-19T03:14:07 formats: ISO date 2038-01-19 ISO datetime 2038-01-19T03:14:07+00:00 US 01/19/2038 PL 19.01.2038 epoch (s) 2147483647 epoch (ms) 2147483647000 FILETIME 137919572470000000 RFC 1123 Tue, 19 Jan 2038 03:14:07 GMT ... what this date lands on: at or past the 2038-01-19T03:14:07Z 32-bit time_t limit (Y2038)
So với thứ bạn có lẽ đang dùng
Giống RunAsDate, cộng thêm những phần còn thiếu
RunAsDate chặn năm hàm đồng hồ treo tường và làm việc đó tốt. Đây là chỗ hai công cụ khác nhau - và trang đầy đủ cũng nói rõ chỗ RunAsDate vẫn là lựa chọn tốt hơn.
| RunAsDate | Chrono Mock | |
|---|---|---|
| Chạy một ứng dụng ở ngày giả | có | có |
| Kênh thời gian bị chặn | 5 | 44 (30 được dịch chuyển, 14 chỉ đếm) |
| Tăng tốc đồng hồ | không | có |
| Múi giờ độc lập | không có tài liệu | có |
| Theo dõi tiến trình con | không có tài liệu | có |
| Cho bạn biết có hiệu quả hay không | không | có, theo từng kênh |
| Có mã nguồn | freeware, đóng | GPL-3.0 |
Lấy về
Giải nén ở bất kỳ đâu rồi chạy, hoặc cài tệp .msi đã ký cho mọi tài khoản trên
máy. Chạy không cần quyền quản trị viên, và các tệp zip không ghi gì vào registry.