Skip to content

Instantly share code, notes, and snippets.

@sroccaserra
Last active January 19, 2024 09:04
Show Gist options
  • Select an option

  • Save sroccaserra/69cf824e2b9e890082f2b80a5ec8b088 to your computer and use it in GitHub Desktop.

Select an option

Save sroccaserra/69cf824e2b9e890082f2b80a5ec8b088 to your computer and use it in GitHub Desktop.

Co-écriture des spécifications par l'exemple

2017-06-16

Mes notes sur la session de Christophe Addinquy à Agile France 2017.

La co-écriture des tests d'acceptation : la compréhension partagée entre les acteurs, lever les ambiguïtés sur ce qu'on fait avec des exemples concrets.

Quand on ne se comprend pas entre métier, dev, testeur, le métier propose : "Je suis prêt à détailler toutes mes specs, ajouter tout ce qu'il faut comme petits points précis."

  • Problème : on perd de vue le "quoi" car on a tendance à détailler le "comment"
  • Ce n'est pas efficace

Exemple d'atelier entre métier, testeur, et développeur (les trois amis), sur une application imaginaire, "WeDate" :

  • Christophe, spécialiste métier pour WeDate
  • Mael, développeur fullstack, ne connais pas bien le dating
  • Christian, testeur, a convoqué Christophe et Mael pour un atelier.

Étapes de l'atelier :

  • Formuler avec des titres
  • Décliner les titres (explorer avec des variations)
  • Construire un exemple valorisé avec des valeurs concrètes
  • Raffiner l'exemple

Décrire sous forme de titres les besoins

Difficulté : dans une même règle telle que décrite par le métier, il y a souvent plusieurs cas au départ de la discussion, qu'on commence à séparer.

Proposition de RDV pour un homme avec une femme compatible
Aucune proposition de RDV pour un homme avec une femme non compatible

Décliner les titres (explorer avec des variations)

Suite à discussion, on ajoute un troisième titre

Proposition de RDV pour un homme avec une femme compatible
Aucune proposition de RDV pour un homme avec une femme non compatible
Aucune proposition de RDV pour un homme avec une femme compatible et non disponible

Mais alors la disponibilité est un élément discriminant, il faut l'ajouter dans un autre titre.

Proposition de RDV pour un homme avec une femme compatible et disponible
Aucune proposition de RDV pour un homme avec une femme non compatible
Aucune proposition de RDV pour un homme avec une femme compatible et non disponible

On creuse la notion de non disponible

Proposition de RDV pour un homme avec une femme compatible et disponible
Aucune proposition de RDV pour un homme avec une femme non compatible

Aucune proposition de RDV pour un homme avec une femme compatible ayant son compte inactif
Aucune proposition de RDV pour un homme avec une femme compatible ayant bloqué cet homme
Aucune proposition de RDV pour un homme avec une femme compatible avec laquelle il a un RDV à venir
Aucune proposition de RDV pour un homme avec une femme compatible avec laquelle il a déjà eu un RDV non concluant

En travaillant uniquement sur les titres on a pu aller assez vite et commencer à décliner certains termes assez flous

Construire un exemple valorisé avec des valeurs concrètes

Ce n'est pas encore suffisant pour des tests d'acceptation, on a besoin de préciser, avec "Étant donné que", "Quand", "Alors" par exemple ("Given", "When", "Then").

Proposition de RDV pour un homme avec une femme compatible et disponible
Aucune proposition de RDV pour un homme avec une femme non compatible

Aucune proposition de RDV pour un homme avec une femme compatible ayant son compte inactif
Aucune proposition de RDV pour un homme avec une femme compatible ayant bloqué cet homme
Aucune proposition de RDV pour un homme avec une femme compatible avec laquelle il a un RDV à venir
Aucune proposition de RDV pour un homme avec une femme compatible avec laquelle il a déjà eu un RDV non concluant

Étant donné 2 utilisateurs Alice et Bob
Et Alice aime la cuisine Thai et les spaghettis bolognaise
Et Bob aime la cuisine Thai et les pizzas
Et Alice aime le cinéma et Kubrick
Et Bob aime le cinéma et Lelouche
Et Alice est institutrice
Et Bob est fleuriste
Et Bob parle allemand et anglais
Et Alice aime le shopping
Et Bob aime faire de la varappe
Et Alice a 25 ans
Et Bob a 29 ans
Quand Bob clique sur le bouton de recherche rapide "Tente le coup!"
Alors dans la table qs_quick_search le ration de matching est > 0.75
Et la photo dans une balise div "mini-photo-android" d'Alice s'affiche
Et la carte .......

Le métier n'est pas impliqué pour suivre avec ces critères techniques dans le Alors.

Reformuler pour revenir à de la compréhension partagée (on peut conserver les détails ailleurs pour implémenter des tests auto ou créer des jeux de données de test).

Étant donné 2 utilisateurs Alice et Bob
Et Alice aime la cuisine Thai et les spaghettis bonognaise
Et Bob aime la cuisine Thai et les pizzas
Et Alice aime le cinéma et Kubrick
Et Bob aime le cinéma et Lelouche
Et Alice est institutrice
Et Bob est fleuriste
Et Bob parle allemand et anglais
Et Alice aime le shopping
Et Bob aime faire de la varappe
Et Alice a 25 ans
Et Bob a 29 ans
Quand Bob clique sur le bouton de recherche rapide "Tente le coup!"
Alors Alice lui est proposée

Raffiner l'exemple

Sur la partie "Étant donné", par exemple, on n'a pas besoin de tout ce qui est dans le profil pour déterminer la compatibilité, et certains détails sont trop fin (on peut conserver ces détails ailleurs pour les jeux de donnés, voir les enrichir au fil de la discussion)

Étant donné 2 utilisateurs Alice et Bob
Et Alice et Bob partagent les mêmes goûts culinaires
Et Alice et Bob partagent les mêmes goûts culturels
Et Alice aime le shopping
Et Alice et Bob ne partagent pas les mêmes loisirs
Et Alice et Bob sont dans la tranche d'âge souhaitée par les deux
Quand Bob clique sur le bouton de recherche rapide "Tente le coup!"
Alors Alice lui est proposée

On remonte mieux à l'intention.

Comment on sait qu'ils sont compatibles ? Le métier : parce qu'il y a 3 critères sur 4 OK. (Ah, c'est pour ça les 0.75).

Étant donné 2 utilisateurs Alice et Bob
Et Alice et Bob sont compatibles sur les critères culinaires, culturels et de tranche d'âge
Quand Bob clique sur le bouton de recherche rapide "Tente le coup!"
Alors Alice lui est proposée

Rendre expressif en introduisant le langage métier.

Questions

L'exercice fait émerger les concepts et le langage métier (en remarquant et supprimant les duplications par exemple), le métier les connait déjà mais là on les comprend ensemble.

On n'écrit pas une règle métier, on écrit un exemple.

Est-ce que mon PDG peut lire mes critères d'acceptation ? S'il ne peut pas c'est que ce n'est pas assez expressif (trop de détails). Rester à 3 / 4 lignes dans les scénarios.

Pas besoin du testeur ? Si, le testeur a un savoir faire pour faire des tests exploratoires, il a des techniques d'investigation, ce qui est différent des tests d'acceptation. Et il peut tester l'ensemble de l'application.

Donner la prédominance aux compétences par rapport au rôle.

Les résistances :

  • Est-ce qu'on en a besoin ?
    • expérimenter en 1h30 pour convaincre sur des specs sèches.
  • Trois personnes c'est cher, est-ce qu'on peut avoir une seule personne qui écrit et ensuite juste une validation ?
    • Non ! Biais de confirmation, et on passe à côté de l'échange d'informations essentielles.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment