Il existe certains domaines d'application (par exemple GameDev) dans lesquels de nombreuses fonctions doivent être créées en utilisant des valeurs aléatoires pour produire leur sortie. Un des exemples est présenté ci-dessous:Comment valider l'exactitude des fonctions qui utilisent le hasard?
def generate_key(monster_key_drop_coef):
key_letters = string.ascii_uppercase
rand = random.random()
if monster_key_drop_coef < rand:
return None
button = {}
button["type"] = random.choice([1,2,3])
button["letter"] = random.choice(key_letters)
return button
Cette fonction génère la chute de l'élément en fonction de plusieurs opérations aléatoires. Le problème apparaît si vous voulez valider automatiquement l'exactitude de cette fonction. Les valeurs générées ne sont pas déterministes et l'écriture des tests de régression semble impossible.
Mes questions sont les suivantes:
- Est-ce possible d'écrire des tests de régression utiles pour ce type de fonctions?
- Existe-t-il une approche générale pour créer d'autres types de tests dans ce cas?
Il y a des livres entiers écrits sur ce sujet. Exemple: http://www.johndcook.com/Beautiful_Testing_ch10.pdf –
Le fait de se moquer du RNG pour fournir des résultats connus (puis de tester des résultats spécifiques pour lesquels le résultat souhaité est connu) est une approche. –