Tawfik NOURI
Comment utiliser le BDD
pour découvrir et spécifier les besoins métiers ?
17/10/19 3ème édition Soirée du Test Logiciel Sophia #STLS2019 1
BDD
ATDD
SBE
Merci aux Sponsors !
17/10/19 3ème édition Soirée du Test Logiciel Sophia #STLS2019 2
3
Qui suis-je ?
Tawfik NOURI
Expert Automatisation des Tests
Coach, Formateur
ATDD/BDD, Framwork ATDD/BDD (Specflow, Cucumber)
Automatisation des Tests (Web, Mobile)
Outils Tests Agiles (HipTest, Xray …)
https://www.linkedin.com/in/nouri-tawfik/
4
ALL4TEST en quelques mots
ALL4TEST est une ESN, pure player en QA et test logiciel depuis 2006.
ALL4TEST intervient en Consulting, POC outils, Accompagnement BDD/Agile, AT,
Externalisation de test (TRA).
Nous structurons également une cellule de R&D sur l’IA appliquée au test, le RPA
afin d’anticiper sur le futur du test logiciel
Nos Agences : Paris – Sophia Antipolis – Tunis
50 consultants / 30 % de croissance annuelle / recrute régulièrement des
passionné(e)s du test.
www.all4test.fr
contact@all4test.com
5
Les différentes perspectives
Pour toute règle il y a une exception, sauf celle-ci !
Règle générale
Une chose qui n'existe pas dans un contexte, existe
forcément dans un autre contexte !
Deuxième règle générale
8
Sommaire
Introduction à l’ATDD / BDD
Le Workflow BDD
Discovery
Requirement Workshop
Example Mapping
Formulation
Automation
Introduction à l’ATDD / BDD
10
Les tests d'acceptation, qu’est-ce que c’est ?
Tests d’acceptation :
Vue externe du système
SystèmeUtilisateur
Fournisseur
de services
Serveur
Les Interfaces externes
Les effets visibles de l'extérieur:
Les Entrées
Les sorties
Les changements d'état
11
Définitions
Critères d'acceptation:
Les idées générales
Tests d'acceptation:
Les tests spécifiques qui réussissent ou échouent
La triade (Amigos):
Le Testeur
Le Développeur
Le Business analyst
Testeur
Qualité
12
Voiture rapide
Qui en veut une ?
13
Voiture rapide
Travail en cours …
Approvision
nement
Autres …
Certification
R & D
Assemblage
mécanique
Câblage
électrique
14
Voiture rapide
Vitesse de 0 à 60 km/h en 10 minutes !
15
Voiture rapide
Vitesse de 0 à 60 km/h en x secondes !
Vitesse maximale = 60 km/h  !
16
Exemple de spécification
J’ai besoin d’un vélo qui dispose :
De pédales réglables
De freins efficaces
D’une selle confortable
De 12 vitesses
17
La solution livrée
18
La sonde Mars Climate Orbiter
19
Mars Climate Orbiter | Crash Report
Crash Report
Le crash a bien été causé par une erreur de conversion entre les
pieds et les mètres
Équipe Engins Spatiaux
(Colorado)
Équipe Navigation
(California)
Système Anglo-Saxon Système international
Le processus de développement traditionnel
21
La livraison de valeur | Le processus de développement traditionnel
Exigences Analyse Design DéploiementTestCode
22
Les boucles inutiles ?
Incompréhension
Exigences non claires, …
Feedback très lent
Feedback lent Feedback rapide
RéelVoulu
23
Le BDD
✔️ Le BDD est une pratique de collaboration
en utilisant des conversations à propos des
exemples et de règles métier pour renforcer
la compréhension partagée afin de
construire la bonne application.
ExemplesConversations
Compréhension
partagée
24
BDD: Les pratiques et les livrables
Compréhension
partagée
Documentation
vivante
Spécification
exécutable
Les trois livrables:
Discovery AutomationFormulation
Les trois pratiques:
25
Comportement ?
Conséquence
Contexte
ActionComportement
26
Exemple Voiture rapide
Mouvement
Voiture
Accélération
Bruit
Implémentation Indépendante
27
Discovery
Exigences
Voiture rapide
Scénario Scénario
Amigos
Accélération Vitesse maximale
Scénario
Autre
28
Scénario BDD Template
Given
(Setup)
État initial du système
When
(Trigger)
Une action ou un événement
Then
(Assert)
Nouvel état du système / Output
29
Scénario BDD Template
Given
(Setup)
Given (Setup):
La voiture à l'arrêt
When
(Trigger)
When (Trigger):
Appuyer sur l'accélérateur
Then
(Assert)
Then (Assert):
La vitesse de 60 km/h est atteinte avant 10 secondes
30
Scénario BDD Template
Scenario: Vitesse de 60 km/h avant 10 secondes
Given La voiture à l'arrêt
When Appuyer sur l'accélérateur
Then La vitesse de 60 km/h est atteinte avant 10 secondes
Le Workflow BDD
32
The Big Picture: BDD Workflow
#2
Requirement
Workshop
#1 Pick a
User Story
#4 Review
#3
Formulate
#5
Automate
#6 Implement
(TDD)
#7
Supplementary
tests
#8
Release
Livre Discovery (Gaspar Nagy + Seb Rose)
Develop
Discovery
34
Atelier de découverte | Qui ?
3 Amigos ≠ 3 Personnes
QA/UXDev/Ops <
PO/BA<
35
Discovery: Concrètement ?
User Story : Retirer de l'argent au distributeur
Règle métier : Limite quotidienne de retrait
Si limite=500€
Et déjà retrait = 250€ le 17 Oct.
Montant=250€ le 17 Oct.
 OK
Si limite=500€
Et déjà retrait = 250€ le 17 Oct.
Montant=251€ le 17 Oct.
 REFUSÉ
Si limite=500€
Et déjà retrait = 250€ le 17 Oct. 23h59
Montant=251€ le 18 Oct. 00h01
 ??
36
Une règle métier simple
AUTORISÉ ?
REFUSÉ ?
37
Une règle métier simple
Si limite=500€
Et déjà retrait = 250€ le 17 Oct. 23h59
Montant=251€ le 18 Oct. 00h01
 REFUSÉ
Example Mapping
39
Example Mapping
Exemple 1
Fonctionnalité / User Story Question 1
Règle 1
Exemple 2
Exemple 3
Exemple 1
Règle 2
Exemple 2
Exemple 3
Exemple 1
Règle 3
Exemple 2
Exemple 3
Question 2
Question 3
40
Démonstration Example Mapping:
50€  OK
User Story : Retirer au distributeur
Si le client a une
marge ?
Par tranche de 50€
51€  ERR
100€  OK
500€ à 15h
1€ à 16h
 Refusé
Limite quotidienne de retrait
500€ à 10h le 17 Oct.
1€ à 10h le 18 Oct.
 OK
500€ à 23h59 le 17 Oct.
1€ à 00h01 le 18 Oct.
 Refusé
…
Doit avoir assez de fonds
…
Si la carte 1710 est bloquée
Et le client essaie de retirer
?
Nouvelle US: Fraude
Exemple BDD
42
Une Simple App
43
Une règle métier simple
Si la catégorie du client est bonne et que le total de la commande est inférieur ou égal à 10,00 €:
Alors PAS de remise
Sinon, Une remise de 1%.
Si la catégorie du client est excellente:
Une remise de 1% pour toute commande.
Si le total de la commande est supérieur à 50,00 €:
Une remise de 5%.
Étant donné un client dont la catégorie est bonne
Et un total de commande de 50.01 €
Quelle devrait être la remise ?
44
Une règle métier simple
1% ?
5% ?
6% ?
45
Une règle métier simple
Total de la commande Catégorie du client Remise en %
50,01€ Bonne 1%
Given
When
Then
10,00€ Bonne 0%
10,01€ Bonne 1%
01,00€ Excellente 1%
50,00€ Excellente 1%
50,01€ Excellente 5%
46
Une Simple App
47
Button « Aide ? »
Version Cliques / h
1.0 2
Version Cliques / h
2.0 5
Version Cliques / h
3.0 20
Test d'utilisabilité
Formulation
49
Spécification, Sous quel format ?
Given
When
Then
PO/BA:
Valeur
QA/UX:
Détails & Utilisabilité
DEV/OPS:
Faisabilité
50
XUINIT, JUINIT …
Un scénario automatisé mais n'est pas communicant
51
Table
Un scénario automatisé et communicant
Total de la commande Catégorie du client Remise en %
50,01€ Bonne 1%
10,00€ Bonne 0%
10,01€ Bonne 1%
01,00€ Excellente 1%
50,00€ Excellente 1%
50,01€ Excellente 5%
52
Gherkin : un langage textuel et simple
Feature: Calcul de la remise
Scenario Outline: Calcul de la remise pour un totale de commande
Given le total de la commande est <Total>
And la catégorie du client est <Catégorie>
When la remise est calculée
Then le pourcentage de la remise est <Pourcentage>
Examples:
| Total | Catégorie | Pourcentage |
| 10.00 | "BONNE" | 0 |
| 10.01 | "BONNE" | 1 |
| 50.01 | "BONNE" | 1 |
| 0.01 | "EXCELLENTE" | 1 |
| 50.00 | "EXCELLENTE" | 1 |
| 50.01 | "EXCELLENTE" | 5 |
Un scénario automatisé et communicant
53
Les terminologie des affaires
Catégorie de client
Bonne
Excellente
DSL: Domain Specific Language
Super Excellente
54
Given / When / Then
Les Valeurs de Then vient de:
Given
(Setup)
When
(Trigger)
Then
(Assert)
Règles
métier
Given
When
Règles métier
Automation
56
Table de Tests
Feature: Calcul de la remise
Scenario Outline: Calcul de la remise pour un totale de commande
Given le total de la commande est <Total>
And la catégorie du client est "<Catégorie>"
When la remise est calculée
Then le pourcentage de la remise est <Pourcentage>
Examples:
| Total | Catégorie | Pourcentage |
| 10.00 | BONNE | 0 |
| 10.01 | BONNE | 1 |
| 50.01 | BONNE | 1 |
| 0.01 | EXCELLENTE | 1 |
| 50.00 | EXCELLENTE | 1 |
| 50.01 | EXCELLENTE | 5 |
57
La pyramide des tests
Small
(Fast)
Medium
Large
(Slow)
ATDD/BDD (6)
GUI /Script (1)
Cucumber
59
Cucumber
Cucumber workflow
Cucumber
Fichier «Feature» step definitions Code production
Lecture Exécution
Exécution
Selenium (UI)
60
Cucumber / Step definitions
Step definitions
Cucumber
Fichier «Feature» step definitions Code production
Lecture Exécution
Exécution
61
Documentation Vivante
62
Outils | Framework ATDD/BDD
FitNesse: http://fitnesse.org/
Cucumber: https://cucumber.io/
Jbehave: http://jbehave.org/
Fit: http://fit.c2.com/
Hiptest: https://hiptest.com/
behat http://behat.org/en/latest/
63
Le Pipline avec l’ATDD / BDD
64
ATDD / BDD & Shift-left testing
Exigences
Analyse
Avec Tests
Design
avec
Tests
Code
avec
Tests
Test Deploy
Testeur
Qualité
Compréhension partagée
65
TestDev <
Métier<
Les amigos ensemble pour une meilleure collaboration
66
Restons en contact
Besoin de support, de consultants sur le sujet ?
contact@all4test.com
Tel : 0671594711
Suivre des dossiers sur le test
https://www.all4test.fr/dossiers-thematiques/
67
68
Merci pour votre
attention

2019 - NOURI - ALL4TEST- Le BDD pour decouvrir et specifier les besoins metiers_FINAL

  • 1.
    Tawfik NOURI Comment utiliserle BDD pour découvrir et spécifier les besoins métiers ? 17/10/19 3ème édition Soirée du Test Logiciel Sophia #STLS2019 1 BDD ATDD SBE
  • 2.
    Merci aux Sponsors! 17/10/19 3ème édition Soirée du Test Logiciel Sophia #STLS2019 2
  • 3.
    3 Qui suis-je ? TawfikNOURI Expert Automatisation des Tests Coach, Formateur ATDD/BDD, Framwork ATDD/BDD (Specflow, Cucumber) Automatisation des Tests (Web, Mobile) Outils Tests Agiles (HipTest, Xray …) https://www.linkedin.com/in/nouri-tawfik/
  • 4.
    4 ALL4TEST en quelquesmots ALL4TEST est une ESN, pure player en QA et test logiciel depuis 2006. ALL4TEST intervient en Consulting, POC outils, Accompagnement BDD/Agile, AT, Externalisation de test (TRA). Nous structurons également une cellule de R&D sur l’IA appliquée au test, le RPA afin d’anticiper sur le futur du test logiciel Nos Agences : Paris – Sophia Antipolis – Tunis 50 consultants / 30 % de croissance annuelle / recrute régulièrement des passionné(e)s du test. www.all4test.fr [email protected]
  • 5.
  • 6.
    Pour toute règleil y a une exception, sauf celle-ci ! Règle générale
  • 7.
    Une chose quin'existe pas dans un contexte, existe forcément dans un autre contexte ! Deuxième règle générale
  • 8.
    8 Sommaire Introduction à l’ATDD/ BDD Le Workflow BDD Discovery Requirement Workshop Example Mapping Formulation Automation
  • 9.
  • 10.
    10 Les tests d'acceptation,qu’est-ce que c’est ? Tests d’acceptation : Vue externe du système SystèmeUtilisateur Fournisseur de services Serveur Les Interfaces externes Les effets visibles de l'extérieur: Les Entrées Les sorties Les changements d'état
  • 11.
    11 Définitions Critères d'acceptation: Les idéesgénérales Tests d'acceptation: Les tests spécifiques qui réussissent ou échouent La triade (Amigos): Le Testeur Le Développeur Le Business analyst Testeur Qualité
  • 12.
  • 13.
    13 Voiture rapide Travail encours … Approvision nement Autres … Certification R & D Assemblage mécanique Câblage électrique
  • 14.
    14 Voiture rapide Vitesse de0 à 60 km/h en 10 minutes !
  • 15.
    15 Voiture rapide Vitesse de0 à 60 km/h en x secondes ! Vitesse maximale = 60 km/h  !
  • 16.
    16 Exemple de spécification J’aibesoin d’un vélo qui dispose : De pédales réglables De freins efficaces D’une selle confortable De 12 vitesses
  • 17.
  • 18.
    18 La sonde MarsClimate Orbiter
  • 19.
    19 Mars Climate Orbiter| Crash Report Crash Report Le crash a bien été causé par une erreur de conversion entre les pieds et les mètres Équipe Engins Spatiaux (Colorado) Équipe Navigation (California) Système Anglo-Saxon Système international
  • 20.
    Le processus dedéveloppement traditionnel
  • 21.
    21 La livraison devaleur | Le processus de développement traditionnel Exigences Analyse Design DéploiementTestCode
  • 22.
    22 Les boucles inutiles? Incompréhension Exigences non claires, … Feedback très lent Feedback lent Feedback rapide RéelVoulu
  • 23.
    23 Le BDD ✔️ LeBDD est une pratique de collaboration en utilisant des conversations à propos des exemples et de règles métier pour renforcer la compréhension partagée afin de construire la bonne application. ExemplesConversations Compréhension partagée
  • 24.
    24 BDD: Les pratiqueset les livrables Compréhension partagée Documentation vivante Spécification exécutable Les trois livrables: Discovery AutomationFormulation Les trois pratiques:
  • 25.
  • 26.
  • 27.
  • 28.
    28 Scénario BDD Template Given (Setup) Étatinitial du système When (Trigger) Une action ou un événement Then (Assert) Nouvel état du système / Output
  • 29.
    29 Scénario BDD Template Given (Setup) Given(Setup): La voiture à l'arrêt When (Trigger) When (Trigger): Appuyer sur l'accélérateur Then (Assert) Then (Assert): La vitesse de 60 km/h est atteinte avant 10 secondes
  • 30.
    30 Scénario BDD Template Scenario:Vitesse de 60 km/h avant 10 secondes Given La voiture à l'arrêt When Appuyer sur l'accélérateur Then La vitesse de 60 km/h est atteinte avant 10 secondes
  • 31.
  • 32.
    32 The Big Picture:BDD Workflow #2 Requirement Workshop #1 Pick a User Story #4 Review #3 Formulate #5 Automate #6 Implement (TDD) #7 Supplementary tests #8 Release Livre Discovery (Gaspar Nagy + Seb Rose) Develop
  • 33.
  • 34.
    34 Atelier de découverte| Qui ? 3 Amigos ≠ 3 Personnes QA/UXDev/Ops < PO/BA<
  • 35.
    35 Discovery: Concrètement ? UserStory : Retirer de l'argent au distributeur Règle métier : Limite quotidienne de retrait Si limite=500€ Et déjà retrait = 250€ le 17 Oct. Montant=250€ le 17 Oct.  OK Si limite=500€ Et déjà retrait = 250€ le 17 Oct. Montant=251€ le 17 Oct.  REFUSÉ Si limite=500€ Et déjà retrait = 250€ le 17 Oct. 23h59 Montant=251€ le 18 Oct. 00h01  ??
  • 36.
    36 Une règle métiersimple AUTORISÉ ? REFUSÉ ?
  • 37.
    37 Une règle métiersimple Si limite=500€ Et déjà retrait = 250€ le 17 Oct. 23h59 Montant=251€ le 18 Oct. 00h01  REFUSÉ
  • 38.
  • 39.
    39 Example Mapping Exemple 1 Fonctionnalité/ User Story Question 1 Règle 1 Exemple 2 Exemple 3 Exemple 1 Règle 2 Exemple 2 Exemple 3 Exemple 1 Règle 3 Exemple 2 Exemple 3 Question 2 Question 3
  • 40.
    40 Démonstration Example Mapping: 50€ OK User Story : Retirer au distributeur Si le client a une marge ? Par tranche de 50€ 51€  ERR 100€  OK 500€ à 15h 1€ à 16h  Refusé Limite quotidienne de retrait 500€ à 10h le 17 Oct. 1€ à 10h le 18 Oct.  OK 500€ à 23h59 le 17 Oct. 1€ à 00h01 le 18 Oct.  Refusé … Doit avoir assez de fonds … Si la carte 1710 est bloquée Et le client essaie de retirer ? Nouvelle US: Fraude
  • 41.
  • 42.
  • 43.
    43 Une règle métiersimple Si la catégorie du client est bonne et que le total de la commande est inférieur ou égal à 10,00 €: Alors PAS de remise Sinon, Une remise de 1%. Si la catégorie du client est excellente: Une remise de 1% pour toute commande. Si le total de la commande est supérieur à 50,00 €: Une remise de 5%. Étant donné un client dont la catégorie est bonne Et un total de commande de 50.01 € Quelle devrait être la remise ?
  • 44.
    44 Une règle métiersimple 1% ? 5% ? 6% ?
  • 45.
    45 Une règle métiersimple Total de la commande Catégorie du client Remise en % 50,01€ Bonne 1% Given When Then 10,00€ Bonne 0% 10,01€ Bonne 1% 01,00€ Excellente 1% 50,00€ Excellente 1% 50,01€ Excellente 5%
  • 46.
  • 47.
    47 Button « Aide? » Version Cliques / h 1.0 2 Version Cliques / h 2.0 5 Version Cliques / h 3.0 20 Test d'utilisabilité
  • 48.
  • 49.
    49 Spécification, Sous quelformat ? Given When Then PO/BA: Valeur QA/UX: Détails & Utilisabilité DEV/OPS: Faisabilité
  • 50.
    50 XUINIT, JUINIT … Unscénario automatisé mais n'est pas communicant
  • 51.
    51 Table Un scénario automatiséet communicant Total de la commande Catégorie du client Remise en % 50,01€ Bonne 1% 10,00€ Bonne 0% 10,01€ Bonne 1% 01,00€ Excellente 1% 50,00€ Excellente 1% 50,01€ Excellente 5%
  • 52.
    52 Gherkin : unlangage textuel et simple Feature: Calcul de la remise Scenario Outline: Calcul de la remise pour un totale de commande Given le total de la commande est <Total> And la catégorie du client est <Catégorie> When la remise est calculée Then le pourcentage de la remise est <Pourcentage> Examples: | Total | Catégorie | Pourcentage | | 10.00 | "BONNE" | 0 | | 10.01 | "BONNE" | 1 | | 50.01 | "BONNE" | 1 | | 0.01 | "EXCELLENTE" | 1 | | 50.00 | "EXCELLENTE" | 1 | | 50.01 | "EXCELLENTE" | 5 | Un scénario automatisé et communicant
  • 53.
    53 Les terminologie desaffaires Catégorie de client Bonne Excellente DSL: Domain Specific Language Super Excellente
  • 54.
    54 Given / When/ Then Les Valeurs de Then vient de: Given (Setup) When (Trigger) Then (Assert) Règles métier Given When Règles métier
  • 55.
  • 56.
    56 Table de Tests Feature:Calcul de la remise Scenario Outline: Calcul de la remise pour un totale de commande Given le total de la commande est <Total> And la catégorie du client est "<Catégorie>" When la remise est calculée Then le pourcentage de la remise est <Pourcentage> Examples: | Total | Catégorie | Pourcentage | | 10.00 | BONNE | 0 | | 10.01 | BONNE | 1 | | 50.01 | BONNE | 1 | | 0.01 | EXCELLENTE | 1 | | 50.00 | EXCELLENTE | 1 | | 50.01 | EXCELLENTE | 5 |
  • 57.
    57 La pyramide destests Small (Fast) Medium Large (Slow) ATDD/BDD (6) GUI /Script (1)
  • 58.
  • 59.
    59 Cucumber Cucumber workflow Cucumber Fichier «Feature»step definitions Code production Lecture Exécution Exécution Selenium (UI)
  • 60.
    60 Cucumber / Stepdefinitions Step definitions Cucumber Fichier «Feature» step definitions Code production Lecture Exécution Exécution
  • 61.
  • 62.
    62 Outils | FrameworkATDD/BDD FitNesse: http://fitnesse.org/ Cucumber: https://cucumber.io/ Jbehave: http://jbehave.org/ Fit: http://fit.c2.com/ Hiptest: https://hiptest.com/ behat http://behat.org/en/latest/
  • 63.
    63 Le Pipline avecl’ATDD / BDD
  • 64.
    64 ATDD / BDD& Shift-left testing Exigences Analyse Avec Tests Design avec Tests Code avec Tests Test Deploy Testeur Qualité Compréhension partagée
  • 65.
    65 TestDev < Métier< Les amigosensemble pour une meilleure collaboration
  • 66.
    66 Restons en contact Besoinde support, de consultants sur le sujet ? [email protected] Tel : 0671594711 Suivre des dossiers sur le test https://www.all4test.fr/dossiers-thematiques/
  • 67.
  • 68.