J'ai réalisé un certain nombre d'algorithmes génétiques ; ils fonctionnent (ils trouvent rapidement une solution raisonnable). Mais j'ai maintenant découvert TDD . Existe-t-il un moyen d'écrire un algorithme génétique (qui s'appuie fortement sur des nombres aléatoires) de manière TDD ?
Pour poser la question de manière plus générale, comment tester une méthode/fonction non déterministe. Voici ce à quoi j'ai pensé :
-
Utilisez une graine spécifique. Ce qui ne m'aidera pas si je fais une erreur dans le code en premier lieu, mais aidera à trouver des bugs lors de la refactorisation.
-
Utilisez une liste de numéros connus. Similaire à ce qui précède, mais je pourrais suivre le code à la main (ce qui serait très fastidieux).
-
Utilisez un nombre constant. Au moins, je sais à quoi m'attendre. Il serait bon de s'assurer qu'un dé indique toujours 6 lorsque RandomFloat(0,1) renvoie toujours 1.
-
Essayez de déplacer autant de code non déterministe que possible hors de l'AG, ce qui semble idiot puisque c'est le cœur de son objectif.
Des liens vers de très bons livres sur les tests seraient également appréciés.