Chrono Mock
ภาษาไทย

การเปลี่ยนวันที่ของระบบเพื่อทดสอบแอป

นี่คือกลเม็ดที่เก่าแก่ที่สุด: ตั้งนาฬิกา Windows เป็นวันที่ที่คุณอยากทดสอบ รันโปรแกรม แล้วตั้งกลับ วิธีนี้ได้ผล - แต่ตราบใดที่นาฬิกาถูกเลื่อน มันก็เลื่อนทุกอย่างอื่นในเครื่องไปด้วย

สิ่งที่เคลื่อนไปกับนาฬิกาจริง ๆ

นาฬิกาของระบบไม่ได้เป็นของโปรแกรมที่คุณกำลังทดสอบเพียงตัวเดียว ทุกโพรเซส ทุกเซอร์วิส และทุกการสื่อสารผ่านเครือข่ายในเครื่องอ่านนาฬิกาเรือนเดียวกัน ดังนั้นการเปลี่ยนแปลงที่ทำเพื่อการทดสอบหนึ่งครั้งจึงเป็นการเปลี่ยนแปลงสำหรับทุกอย่าง

สิ่งที่อ่านนาฬิกาสิ่งที่เกิดขึ้นเมื่อคุณเลื่อนมัน
การล็อกอินโดเมนและโฟลเดอร์ที่แชร์Kerberos ยอมรับความต่างของนาฬิกาได้ห้านาทีโดยค่าเริ่มต้น เกินกว่านั้นตั๋วของมันจะถูกปฏิเสธ และการล็อกอินหรือการเข้าถึงโฟลเดอร์ที่แชร์จะล้มเหลว
ใบรับรองและ HTTPSใบรับรองใช้ได้หรือไม่ นาฬิกาเป็นตัวตัดสิน ตั้งนาฬิกาให้เลยวันหมดอายุของใบรับรอง ทุกการเชื่อมต่อที่อาศัยใบรับรองนั้นจะถูกปฏิเสธว่าหมดอายุ ถ้าย้อนกลับไปไกลพอ ใบรับรองก็ยังไม่มีผล
บริการเวลาของ Windowsเครื่องที่เข้าร่วมโดเมนรับเวลาจากตัวควบคุมโดเมน และโดยค่าเริ่มต้นบริการจะแก้นาฬิกาไม่ว่าความต่างจะมากเพียงใด วันที่ที่คุณตั้งอาจถูกยกเลิกขณะที่คุณยังทดสอบอยู่
ทุกอย่างที่บันทึกเวลาไฟล์ บันทึก แถวในฐานข้อมูล และอีเมลที่ส่งออกขณะที่นาฬิกาถูกเลื่อน จะมีวันที่ของการทดสอบติดไปด้วย และยังคงเป็นเช่นนั้นหลังจากคุณตั้งนาฬิกากลับแล้ว
ซอฟต์แวร์ที่จำวันที่ล่าสุดที่เคยเห็นโปรแกรมบางตัวอ่านนาฬิกาที่ถอยหลังว่าเป็นการแก้ไขโดยมิชอบ - และนั่นคือสิ่งที่เกิดขึ้นพอดีเมื่อคุณคืนวันที่จริง

ยิ่งวันที่ไกล คุณก็ยิ่งเจอเรื่องพวกนี้มาก เครื่องที่ตั้งเป็นปี 2038 จะเห็นใบรับรองทุกใบที่ออกในวันนี้ว่าหมดอายุแล้ว ทดสอบปี 2038 โดยไม่ต้องเจอแบบนั้น →

นอกจากนี้ยังต้องมีสิทธิ์ที่บัญชีส่วนใหญ่ไม่มี: การเปลี่ยนเวลาของระบบเป็นสิทธิ์พิเศษของผู้ดูแลระบบ และบนเครื่องที่มีผู้ดูแล มักไม่ใช่สิทธิ์ของคุณ

เมื่อไรที่การเปลี่ยนนาฬิกาเป็นคำตอบที่ถูก

เครื่องเสมือนที่ไม่มีใครอื่นใช้ โดยปิดการซิงก์นาฬิกาของมันไว้ เป็นแท่นทดสอบที่ใช้ได้ดีทีเดียว คุณทิ้งมันทีหลัง ดังนั้นสิ่งที่มันบันทึกไว้จึงไม่สำคัญ ถ้าคุณมีอยู่แล้วและการทดสอบเป็นเรื่องของวันที่เดียว นี่คือสิ่งที่ง่ายที่สุดที่ใช้ได้

ปัญหาเริ่มเมื่อมันคือเครื่องที่คุณใช้ทำงาน เครื่องที่อยู่ในโดเมน หรือเครื่องที่ในเวลาเดียวกันรันบางอย่างที่ต้องไม่รู้สึกถึงอะไรเลย

เลื่อนนาฬิกาของโปรแกรมเดียวแทน

เวลาที่ถูกเลื่อนมองเห็นได้เฉพาะหนึ่งโพรเซสและโพรเซสลูกที่มันเริ่ม การล็อกอินโดเมน ใบรับรอง และ Windows Update ของคุณไม่เคยเห็นมัน ดังนั้นไม่มีอะไรในตารางข้างบนเคลื่อนไป - และไม่มีอะไรต้องตั้งกลับทีหลัง

# แอปเห็นวันที่ 31 ธันวาคม 2027 เวลา 23:59:50 ส่วนทุกอย่างอื่นยังเป็นวันที่จริง
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:50

# เริ่มก่อนเที่ยงคืนสิบนาทีแล้วรันเร็วขึ้น 60 เท่า - ปีเปลี่ยนภายในสิบวินาที
chrono run "C:\apps\test.exe" --at 2027-12-31T23:50:00 --mode x60

วันที่ที่เลื่อนให้โปรแกรมหนึ่งไปถึงมันจริงหรือไม่ ไม่ใช่เรื่องที่ควรสันนิษฐาน ทุกเซสชันจบด้วยผลสรุปและรายการช่องทางเวลาที่โปรแกรมอ่านจริง ๆ คุณจะรู้ได้อย่างไรว่าได้ผล →

สิ่งที่วิธีนี้ไม่ได้ทดแทน

  • โปรแกรมที่ถามเวลาจากเซิร์ฟเวอร์อยู่นอกเหนือสิ่งที่การแทนที่ในเครื่องเอื้อมถึง เซสชันจะบอกเมื่อเห็นโปรแกรมเปิดการเชื่อมต่อเครือข่าย แทนที่จะปล่อยให้คุณเข้าใจเอาเองว่าการทดสอบผ่าน
  • การทดสอบตัวระบบเอง - บริการที่ตอบสนองต่อการเปลี่ยนของนาฬิกาจริง งานตามกำหนดเวลา พฤติกรรมของ Windows รอบการเปลี่ยนนาฬิกา - ไม่มีอะไรทดแทนการเปลี่ยนนาฬิกาได้ บนเครื่องที่คุณยอมเสียได้

ลองใช้