Lecture de code 3

Vrai ou Faux :

Note: Lorsque nécessaire, partez du principe que someRandomArrayOfInts renvoie un tableau de taille aléatoire non nulle contenant des entiers aléatoires.

Nous avons codé la méthode myMean qui renvoie la moyenne d’un array de int (sous forme de double). Puisque nous sommes des programmeurs prudents, nous avons aussi écrit un test unitaire pour vérifier que notre méthode myMean fonctionne correctement:

@Test
void method_mean_works() {
    for (int i = 0; i < 1000; i++) {
        int[] x = someRandomArrayOfInts();
        assertEquals(((double) correctSum(x)) / x.length, myMean(x), 1e-8);
    }
}

Supposons que la méthode correctSum renvoie la somme de l’array de int passé en paramètre. Alors ce test unitaire est robuste face aux erreurs d’implémentation (i.e il a de grandes chances de détecter une erreur si myMean est mal implémentée)

Solution

Cete question est un bon exemple de test robuste face aux erreurs d’implémentation :

Par souci de complétude, nous aurions dû vérifier les cas limites (i.e que se passe-t-il si le tableau est vide par exemple ?), mais puisque le comportement attendu de myMean est ambigu, nous avons choisi d’ommettre cette possibilité pour cette question. Bien sûr, dans la pratique, il faut toujours tester les cas limites :)

Réponse : Vrai