Bir dizideki öğeleri rastgele karıştırmak için bir yöntem düşünün. Bunun çalıştığından emin olmak için basit ama sağlam bir ünite testi nasıl yazardınız?
Her ikisi de gözle görülür kusurları olan iki fikir buldum:
- Diziyi karıştırın, ardından sırasının öncekinden farklı olduğundan emin olun. Bu kulağa hoş geliyor, ancak karışık aynı sırayla karıştırmaya başlarsa başarısız olur. (Mümkün değil, mümkün.)
- Diziyi sabit bir tohumla karıştırın ve önceden belirlenmiş çıktıya karşı kontrol edin. Bu, her zaman aynı tohum verilen aynı değerleri döndürerek rastgele işlevine dayanır. Ancak, bu bazen bir geçersiz varsayım .
Zar rulolarını simüle eden ve rastgele bir sayı döndüren ikinci bir fonksiyon düşünün. Bu işlevi nasıl test edersiniz? Bu işlevi nasıl test edersiniz?
- asla verilen sınırların dışında bir sayı döndürmez?
- geçerli bir dağıtımdaki sayıları döndürür? (Bir kalıp için tek tip, çok sayıda zar için normal.)
Sadece bu örnekleri değil, genel olarak rastgele kod öğelerini de sınama konusunda fikir veren cevaplar arıyorum. Ünite testleri burada doğru çözüm mü? Eğer değilse, ne tür testler?
Sadece ben değilim herkesin aklını hafifletmek için değil kendi rasgele sayı üreteci yazma.