Chrono Mock
ภาษาไทย

วันที่ที่ควรทดสอบ

ซอฟต์แวร์ไม่พังในวันอังคารธรรมดา มันพังในวันสุดท้ายของไตรมาส ในวันที่ 29 กุมภาพันธ์ ในวินาทีที่ปีเปลี่ยน และหนึ่งวินาทีหลังไลเซนส์หมดอายุ วันที่เหล่านี้คือวันที่ค้นพบบั๊กพวกนั้น - 14 วันมาพร้อมเป็นสถานการณ์ที่ตั้งชื่อไว้

ขอบเขตของช่วงเวลา

อะไรก็ตามที่ปิดงวด ใส่เลขเอกสารตามปี หรือสะสมถึงวันตัดยอด จะผิดพลาดกับวันเหล่านี้เป็นอันดับแรก

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

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

ขอบของปฏิทินและการแทนค่า

  • 29 กุมภาพันธ์ - วันอธิกวารที่มีทุกสี่ปีเท่านั้น และโค้ดตรวจสอบจำนวนมากอย่างน่าประหลาดใจปฏิเสธมันตั้งแต่ต้น
  • ศูนย์ของเอพอก Unix - แอปถือว่า 1 มกราคม 1970 เป็นวันที่จริง หรือเป็นค่าว่างที่ควรปฏิเสธไม่ให้เก็บ?
  • ขอบปี 2038 - ช่วงเวลาที่ time_t แบบมีเครื่องหมาย 32 บิตหมดลง ที่ 2038-01-19T03:14:07Z อีกหนึ่งวินาทีต่อมาตัวนับจะล้นไปเป็นปี 1901

ไลเซนส์ ช่วงทดลองใช้ และการติดตั้ง

สิ่งเหล่านี้ไว้ทดสอบระบบไลเซนส์ของคุณเอง ซึ่งเป็นกรณีที่มันถูกเขียนขึ้นมาเพื่อ

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

กฎทางธุรกิจและพฤติกรรมของนาฬิกา

  • ครบกำหนดชำระ +N วันทำการ - การชำระที่ครบกำหนดในอีก N วันทำการตกในวันที่ถูกต้องหรือไม่ โดยข้ามสุดสัปดาห์และวันหยุดของประเทศที่ถูกต้อง? เป็นสถานการณ์เดียวที่ต้องใช้ปฏิทิน และคำตอบต่างกันไปตามตลาด
  • ขอบของอายุบรรลุนิติภาวะ - แอปรับคนที่อยู่ที่ขอบพอดี และปฏิเสธคนที่ขาดไปหนึ่งวันหรือไม่?
  • นาฬิกาคลาดเคลื่อน +90 s - แอปรับมือได้หรือไม่เมื่อนาฬิกาของมันเดินเร็วกว่าเวลาจริงเก้าสิบวินาที? นี่คือกรณีที่ทำให้รหัสผ่านใช้ครั้งเดียวที่อิงเวลาและการตรวจสอบโทเค็นพัง

วิธีใช้

สถานการณ์คือนิพจน์วันที่ที่ตั้งชื่อไว้ เครื่องคิดเลขคำนวณว่ามันหมายถึงอะไร และการแทนที่เวลารันแอปที่วันนั้น - ใช้ชื่อเดียวกันทั้งสองที่

# วันนี้คือวันที่เท่าไร และวันนั้นทดสอบอะไร?
chrono calc --preset month-end

# รันแอปที่วันนั้น
chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt

# สถานการณ์ช่วงทดลองใช้ดึงวันเริ่มจากวันที่ของไฟล์โปรแกรมเป้าหมายเอง
chrono run "C:\apps\test.exe" --preset trial-first-day-after

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

หน้าจอตั้งค่าของ Chrono Mock โดยเปิดส่วน Scenarios อยู่: มีช่องค้นหาเหนือรายการ จากนั้นเป็นแต่ละวันที่สำเร็จรูปพร้อมคำถามที่มันตอบ - ขอบปี 2038 วันที่ 29 กุมภาพันธ์ นาฬิกาที่เดินเร็วเก้าสิบวินาที วันสุดท้ายของเดือน - และใต้รายการมีบรรทัดบอกว่าอีกสามอันต้องใช้ค่าที่คุณเลือกเอง ส่วนท้ายอ่านช่วงเวลากลับเป็นภาษาธรรมดาเหนือปุ่ม Start
แต่ละสถานการณ์พกคำถามที่มันตอบมาด้วย ไม่ใช่แค่วันที่ สามอันที่ต้องใช้ค่าที่คุณเลือกเองถูกระบุชื่อไว้ใต้รายการ ไม่ได้ซ่อนไว้

สิ่งที่ไม่มีอยู่ที่นี่

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

มันจะกลับมาพร้อมแบบจำลองของกฎเขตเวลา เขตเวลาทำอะไรได้และทำอะไรไม่ได้ →

ลองใช้