Comment documenter vos conceptions à l'aide d'histoires utilisateur basées sur le comportement

Un problème courant lors de la documentation des exigences consiste à prendre position du point de vue du système pour décrire les besoins, en oubliant que c’est l’utilisateur qui sera au centre des interactions. Les user stories, introduites par Agile, traitent ce problème en plaçant l'utilisateur au centre du besoin, et le développement piloté par le comportement (BDD) va encore plus loin en fournissant un cadre dans lequel le comportement de l'utilisateur est le moteur du développement..

L'utilisation des techniques BDD pour créer des user stories facilite la rédaction et la lecture des exigences de documentation. En outre, il fournit des outils supplémentaires pour communiquer l'expérience utilisateur souhaitée d'une conception, que les concepteurs, les développeurs et les ingénieurs d'assurance qualité peuvent utiliser pour accélérer et même automatiser une partie de leur travail. Dans cet article, je vais explorer cette approche et montrer comment vous pouvez l'utiliser pour documenter vos propres conceptions, en partant de petites histoires pour organiser ces histoires afin de communiquer des fonctionnalités entièrement fonctionnelles..

Exigences d'interface utilisateur vs exigences UX

Il y a une distinction importante à faire entre les exigences d'interface utilisateur (également appelées spécifications) et les exigences UX. D'une part, les exigences de l'interface utilisateur sont des documents techniques qui répertorient les spécificités de l'interface utilisateur, notamment les types de police, les couleurs, les dimensions et la disposition des éléments. Un bon exemple de ce type de documentation est les guides de style de vie..

Les exigences UX, d’autre part, décrivent ce que l’expérience devrait être pour un spécifique utilisateur, étant donné que cet utilisateur est dans un scénario spécifique en train d'effectuer une action spécifique. Une user story peut capturer une exigence UX de manière très succincte. Par exemple:

  • Comme un… utilisateur éditeur,
  • Je veux… être capable de relire les articles avant leur publication,
  • Pour que… Je peux fournir des commentaires et assurer la qualité en temps opportun.

Cette histoire indique d'abord le rôle de l'utilisateur, ce que celui-ci veut accomplir, puis explique la raison derrière ce rôle. C’est formidable, car il offre aux développeurs et aux testeurs un aperçu du but ultime: satisfaire les besoins des utilisateurs. Notez que les mots en gras sont le modèle utilisé pour écrire l'histoire. Il y a toujours un utilisateur qui veut faire quelque chose pour pouvoir atteindre un objectif spécifique. Vous pouvez suivre ces conseils pour rédiger de bonnes histoires d'utilisateurs..

Avec cette histoire en tête, l'équipe de conception peut décider qu'une action «d'approbation» est nécessaire pour atteindre l'objectif de l'utilisateur. Ensuite, pour fournir des détails sur la manière dont cela fonctionnera réellement, vous pouvez utiliser la syntaxe Gherkin, qui est un outil BBD pour la rédaction d'exigences lisibles par l'entreprise. La syntaxe Gherkin est similaire aux user stories agiles, car elle fournit un moyen d'écrire les exigences qui peut également être utilisé comme modèle. L'avantage est que vous pouvez entrer dans plus de détails, en fournissant des scénarios et des actions que l'utilisateur pourrait entreprendre sans entrer dans le processus de mise en œuvre. Regardons cela de près.

Écrire des histoires d'utilisateurs à l'aide de la syntaxe de Gherkin

Les bases d’une histoire utilisant la syntaxe de Gherkin peuvent être résumées comme suit:

  • Une caractéristique
  • Un scénario
  • Une condition préalable
  • Une action
  • Un résultat

Une caractéristique est un endroit pour décrire la valeur commerciale globale de la mise en œuvre. Il peut également être utilisé pour fournir des informations supplémentaires, telles que des règles commerciales, ou tout élément facilitant la compréhension de la fonctionnalité (tels que des liens vers des prototypes ou les exigences de l'interface utilisateur)..

Un scénario décrit les circonstances spécifiques dans lesquelles se trouve l'utilisateur. Du point de vue de la conception utilisateur, les scénarios permettent de communiquer les multiples variables d’une conception et la manière dont l’interface utilisateur doit les gérer, en fonction de l’utilisateur..

Une condition préalable aide à construire le scénario et supprime toute ambiguïté. Par exemple, dans un scénario qui décrit un premier utilisateur accédant à un écran particulier, la condition préalable peut préciser que l'utilisateur est connecté..

Une action indique exactement ce que l'utilisateur fait dans l'interface et est généralement un «déclencheur», tel que cliquer sur un bouton, soumettre un formulaire ou naviguer vers un autre endroit.

Un résultat est la conséquence de l'action, et devrait toujours être quelque chose qui peut être testé.

Avec ces parties en tête, écrivons une user story pour la fonctionnalité décrite précédemment:

  • Comme un…  utilisateur éditeur,
  • Je veux…  être capable de relire les articles avant leur publication,
  • Pour que…  Je peux fournir des commentaires et assurer la qualité en temps opportun.

En utilisant la syntaxe Gherkin, cette histoire ressemblerait à ceci:

Fonctionnalité
Autoriser les éditeurs à examiner les articles avant leur publication finale et à y apposer leur approbation.
Scénario
Approuver un article prêt à être publié.
Condition préalable
  • Donné que l'auteur a soumis un article pour publication.
  • et l'éditeur a accédé à la vue de modification d'article
action
  • quand l'éditeur sélectionne «approuver»
Résultat
  • puis l'article est publié selon la date prévue
  • et l'éditeur voit une alerte de succès indiquant que l'article a été publié avec succès
  • et l'article est marqué «approuvé»
  • et une notification est envoyée à l'auteur indiquant que son article a été approuvé. 

Vous pouvez voir comment l'histoire initiale se transforme en un flux plus détaillé que l'utilisateur peut suivre et par conséquent, qui peut être testé. Notez également que les mots en gras sont les mots-clés utilisés par des logiciels tels que concombre pour automatiser l'exécution des tests. J'expliquerai davantage à ce sujet plus tard, mais pour l'instant, je tiens à souligner que ces mots clés sont également très utiles pour écrire l'histoire car ils permettent de distinguer les différentes parties de l'histoire..

Une autre chose à souligner est que bien que l'histoire fournisse plus de détails sur le flux d'utilisateurs, l'interface n'est pas décrite. La raison en est que la description de l'interface utilisateur peut rapidement transformer le récit en exigences d'interface utilisateur, ce qui pose un gros problème car elles peuvent être obsolètes assez rapidement. Par exemple, si l'article décrit l'apparence de l'alerte de succès et ce que le message spécifique doit indiquer, il est possible que l'historique ne soit plus synchronisé si l'un de ces éléments change, ce qui peut entraîner l'échec des tests..

L'astuce consiste donc à fournir suffisamment de détails, sans utiliser des outils plus adéquats, tels que des maquettes de conception, des prototypes et des guides de style. À cet égard, vous remarquerez que l’action indique «choisir d’approuver» par rapport à «utiliser». "Sélectionner l'approbation" n'indique pas à quoi ressemble ce contrôle (il peut s'agir d'un bouton, d'un bouton ressemblant à un lien ou d'une boîte cliquable), mais cela implique qu'un élément de l'interface utilisateur est déclenché. Il indique également que cet élément a écrit «approuver». Il s’agit d’une zone grise dans laquelle vous devrez faire preuve de bon sens, car dans certains cas, vous voudrez être aussi précis afin que les actions puissent être distinguées des autres. Par exemple, s’il existe un autre moyen d’approuver un article sur la même page, en indiquant que, dans ce scénario, l’utilisateur doit le «sélectionner», permet de faire la distinction..

L'importance des scénarios

Outre la syntaxe réfléchie fournie par Gherkin, l'une des choses que je trouve les plus utiles est d'utiliser la partie «scénarios». Les scénarios sont puissants car ils peuvent être utilisés pour tester la conception et s’assurer que toutes les bases sont couvertes..

Habituellement, les conceptions de toutes sortes commencent par la «voie heureuse», c'est-à-dire ce qui se passe lorsque tout se passe bien dans l'interface et son application à la majorité des utilisateurs. Dans notre exemple précédent, nous avions:

Scénario
Approuver un article prêt à être publié.

De plus, comme nous savons que les articles ont une date de publication, nous pouvons également indiquer: Il s’agit de notre premier scénario car, dans la plupart des cas, les articles à approuver doivent être prêts à être publiés. Mais cela soulève la question suivante: que se passe-t-il lorsqu'un article n'est pas prêt pour la publication et que l'éditeur y accède? Devraient-ils même pouvoir accéder à ces articles?

  • Que se passerait-il si un article approuvé avait une date de publication antérieure? L'article doit-il être publié immédiatement ou doit-il être placé dans une file d'attente?? 
  • Et pour aller plus loin, qu’en est-il si un éditeur approuve un article par erreur? Quelle est la procédure à suivre pour annuler cette action? Qui devrait être notifié?

Toutes ces questions font partie du processus de conception et vous connaîtrez probablement les réponses lorsque vous passerez rapidement aux exigences en matière de documentation. La bonne nouvelle est que l'utilisation de scénarios dans la documentation de votre récit vous aidera à les structurer et, dans de nombreux cas, à vous aider à évaluer vos propres conceptions, en veillant à ce qu'elles soient conçues et diffusées correctement.

Voyons comment notre histoire se concrétiserait avec les scénarios supplémentaires:

Fonctionnalité Autoriser les éditeurs à examiner les articles avant leur publication finale et à y apposer leur approbation.
Scénario 1 Approuver un article prêt à être publié.
  • Donné que l'auteur a soumis un article pour publication
  • et l'éditeur a accédé à la vue de modification d'article
  • quand l'éditeur clique sur «approuver»
  • puis l'article est publié selon la date prévue
  • et l'éditeur voit une alerte de succès indiquant que l'article a été publié avec succès
  • et l'article est marqué «approuvé»
  • et une notification est envoyée à l'auteur indiquant que son article a été approuvé.
Scénario 2

Accéder à un article qui n'est pas prêt pour la publication.

  • Quand …
Scénario 3

Approuver un article dont la date d'échéance est passée

  • Quand …
Scénario 4

Désapprobation d'un article dont la date de publication est ultérieure

  • Quand …
Scénario 5

Désapprobation d'un article publié

  • Quand …

Selon la fonctionnalité, plusieurs scénarios peuvent être envisagés. Leur clé est de les garder courts pour pouvoir les décrire et les tester facilement. Vous pouvez également essayer de les regrouper, en utilisant des dénominateurs communs. Par exemple, si plusieurs scénarios partagent la même condition préalable, vous pouvez l'encapsuler dans un «arrière-plan» utilisable par plusieurs scénarios. Par exemple:

Contexte
L'auteur a soumis un article pour publication et l'éditeur a accédé à la vue de modification d'article.
Scénario 1
Approuver un article prêt à être publié.
  • Donné que l'arrière-plan est rencontré
  • quand …
Scénario 2
Approuver un article dont la date d'échéance est passée.
  • Donné que l'arrière-plan est rencontré
  • quand …
Scénario 3
Désapprobation d'un article dont la date de publication est ultérieure.
  • Donné que l'arrière-plan est rencontré
  • quand …

Organiser des histoires pour communiquer une fonctionnalité

Un problème commun qui se pose lors de la documentation des exigences est de décider de l'ordre dans lequel le faire. La raison en est que dans la plupart des cas, tout est en construction, ce qui rend difficile de tester une interaction lorsque les parties des interactions ne sont pas encore construites. Par exemple, dans la simple interaction consistant à «approuver» un article, de nombreux éléments doivent être prêts:

  1. L'interface utilisateur doit pouvoir renvoyer un message de réussite si l'approbation est réussie et un message d'échec en cas de problème système..
  2. L'interface utilisateur doit pouvoir “marquer” les articles comme approuvés..
  3. L’UI doit pouvoir afficher l’article selon la logique métier «publiée»..
  4. Les notifications système doivent être activées pour que les auteurs puissent être alertés lorsque l'approbation est effectuée..

Une approche permettant de documenter les exigences de chacune de ces dépendances consiste à les enregistrer en tant que différentes fonctionnalités pouvant ensuite être hiérarchisées en fonction de leur valeur métier..

Fonctionnalité
La description
Priorité
Système d'alerte
L'interface utilisateur doit pouvoir renvoyer un message de succès, ainsi qu'un message d'échec, en cas de problème système.
2
Système de marquage
L'interface utilisateur doit pouvoir “marquer” les articles comme approuvés.
4
Système de publication
L’UI doit pouvoir afficher l’article selon la logique métier «publiée».
1
Système de notifications
Les notifications système doivent être activées pour que les auteurs puissent être alertés lorsque l'approbation est effectuée.
3

Ensuite, vous pouvez créer une histoire «d'intégration» pour les rassembler. Par exemple, une user story pour le système de marquage aimerait ceci:

Fonctionnalité
Autoriser les utilisateurs et le système à marquer des articles selon un état donné (non publié, approuvé, publié ou archivé).
Scénario 1
Marquage d'un article comme non publié.
  • (détails… )
Scénario 2
Marquage d'un article comme approuvé.
  • (détails… )
Scénario 3
Marquage d'un article comme publié.
  • (détails… )
Scénario 4
Marquage d'un article comme archivé.
  • (détails… )

Dans le récit d'intégration, vous pouvez faire référence au récit de balisage si les détails de ce scénario doivent être vérifiés à nouveau ou si vous voulez simplement savoir si ces cas ont déjà été vérifiés..

Fonctionnalité
Permettre aux éditeurs de réviser les articles avant leur publication finale et d’imprimer leur approbation..
Scénario 1
Approuver un article prêt à être publié.
  • Donné que l'auteur a soumis un article pour publication
  • et l'éditeur a accédé à la vue de modification d'article
  • quand l'éditeur clique sur «approuver»
  • puis l'article est publié selon la date prévue
  • et l'éditeur voit une alerte de succès indiquant que l'article a été publié avec succès
  • et l'article est marqué «approuvé»(scénario de référence 2 de l'histoire de marquage)
  • et une notification est envoyée à l'auteur indiquant que son article a été approuvé.

Le but est d'éviter de répéter une documentation qui non seulement consomme du temps inutilement, mais aussi qui peut devenir désynchronisée.

Transformer les histoires d'utilisateurs en cas de test

Nous avons vu à quel point les histoires d'utilisateurs axés sur le comportement peuvent être utiles pour rédiger des exigences ciblées, concises, mais aussi complètes et descriptives. Dès la phase de conception, cet outil peut constituer un bon début pour les ingénieurs en assurance qualité lors de la rédaction de scénarios de test réels..

Outre ces avantages considérables, les histoires d'utilisateurs axés sur le comportement peuvent être transformées en tests fonctionnels à l'aide de logiciels tels que Cucumber ou Lettuce. L’idée de base est qu’une fois que les histoires sont écrites en utilisant la syntaxe Gherkin, vous pouvez les placer dans un .fonctionnalité fichier à l’intérieur de votre application, puis exécutez-les comme tests pour montrer s’ils ont réussi ou non. Pour un tutoriel détaillé sur l'utilisation de Lettuce pour une implémentation Python, consultez le tutoriel de David Sale:

Conclusion

Écrire des user stories en utilisant les principes de BDD peut servir à communiquer en détail les exigences commerciales et de conception, avec une approche centrée sur l'utilisateur, tout en utilisant un langage lisible par l'homme mais pouvant être étendu pour l'interprétation de logiciels. De plus, il peut être utilisé pour tester:

  • vos propres conceptions lorsque vous documentez les exigences
  • l'application réelle manuellement, une fois transformée en scénarios de test par un ingénieur en assurance qualité
  • l'application réelle automatiquement, lorsqu'elle est transformée en tests fonctionnels à l'aide du logiciel BDD.

Cela signifie plus de couches pour que les bogues puissent passer, ce qui évite les lacunes dans la conception et protège mieux votre application des défaillances de bogues..