Tester les solutions des apprenants
Lorsque vous créez des éléments d’évaluation dans MATLAB® Grader™, définissez des tests qui évaluent si la solution de l’apprenant répond à vos critères de réussite.
Définir des tests
Pour définir des tests, vous pouvez utiliser les tests prédéfinis disponibles dans la liste Test Type ou bien écrire votre propre code MATLAB. Les options de test prédéfini sont les suivantes :
Variable Equals Reference Solution
– Vérifier l’existence, le type de données, la taille et la valeur d’une variable. Cette option est uniquement disponible dans la liste Test Type des éléments d’évaluation de type script. Une tolérance par défaut de1e-4
s’applique aux valeurs numériques.Function or Keyword is Present
– Vérifier la présence des fonctions ou mots-clés spécifiés.Function or Keyword is Absent
– Vérifier que les solutions des apprenants ne contiennent pas les fonctions ou mots-clés spécifiés.
Par exemple, si vous voulez que les apprenants utilisent la fonction taylor
pour calculer l’approximation par série de Taylor d’une fonction donnée, spécifiez les options suivantes :
Dans la liste Test Type, sélectionnez
Function or Keyword is Present
.Spécifiez la fonction
taylor
comme étant celle que l’apprenant doit utiliser.Si vous le souhaitez, indiquez des commentaires supplémentaires à afficher pour l’apprenant s’il n’utilise pas la fonction attendue.
Pour un élément d’évaluation de type script, vous pouvez évaluer une variable avec le type de test prédéfini Variable Equals Reference Solution
. Par exemple, évaluez si une variable est de la bonne taille et contient les valeurs et le type de données attendus en la comparant à la variable du même nom dans votre solution de référence.
Vous pouvez également écrire du code MATLAB en sélectionnant l’option MATLAB Code
dans la liste Test Type. Procédez comme suit :
Évaluer l’exactitude – Vous pouvez utiliser des fonctions correspondant aux types de tests prédéfinis :
assessVariableEqual
,assessFunctionPresence
etassessFunctionAbsence
. Vous pouvez également écrire un test personnalisé qui renvoie une erreur en cas de résultat incorrect.Noms de variables dans les éléments d’évaluation de type script – Pour faire référence à des variables de votre solution de référence, ajoutez le préfixe
referenceVariables
, par exemplereferenceVariables.
. Pour faire référence aux variables de l’apprenant, utilisez le nom de la variable.myvar
Noms de fonctions dans les éléments d’évaluation de type fonction – Pour appeler la fonction de votre solution de référence, ajoutez le préfixe
reference
, par exemplereference.
. Pour appeler la fonction de l’apprenant, utilisez le nom de la fonction.myfunction
Portée des variables – Les variables que vous créez dans le code d’un test d’évaluation existent uniquement dans ce test.
Par exemple, supposons qu’un apprenant doive calculer la valeur d’une variable X
pouvant varier au-delà de la tolérance par défaut. Pour comparer la valeur de la solution de l’apprenant à celle de votre solution de référence, spécifiez les variables et la tolérance en appelant la fonction assessVariableEqual
.
Pour tester des éléments d’évaluation de type fonction, appelez les fonctions de l’apprenant et de référence, avec une entrée test, puis comparez les sorties. Par exemple, le code suivant vérifie que la fonction nommée tempF2C
d’un apprenant convertit correctement une température de degrés Fahrenheit à Celsius.
temp = 78;
tempC = tempF2C(temp);
expectedTemp = reference.tempF2C(temp);
assessVariableEqual('tempC',expectedTemp);
Conseil
Le message d’erreur par défaut généré par la fonction assessVariableEqual
mentionne le nom de la variable testée, à savoir X
et tempC
dans les exemples précédents. Pour les éléments d’évaluation de type fonction, cette variable se trouve dans le script du test d’évaluation et non dans le code de l’apprenant. Utilisez des noms de variables pertinents que l’apprenant peut reconnaître, par exemple une sortie figurant dans la déclaration de fonction.
Un même test d’évaluation peut contenir plusieurs tests. Par exemple, le code suivant vérifie que l’apprenant implémente une fonction nommée normsinc
qui gère correctement les valeurs nulles et non nulles. Le cas nul comprend des commentaires supplémentaires provenant de l’argument nom-valeur Feedback
de la fonction assessVariableEqual
.
nonzero = 0.25*randi([1 3]); y_nonzero = normsinc(nonzero); expected_y_nonzero = reference.normsinc(nonzero); assessVariableEqual('y_nonzero',expected_y_nonzero); y_zero = normsinc(0); expected_y_zero = reference.normsinc(0); assessVariableEqual('y_zero',expected_y_zero, ... Feedback='Inputs of 0 should return 1. Consider an if-else statement or logical indexing.');
Accorder un crédit partiel
Par défaut, le software considère une solution comme correcte si tous les tests réussissent et comme incorrecte si l’un des tests échoue. Pour accorder un crédit partiel, attribuez des pondérations relatives aux tests en définissant Scoring Method à Weighted
. MATLAB Grader calcule le pourcentage pour chaque test en fonction du total des pondérations relatives. Vous pouvez donc définir les pondérations sous forme de points ou de pourcentages.
Par exemple, si vous définissez la pondération relative à 1
pour tous les tests, chacun d’eux a le même poids. Si vous définissez la pondération à 2
pour certains tests, ceux-ci ont deux fois plus de poids que ceux définis à 1
.
Il est également possible de saisir des pourcentages de pondération.
Spécifier des prétests
Les prétests sont des tests d’évaluation que les apprenants peuvent exécuter pour déterminer si leur solution est en bonne voie avant de la soumettre pour notation. Vous pouvez envisager d’utiliser un prétest pour guider les apprenants lorsque plusieurs approches sont correctes mais que votre test nécessite une approche particulière ou lorsque vous définissez un nombre limite de soumissions pour l’exercice.
Les prétests sont différents des tests d’évaluation normaux par les aspects suivants :
Les résultats des prétests ne sont pas enregistrés dans le carnet de notes avant la soumission.
L’exécution des prétests n’est pas comptabilisée dans la limite du nombre de soumissions.
Les apprenants peuvent afficher le code et les détails du prétest, y compris la sortie des tests en code MATLAB, que le test soit réussi ou non. Assurez-vous que le prétest ne contient pas la solution de l’élément d’évaluation.
Tout comme les tests d’évaluation normaux, les prétests s’exécutent quand les apprenants soumettent leurs solutions et ils contribuent à la note finale.
Par exemple, supposons que les apprenants doivent définir un système d’équations linéaires pouvant être organisées de différentes façons. Définissez un prétest pour vous assurer que la solution de l’apprenant respecte l’ordre prévu et contient les coefficients attendus.
Si le test échoue, les apprenants voient un message d’erreur et peuvent modifier leur solution.
Contrôler l’affichage des erreurs pour un élément d’évaluation de type script
Dans un élément d’évaluation de type script, des erreurs peuvent découler d’une erreur initiale. Vous pouvez inciter l’apprenant à se concentrer d’abord sur l’erreur initiale.
Si vous sélectionnez l’option Only Show Feedback for Initial Error, des commentaires détaillés s’affichent pour l’erreur initiale mais les détails sont cachés par défaut pour les erreurs qui en découlent. L’apprenant peut afficher ces commentaires supplémentaires en cliquant sur Show Feedback.