Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Histoire utilisateur et critères d'acceptation

Après cette leçon: Je peux écrire une histoire utilisateur avec des critères d'acceptation vérifiables.

Leçon de 55 min9 commandesLab PostgreSQL et PostgREST : une base de données et une API REST dans le navigateur

Une histoire courte et ses critères

Une histoire utilisateur, en anglais user story, est une phrase courte qui dit ce qu'une personne veut faire avec un système, et pourquoi. Ses critères d'acceptation disent comment on saura que l'histoire est terminée.

Un enseignant veut réserver une salle pour son cours. Vous allez écrire cette histoire, puis la tester sur le système du laboratoire.

À la fin de cette leçon

Remarque

Je peux écrire une histoire utilisateur avec des critères d'acceptation vérifiables.

Mots clés

MotCe que ça veut direExemple
Histoire utilisateurune phrase qui dit qui veut quoi, et pourquoi
Rôlela personne qui veut quelque choseenseignant
Butla raison pour laquelle elle le veutdonner mon cours
Critère d'acceptationune condition vérifiable qui dit que l'histoire est finie
Cas limiteune situation rare qui peut casser le systèmedeux réservations identiques

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une histoire se dit en une phrase

On l'écrit presque toujours sur le même modèle : « En tant que rôle, je veux action afin de but ».

Le rôle dit qui parle. L'action dit ce qu'il fait. Le but dit pourquoi : c'est lui qui permet de proposer autre chose si l'action est trop chère.

Exemple : trois histoires du système

RôleActionBut
Enseignantréserver une salle pour un créneaudonner mon cours
Étudiantvoir les salles librestrouver où réviser
Responsable des sallesannuler une réservationlibérer la salle en cas de panne

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Les critères d'acceptation disent quand c'est fini

Une histoire seule reste floue. On y ajoute au moins deux critères, chacun écrit en trois parties : étant donné la situation de départ, quand l'utilisateur agit, alors le résultat attendu.

Un bon critère contient une valeur précise : un code, un nombre, une durée. On peut alors l'essayer comme un petit test.

Exemple : deux critères pour une histoire

Étant donnéQuandAlors
Une salle libre le lundi à 10hL'enseignant envoie sa réservationLe système répond 201
Une réservation sans demandeurL'enseignant l'envoieLe système répond 400

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une erreur fréquente

Attention

Beaucoup pensent qu'une histoire bien écrite suffit pour commencer. Sans critères, deux personnes la terminent de deux façons. Écrivez les critères avant de construire, avec une valeur précise dans chacun.

On essaie les critères sur le système

Voici l'histoire : « En tant qu'enseignant, je veux réserver une salle pour un créneau afin de donner mon cours ». Elle a quatre critères.

Un : une réservation complète est créée, code 201. Deux : sans demandeur, elle est refusée, code 400. Trois : on peut relire les réservations d'une salle. Quatre : une salle déjà prise au même créneau est refusée.

Préparez la table avec les cinq premiers Runs. Puis essayez les critères un à un.

Donner le mot de passe à psql

Commande
export PGPASSWORD=shop

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Repartir de zéro

Commande
psql -h db -U shop -c "drop table if exists reservations"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Créer la table reservations

Commande
psql -h db -U shop -c "create table reservations (id serial primary key, salle text not null, demandeur text not null, creneau text not null, statut text not null default 'demandee')"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Ajouter trois réservations

Commande
psql -h db -U shop -c "insert into reservations (salle, demandeur, creneau) values ('B102', 'Claire Dupuis', 'lundi 10h'), ('A201', 'Marc Lefebvre', 'lundi 10h'), ('B102', 'Sophie Martin', 'mardi 14h')"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Dire à l'API de relire la base

Commande
psql -h db -U shop -c "notify pgrst, 'reload schema'"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Critère un : une réservation complète

Commande
curl -s -o /dev/null -w "%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"salle":"A201","demandeur":"Julie Moreau","creneau":"mardi 8h"}' "http://api:3000/reservations"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Critère deux : sans demandeur

Commande
curl -s -o /dev/null -w "%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"salle":"A201","creneau":"mardi 9h"}' "http://api:3000/reservations"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Critère quatre : une salle déjà prise

Commande
curl -s -o /dev/null -w "%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"salle":"B102","demandeur":"Hugo Bernard","creneau":"lundi 10h"}' "http://api:3000/reservations"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Combien de réservations B102 le lundi à 10h ?

Commande
psql -h db -U shop -t -A -c "select count(*) from reservations where salle = 'B102' and creneau = 'lundi 10h'"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Un critère qui échoue montre ce qui manque

Le critère quatre demandait un refus. Le système a répondu 201 et la salle B102 est réservée deux fois le lundi à 10h. Le critère a trouvé un trou que personne n'avait écrit.

Deux suites sont possibles : corriger le système, ou admettre que l'histoire n'est pas encore respectée. Dans les deux cas, le critère a fait son travail.

Exemple : le bilan des quatre critères

CritèreRéponse attendueRésultat
Une réservation complète201Respecté
Sans demandeur400Respecté
Relire une salleLes lignes de la salleRespecté
Une salle déjà prise400 ou 409Non respecté : 201

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

À propos de ce labo et de sa source: Lab PostgreSQL et PostgREST : une base de données et une API REST dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.