Considérez une méthode pour mélanger au hasard des éléments dans un tableau. Comment écririez-vous un test unitaire simple mais robuste pour vous assurer que cela fonctionne?
J'ai mis au point deux idées qui présentent toutes deux des défauts évidents:
- Mélangez le tableau, puis assurez-vous que son ordre diffère d'avant. Cela sonne bien, mais échoue si le brassage se trouve dans le même ordre. (Improbable, mais possible.)
- Mélangez le tableau avec une graine constante et comparez-le à la sortie prédéterminée. Cela repose sur la fonction aléatoire renvoyant toujours les mêmes valeurs pour le même germe. Cependant, cela est parfois une hypothèse non valide .
Considérons une deuxième fonction qui simule les jets de dés et renvoie un nombre aléatoire. Comment testeriez-vous cette fonction? Comment vérifierais-tu que la fonction ...
- ne retourne jamais un nombre en dehors des limites données?
- renvoie des nombres dans une distribution valide? (Uniforme pour un dé, normal pour un grand nombre de dés.)
Je cherche des réponses permettant de tester non seulement ces exemples, mais également des éléments de code aléatoires en général. Les tests unitaires sont-ils même la bonne solution ici? Si non, quel genre de tests sont?
Pour soulager tout le monde, je n'écris pas mon propre générateur de nombres aléatoires.