Livraison offerte, ou pas
Une boutique de vêtements à Toulouse offre la livraison dès 35 € d'achat. Un assistant écrit la règle, et elle a l'air juste. Une cliente commande pour 35 € tout rond et paie 5 € de livraison.
Un seul test avec 35 € aurait trouvé l'erreur en une seconde. Cette leçon apprend à choisir ce test vous-même.
À la fin de cette leçon
Remarque
Je peux tester le code d'une IA avec mes propres cas.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Cas de test | une entrée et le résultat attendu | |
| Résultat attendu | la bonne réponse, tirée de la règle | |
| assert | une ligne Python qui s'arrête si une condition est fausse | assert frais_livraison(20) == 5 |
| Seuil | la valeur exacte où la règle change | 35 |
| Cas limite | une entrée inhabituelle, vide ou nulle |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un cas de test associe entrée et réponse
Un cas de test est une entrée et le résultat que vous attendez. Calculez ce résultat à partir de la règle, avant de lancer le code. Si vous lisez la réponse dans le code, vous vérifiez seulement que le code est d'accord avec lui-même.
En Python, assert vérifie un cas. Si la condition est fausse, le programme s'arrête et affiche le message du cas.
À vous : tester la livraison
# Règle : la livraison coûte 5 euros,
# elle est offerte dès 35 euros d'achat.
# L'assistant a écrit ceci :
def frais_livraison(total):
if total > 35:
return 0
return 5
# Nos propres cas, écrits à partir de la règle.
assert frais_livraison(20) == 5, "cas courant"
assert frais_livraison(60) == 0, "cas courant, offerte"
assert frais_livraison(35) == 0, "seuil : 35 pile"
print("Tous les cas passent")
# Lancez. Quel cas échoue ? Corrigez la fonction, puis relancez.
Trois sortes de cas à choisir
Les bons cas sont de trois sortes. Un cas courant est une valeur de tous les jours. Un seuil est la valeur exacte où la règle change, avec les valeurs juste avant et juste après. Un cas limite est inhabituel : vide, zéro, négatif ou très grand.
Les assistants réussissent bien le cas courant. Leurs erreurs se cachent aux seuils et dans les cas limites.
Exemple : des cas pour la livraison
| Sorte | Montant du panier | Frais attendus | Pourquoi ce cas |
|---|---|---|---|
| Courant | 20 € | 5 € | Une petite commande habituelle |
| Courant | 60 € | 0 € | Une grosse commande habituelle |
| Seuil | 35 € | 0 € | La valeur où la règle change |
| Seuil | 34,99 € | 5 € | Juste sous le seuil |
| Limite | 0 € | à demander | Un panier vide : la règle ne dit rien |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
À vous : ajouter vos propres cas
# Règle : un code postal français a 5 chiffres.
def code_postal_valide(cp):
return len(cp) == 5 and cp.isdigit()
assert code_postal_valide("69003") == True, "cas courant"
assert code_postal_valide("Lyon") == False, "pas des chiffres"
# Ajoutez trois cas sous cette ligne :
# "7500" (4 chiffres), "" (vide) et "75 01" (avec une espace).
print("Tous les cas passent")
Une erreur fréquente
Attention
Beaucoup pensent qu'il suffit de demander les tests au même assistant. Des tests venus de la même source partagent souvent sa mauvaise compréhension. Quand le code compte, écrivez vous-même les résultats attendus, à partir de la règle.