Pertimbangkan metode untuk mengacak elemen secara acak dalam array. Bagaimana Anda menulis unit test yang sederhana namun kuat untuk memastikan bahwa ini berhasil?
Saya telah datang dengan dua ide, yang keduanya memiliki kelemahan nyata:
- Kocok array, lalu pastikan urutannya berbeda dari sebelumnya. Ini kedengarannya bagus, tetapi gagal jika shuffle terjadi secara acak dalam urutan yang sama. (Tidak mungkin, tetapi mungkin.)
- Kocok array dengan seed konstan, dan periksa terhadap output yang telah ditentukan. Ini bergantung pada fungsi acak yang selalu mengembalikan nilai yang sama dengan seed yang sama. Namun, ini terkadang merupakan asumsi yang tidak valid .
Pertimbangkan fungsi kedua yang mensimulasikan gulungan dadu dan mengembalikan angka acak. Bagaimana Anda menguji fungsi ini? Bagaimana Anda menguji bahwa fungsi ...
- tidak pernah mengembalikan nomor di luar batas yang diberikan?
- mengembalikan angka dalam distribusi yang valid? (Seragam untuk satu mati, normal untuk sejumlah besar dadu.)
Saya mencari jawaban yang menawarkan wawasan pengujian tidak hanya contoh-contoh ini tetapi elemen kode acak secara umum. Apakah tes unit bahkan solusi yang tepat di sini? Jika tidak, tes seperti apa itu?
Hanya untuk menenangkan pikiran semua orang, saya tidak menulis generator nomor acak saya sendiri.