web-dev-qa-db-fra.com

Critères d'acceptation pour les cas de bord

Je suis propriétaire d'un produit sur une équipe agile. Je fais des tests d'acceptation des Pô, je prends habituellement une note pour essayer des cas de bord. Ce n'est pas rare pour moi de découvrir quelque chose et je le transmise ensuite aux Devs. Je reviens de l'un des développeurs lorsque je rejette ses histoires. Il dit son injuste depuis que je ne précise pas les cas d'Edge et la manière dont le programme devrait répondre dans les critères d'acceptation, car il a tendance à coder pour seulement ce que je décris dans l'histoire. Je l'ai encouragé à me demander quand il heurte des cas de bord tout en codant, mais il pense que ce n'est pas son travail de penser à travers les cas de bord, sa mienne et je devrais faire de nouvelles histoires pour le prochain sprint.

Dans ma défense, je ne connais pas son design pour l'histoire qu'après qu'il l'enfonçait, il est donc difficile de parcourir toutes les possibilités (la configuration sera-t-elle dans un dB ou un fichier de propriétés?). Pour la simplicité, disons que nous avons une histoire pour ajouter une division à une application de calculatrice. Dans le monde de Scrum idéal, il incomberait-il d'ajouter une "fracture de la poignée par zéro scénario" aux critères d'acceptation ou qu'il devrait fonctionner à travers ces cas lorsqu'il se développe afin que l'application n'implose pas le 5/0? Pour être clair, dans ce cas, je n'accepterais pas si l'application s'est écrasée dur le 5/0, mais je passerais si elle se connecte, imprime Div0 ou tout autre moyen de gérer l'erreur ... Juste tant que ça ne 't crash.

9
feik

Je pense que la réponse est que vous devriez les deux penser à votre propre ensemble de cas de bord. SE Comme le Dev devrait gérer des cas de bord spécifiques spécifiques à des données, de sorte que l'application crash d'une entrée utilisateur donnée, 5/0 tombe certainement dans cette partie du spectre. Le développement devrait vous demander ce que vous pensez être un message d'erreur approprié lorsque l'entrée donnée dans le cadre de l'interaction de l'utilisateur conduit à quelque chose d'invalide.

Votre partie du spectre est l'entreprise des choses. Comment la calculatrice devrait-elle se comporter si le compte de l'utilisateur n'est pas autorisé à utiliser le bouton Diviser? Comment devrait-il se comporter lorsque le compte est autorisé à utiliser l'opération MOD mais n'a pas accès à la fonctionnalité Division?

Le message important que je pense que vous devez transmettre et avoir accepté de tous les membres de l'équipe pour que vous puissiez tous sur la même équipe. Si le produit n'est pas complet, le produit est pas complet et l'équipe est à blâmer, pas d'un membre donné.

14
Max Sorin

L'équipe doit travailler ensemble par opposition à avoir un "Pas mon travail, pas de ma responsabilité" Type d'attitude/mantra.

Les critères d'acceptation se présentent sous la forme de:

  • Acceptation des affaires
  • Acceptation de l'assurance qualité

En règle générale, l'acceptation de l'entreprise répond généralement à la question:

  • Est-ce que la fonctionnalité qui a été mise en œuvre fait ce que je veux faire?

La fonctionnalité aura un certain nombre d'exigences qui sont orientées sur les entreprises, comme si j'appuie sur ce bouton, je m'attends à ce que cette action se produise. Il énumérera les scénarios d'entreprise attendus et le comportement attendu, mais il ne couvrira pas tous cas possibles.

On s'attend à ce que les exigences commerciales soient définies avant une itération afin que l'assurance qualité puisse développer toute technique sur les exigences non commerciales. L'assurance de la qualité devrait développer des cas destructeurs ainsi que des cas de bord au besoin.

Les deux ensembles d'exigences devraient être examinés avant de commencer tout travail d'histoire afin d'obtenir une estimation formelle et un engagement pour l'unité de travail. Une fois que cela est fait, la fonctionnalité/histoires peut être travaillé. À ce stade, tout le monde est clair sur ce qui doit être livré à la fois d'une entreprise et d'un point de vue technique.

L'histoire atteint l'acceptation finale une fois que les membres de l'équipe d'assurance commerciale et de qualité se déconnectent sur l'histoire. Cela devrait arriver lors de l'itération pour l'acceptation de l'entreprise et l'acceptation de l'assurance qualité. C'est la définition de DAD (DOD) qui signale des travaux d'histoire supplémentaires peuvent être lancés.

Toute nouvelle constatation peut être connectée en tant que défauts ou pics supplémentaires. Dans un monde parfait, cela n'arriverait jamais, mais en réalité, il y a généralement une certaine quantité de "découverte" qui se produit lorsque vous travaillez sur une caractéristique/une histoire. C'est naturel.

Le L'équipe devrait travailler ensemble (entreprise, qa, développeur) à hacher tout type de requête de découverte nébuleuse. Si cela est agile, ils devraient tous être assis sur le même tableau pour favoriser la communication et la résolution rapide à toutes les questions qui peuvent survenir. Cela devrait aller quelque chose comme ça:

QA:

"Hé, Développeur Nous devrions gérer ce scénario particulier. J'ai découvert que si j'entraîne ces données, je reçois une erreur."

Dev:

"Ce n'était pas couvert dans aucune exigence, mais nous pouvons ajouter des fonctionnalités supplémentaires pour couvrir ceci. OK, Hey Entreprise Personne, comment> Vous aimeriez que l'application se comporte pour ce cas?"

ENTREPRISE:

"Montrons notre message d'erreur standard et laissons l'utilisateur à réessayer pour ce scénario. Combien d'effort supplémentaire sera alors?"

Dev:

"Ce sera facile, seulement une heure supplémentaire ou deux. Je peux m'engager à prendre pour cette itération. QA Veuillez mettre à jour vos critères d'acceptation pour ce scénario, nous n'avons pas besoin d'une histoire supplémentaire pour cela. Merci!"

Ou si c'est beaucoup de travail, une nouvelle histoire est ajoutée à l'arriéré. L'équipe peut toujours accepter l'histoire originale car elle répond à toutes les exigences initiales, puis récupérez l'histoire de Spike dans la prochaine itération.

11
Jon Raynor

Un logiciel qui se comporte de manière robuste face à une entrée incorrecte ou ambiguë est une partie essentielle d'un travail de développeur de logiciels.

Si vos développeurs ne le voient pas de cette façon, incluez des exigences non fonctionnelles supplémentaires dans les spécifications des exigences qui indiquent explicitement cette exigence et fournissent à vos développeurs un exemple de votre processus de test afin qu'ils puissent appliquer ce processus eux-mêmes avant de soumettre leur final Code pour examen.

Les tests d'acceptation devraient être une partie essentielle de tout document des exigences de toute façon. Si une exigence n'indique pas également ses critères d'acceptation, ce n'est pas vraiment une exigence; C'est un voeu.

5
Robert Harvey

Ce qui s'est passé ici est que vous avez VALEUR Découverte. La valeur d'entrée n'a pas été pensée lorsque les critères de l'histoire (et des critères d'acceptation) ont été écrits ou lorsque le code a été écrit. Si cela ne fait pas partie des critères d'acceptation, vous n'avez pas vraiment de base pour rejeter l'histoire.

Ce que nous ferons sur mon équipe est:

  1. Créer un bogue détaillant le comportement attendu et réel.
  2. Mettez à jour les critères d'acceptation afin que la nouvelle exigence trouvée soit documentée.
  3. Donnez la priorité au bogue avec toutes les autres histoires et bogues de la prochaine itération.

Le bénéfice ici est que vous êtes obligé de déterminer si ce bogue est la prochaine chose la plus importante à faire. Il peut être ou non être suffisamment important pour corriger, mais il est important que sa valeur soit considérée.

Bien sûr, vous devez toujours trouver un moyen d'encourager les développeurs (et vous-même) à explorer ces cas de bord à l'avance. Si votre équipe DEV ne dépense pas de temps en cas de dégradation des histoires, encouragez-les à avoir une session de planification détaillée avant de commencer les travaux sur eux.

4
RubberDuck

Quelques observations:

... Quand je rejette ses histoires

Je ne connais pas votre culture ou votre processus de travail, mais pour me rejeter une histoire est une étape grave. Si j'étais le devir, je produirais également une poussée à ce sujet, car il s'agit d'une action enregistrée qui me reflète mal sur moi et sur l'équipe.

Il dit son injuste depuis que je ne spécifie pas les cas de bord.

Il est injuste de lui de s'attendre à ce que vous connaissiez tous les cas de bord. Mais en même temps, il est injuste que vous vous attendez à celui de lui. Chaque changement a un risque et que les problèmes sont découverts, vous devez tous travailler ensemble en équipe pour y répondre.

Je ne connais pas son design pour l'histoire avant de l'enfiler

Vous ne devriez pas avoir à connaître la conception. Il peut être utile de connaître la conception afin de faire des suppositions initiales éduquées quant aux histoires plus faciles ou plus difficiles pour la gestion des arriérés. Mais évitez de piéger le développeur dans votre conception lorsque vous écrivez des histoires. Il suce tout le plaisir lorsque vous êtes simplement un clavier activé par la voix pour le PO.


On dirait que vous devriez travailler sur l'amélioration des processus et faire du bâtiment d'équipe. Certaines choses que je pourrais suggérer pour le processus:

  • Suggérez que le Dev inclure la durée de l'histoire à la couverture des cas de bord découvert. Heck, faites-le partie de chaque histoire d'utilisateur. Ceci est facilement défendable via le but de 0 nouveaux bugs introduits. Le problème est que le développement ne prévoit pas actuellement. Et il est hors de temps lorsque vous découvrez des problèmes. Cela va prendre du temps de toute façon, alors mettez-le dans l'histoire où il est visible pendant la planification.
  • Après votre test (et merci de tester à la manière!), Envoyez la liste de Dev une liste de problèmes découverts. La fixation de ces problèmes ira à l'encontre des "cas de fixation" condition de satisfaction.
  • Si quelque chose reste injustifié ou est découvert trop tard, décidez si l'histoire doit être poussée sur la base de l'accomplissement du cas d'utilisation. Les problèmes connus et les contours de travail se produisent. Divis-leur dans des notes de version et créez de nouvelles histoires pour les réparer.
  • S'il y a une tache rugueuse particulière dans le processus qui génère des pousses, changez votre processus! Après tout, l'amélioration du processus fait partie de Scrum. Par exemple, si votre device est contrarié lorsque vous rejetez l'histoire, vous suggérez à l'équipe un changement de processus afin que le rejet ne déclenche pas les correctifs. Faites les tests et les corrections précédents et rejetés.
  • Travaillez avec l'équipe et ce qu'ils ont produit et en tirer le meilleur parti de celui-ci. Ils ne font pas de travail parfait et non plus. Alors planifiez cela. Mes équipes ont généralement été Devops, nous avons donc une histoire d'utilisation de soutien imprévue de chaque sprint pour des problèmes émergents ... Planification de l'ONU-Plan-capable.
3
Kasey Speakman