Saya bukan penutur bahasa Inggris asli. Dalam bahasa ibu saya, saya mengetahui beberapa istilah yang digunakan untuk merujuk pada kondisi yang diperiksa untuk menghentikan rekursi, dan pada kondisi yang diperiksa untuk kasus yang ekstrem, tidak mungkin atau super sederhana. Dalam bahasa Inggris, saya telah menemukan istilah "tepi kasus", "sudut kasus", "batas kasus" dan "basis kasus", tetapi saya tidak bisa mengetahui perbedaan dan yang digunakan untuk merujuk pada apa; Saya ingin mendapatkan ringkasan perbedaan di antara mereka.
Secara khusus, saya akan sangat senang jika seseorang dapat memberikan anotasi untuk baris-baris dalam contoh kode berikut:
int transmogrify(int n) {
1. assert(n <= 1000000);
2. if (n < 0) return -1;
3. if (n == 1000000) return PRE_CALC;
4. if (n == 0) return n+1; // For stopping the recursion
5. if (n == 1251) return 3077;
return transmogrify(n-1);
}
Saya pikir itu:
- Cek kewarasan
- Pemeriksaan input
- Kasus batas? Kasing tepi? Kasus sudut?
- Kasing dasar? Kasus batas?
- Kasus sudut? Kasing tepi?
Jawaban:
Saya juga bukan penutur bahasa Inggris asli. Tetapi menurut Wikipedia:
Jadi, nomenklaturnya kelihatannya benar-benar bingung, meskipun case sudut tampaknya berarti sesuatu yang sedikit berbeda (kombinasi nilai) dari kasus edge dan boundary, yang pasti sinonim. Mungkin aman untuk mengatakan bahwa tepi, sudut, dan kasus batas adalah hal yang sama dalam pembicaraan umum. Seseorang bisa bermaksud mengatakan hal yang berbeda oleh masing-masing dari mereka, tetapi hampir tidak ada kesepakatan bersama.
1) dan 2) Anda adalah apa yang Anda tulis, 3) adalah kasus tepi / batas, 4) adalah kasus dasar, dan 5) adalah kasus khusus.
sumber
Terlepas dari perbedaan antara kata-kata, apa yang Anda gunakan untuk menggambarkan tes tergantung pada semantik (makna) dari tes, bukan kode yang tepat - Dalam contoh asalkan tidak jelas apa yang dimaksud dari setiap tes. Selain itu, inilah cara saya memahaminya:
sqrt(-1)
danlog(-1)
tidak ditentukan.[ $# -gt 0 ]
memeriksa bahwa Anda mendapatkan setidaknya satu parameter input, yang juga bisa menjadi cek kewarasan untuk perintah sepertifind
ataumail
.log(1 + the smallest floating point number)
.sumber
import cmath; assert(cmath.log(-1) == 3.141592653589793j)