Tanggal yang layak diuji
Perangkat lunak tidak rusak pada hari Selasa biasa. Ia rusak pada hari terakhir kuartal, pada 29 Februari, tepat saat tahun berganti, dan satu detik setelah lisensi kedaluwarsa. Inilah tanggal-tanggal yang menemukan bug semacam itu - 14 di antaranya disertakan sebagai skenario bernama.
Batas periode
Apa pun yang menutup periode, menomori dokumen berdasarkan tahun, atau mengakumulasi sampai batas waktu tertentu akan salah di sini lebih dulu.
- Hari terakhir bulan - apakah penutupan akhir bulan dan akrual periode berperilaku benar pada hari terakhir bulan?
- Hari terakhir kuartal - apakah penutupan akhir kuartal dan pelaporannya berperilaku benar pada hari terakhir kuartal?
- Hari terakhir tahun fiskal - apakah aplikasi menutup tahun fiskal pada hari yang tepat, sehari sebelum tahun fiskal dimulai?
- Pergantian tahun, langsung - apakah penomoran dokumen, tahun dalam nama, dan pelaporan tahunan menangani pergantian saat itu terjadi, bukan baru dimulai ulang sesudahnya?
Yang terakhir biasanya tidak dapat diuji sama sekali, karena membutuhkan jam melintasi tengah malam 31 Desember sementara aplikasi berjalan. Dengan jam yang dipercepat, itu pekerjaan sepuluh detik.
Tepi kalender dan representasi
- 29 Februari - hari kabisat yang hanya ada setiap empat tahun, dan yang ditolak mentah-mentah oleh sejumlah mengejutkan kode validasi.
- Epoch Unix nol - apakah aplikasi memperlakukan 1 Januari 1970 sebagai tanggal nyata, atau sebagai nilai kosong yang seharusnya ia tolak untuk disimpan?
- Batas 2038 - saat
time_t32-bit bertanda habis, pada2038-01-19T03:14:07Z. Satu detik kemudian penghitung meluap ke tahun 1901.
Lisensi, masa percobaan, dan instalasi
Ini untuk menguji pelisensian Anda sendiri, kasus yang menjadi alasan penulisannya.
- Hari terakhir masa percobaan - apakah aplikasi masih berfungsi pada saat paling akhir masa percobaan?
- Hari pertama setelah masa percobaan berakhir - apakah akses ditolak tepat saat masa percobaan berakhir, dan bagaimana? Pesan yang masuk akal, atau stack trace?
- Lisensi kedaluwarsa setahun lalu - apakah aplikasi menangani lisensi yang kedaluwarsa sejak lama, bukan hanya kemarin?
- Tanggal sebelum instalasi - apakah aplikasi berperilaku benar ketika jam disetel sebelum tanggal instalasinya sendiri? Ini membaca tanggal file target itu sendiri, sehingga tidak memerlukan parameter.
Aturan bisnis dan perilaku jam
- Pembayaran jatuh tempo, +N hari kerja - apakah pembayaran yang jatuh tempo N hari kerja ke depan jatuh pada hari yang tepat, melewati akhir pekan dan hari libur negara yang tepat? Satu-satunya skenario yang memerlukan kalender, dan jawabannya berbeda antarpasar.
- Batas usia dewasa - apakah aplikasi menerima seseorang tepat di batas, dan menolak seseorang yang kurang satu hari?
- Selisih jam, +90 s - apakah aplikasi sanggup ketika jamnya berjalan sembilan puluh detik lebih cepat dari waktu nyata? Inilah kasus yang merusak kata sandi sekali pakai berbasis waktu dan validasi token.
Cara memakainya
Skenario adalah ekspresi tanggal bernama. Kalkulator menghitung artinya, dan penggantian waktu menjalankan aplikasi pada tanggal itu - nama yang sama di kedua tempat.
# Tanggal berapa itu, dan apa yang diuji tanggal tersebut? chrono calc --preset month-end # Jalankan aplikasi pada tanggal itu chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt # Skenario percobaan mengambil tanggal mulai dari tanggal file target itu sendiri chrono run "C:\apps\test.exe" --preset trial-first-day-after
Di jendela, skenario berupa chip di atas kolom tanggal - satu klik mengisinya. Masing-masing membawa kalimatnya sendiri yang menyatakan apa yang ditangkapnya, bagian yang tidak dapat diberikan oleh kalkulator tanggal daring.
Yang tidak ada di sini
Transisi waktu musim panas. Memaksa aplikasi melewati batas maju atau mundur jam adalah pengujian yang benar-benar berguna dan sengaja tidak ada, karena zona waktu sesi adalah selisih tetap tanpa waktu musim panas - belum ada transisi yang dapat disimulasikan. Menyertakan skenario yang diam-diam tidak melakukan apa pun akan lebih buruk daripada tidak menyertakannya.
Ia akan kembali bersama model aturan zona waktu. Apa yang dilakukan dan tidak dilakukan zona waktu →