Vaut-il mieux avoir un
- Suite de tests déterministes, qui se traduit par la réussite des mêmes tests
- Suite de tests non déterministes, qui peut éventuellement couvrir plus de cas
?
Exemple: vous écrivez une suite de tests pour tester les fonctionnalités du contrôleur dans une application MVC. Le contrôleur requiert des données d'application d'une base de données en entrée pendant le test. Il existe deux options pour ce faire:
- Vous codez en dur la ou les lignes de la base de données de test qui sont sélectionnées en entrée (par exemple, la 10e et la 412e ligne)
- Vous utilisez un générateur de nombres aléatoires pour sélectionner de manière pseudo-aléatoire les données de la base de données (deux lignes sélectionnées par un générateur de nombres aléatoires)
La première est déterministe: chaque exécution du test pour la même révision de code devrait produire le même résultat. La seconde n'est pas déterministe: chaque exécution de la suite de tests a la possibilité de produire un résultat différent. Les données sélectionnées au hasard pourraient cependant être une meilleure représentation des cas de bord de données. Cela pourrait mieux simuler un utilisateur alimentant nos contrôleurs avec des données imprévisibles?
Quelles sont les raisons de choisir l'un plutôt que l'autre?