A l'occasion de la conférence web2day du 14 juin 2018, Julie Rollin-Moustéou, Senior Product Manager chez Fabernovel Technologies, prend la parole sur les spécifications de webservices avec un seul outil.
"Sur tout projet faisant intervenir des webservices (donc presque tous les produits Web, Mobile ou Objets Connectés), Product Owner, QA Team et développeurs utilisent des outils spécifiques pour le test, la documentation et le mock de ces webservices.
Comment à partir d'une spécification unique, peut-on documenter, tester et bouchonner une API ?
2. 2//
Julie ROLLIN-MOUSTÉOU
Formation
Expériences
Développement JAVA chez Amadeus - Conseil en SI chez Deloitte -
Business Development chez Tech4Team (édition de logiciels) -
Product Management chez FABERNOVEL TECHNOLOGIES.
Projets
Senior Product Manager
# Gestion de projet
# Spécifications
fonctionnelles
# Webservices
# Process - Formation
3. 3//
Qui a déjà rencontré un
crash en front dû à une
réponse de webservice
non conforme à la
spécification initiale ?
6. 6//
Design UX/UI
IS legacy opening and
integraton
Front end web
Big Data, Smart
Data, Fast Data
Back end web
AI
(chat bots, machine
learning…)
SaaS - PaaS / Cloud IOT
Mobile Apps
(development,
product
management)
API management
Front end web
Architecture
Devops
8. 8//
Clients, Product/Project Managers et Développeurs
En tant qu’interlocuteur opérationnel privilégié du client, le Project Manager cherche la source du problème
Nous investiguons la
source du problème.
Mon application
a crashé !!!
9. 9//
Clients, Product/Project Managers et Développeurs
Le Project Manager regarde les logs du crash et identifie que le crash se produit lors d’un appel au webservice
D’où cela peut-il bien venir ?
Regardons les logs...
Cela semble lié à un appel côté
webservice !
Mon application
a crashé !!!
Nous investiguons la
source du problème.
10. 10//
Clients, Product/Project Managers et Développeurs
Le Project Manager demande à son développeur la source exacte du problème et comment il peut régler ce crash !
Tu pourrais m’en dire plus ?
Et tu pourrais corriger le souci stp ?
J’ai remarqué que le crash se produisait
lorsqu’on faisait cet appel…
C’est assez critique pour
ma cliente...
11. 11//
Clients, Product/Project Managers et Développeurs
Le développeur donne son diagnostic...
yes je vois tout à fait pourquoi
l’application crash à cet endroit précis...
12. 12//
Clients, Product/Project Managers et Développeurs
Le développeur donne son diagnostic : la spécification webservice initiale ne correspond pas à la réponse actuelle !
… c’est parce que la réponse actuelle que je reçois du webservice n’est pas la même que
celle contenue dans les spécifications utilisées au moment du développement !
13. 13//
Clients, Product/Project Managers et Développeurs
Chacun se demande quelle est la source de vérité… ???
À quelles spécifications
faisons-nous référence ?
À quelles spécifications
faisons-nous référence ?
À quelles spécifications
faisons-nous référence ?
C’est la version 1.5.0
envoyée début Avril non ?
La dernière que j’ai reçue
c’est la version 1.9.8 !
Moi j’avais la
version 1.9.7...
14. 14//
Hier : différents outils pour documenter, tester ou bouchonner des webservices
#2
TESTER
#1
DOCUMENTER
#3
BOUCHONNER
15. 15//
Hier : différents outils pour documenter, tester ou bouchonner des webservices
DOCUMENTER
(e.g. Word, Swagger)
16. 16//
Hier : différents outils pour documenter, tester ou bouchonner des webservices
DOCUMENTER
(e.g. Word, Swagger)
TESTER
(e.g. POSTMan)
17. 17//
Hier : différents outils pour documenter, tester ou bouchonner des webservices
BOUCHONNER
(e.g. WireMock)
DOCUMENTER
(e.g. Word, Swagger)
TESTER
(e.g. POSTMan)
18. 18//
Hier : différents outils pour documenter, tester ou bouchonner des webservices
BOUCHONNER
(e.g. WireMock)
DOCUMENTER
(e.g. Word, Swagger)
TESTER
(e.g. POSTMan)
22. 22//
Trois options possibles
Trouver un outil du marché
(POSTMan, Restlet intègrent de plus en
plus de features !)
Synchroniser différents outils
Forte dépendance aux autorisations
d’accès pour chaque outil
01
02
23. 23//
Trois options possibles
Trouver un outil du marché
(POSTMan, Restlet intègrent de plus en
plus de features !)
Synchroniser différents outils
Forte dépendance aux autorisations
d’accès pour chaque outil
Construire
un nouvel outil
01
02
03
24. 24//
Trois options possibles
Trouver un outil du marché
(POSTMan, Restlet intègrent de plus en
plus de features !)
Synchroniser différents outils
Forte dépendance aux autorisations
d’accès pour chaque outil
Construire
un nouvel outil
01
02
03
31. 31//
Attributs d’une ressource
Exemple : un utilisateur
{
"user": {
"id": 1200,
"firstname": "Arthur",
"lastname": "Martin",
"age": 17
}
}
Exemple de JSON
User
id
firstname
lastname
age
32. 32//
LIRE les données d’un
utilisateur
GET /users/:id
Routes
Exemple : un utilisateur
CRÉER un nouvel
utilisateur
POST /users
METTRE À JOUR les
données d’un
utilisateur
PUT /users/:id
SUPPRIMER les
données d’un
utilisateur
DELETE /users/:id
36. 36//
Représentations de ressource
Exemple : CRÉER un nouvel utilisateur
{
"title": "user",
"type": "object",
"properties": {
"firstname": {
"type": "string"
},
"lastname": {
"type": "string"
},
"required": ["firstname", "lastname"]
}
}
User
firstname
lastname
POST /users - Corps de la requête
37. 37//
Représentations de ressource
Exemple - LIRE les données d’un utilisateur
{
"title": "user",
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"firstname": {
"type": "string"
},
"lastname": {
"type": "string"
},
"age": {
"type": "integer",
"minimum": 0
},
"required": [“id”,"firstname", "lastname"]
}
}
User
id
firstname
lastname
age
GET /users/:id - Corps de la réponse
38. 38//
Documentation d’un webservice
L’ensemble des requêtes et des réponses
peuvent être décrites
par des représentations
de ressource.
REPRÉSENTATIONS DE RESSOURCES
PROJET
RESSOURCES
ATTRIBUTS ROUTES
REQUÊTES RÉPONSES
41. 41//
Spécifications d’un webservice au global
TOUTES les routes du projet utilisent des représentations de ressource
{defaultUser}
{userCreation}
{userUpdate}
{defaultHouse}
{userHouseUpdate}
...
{defaultCar}
{userCarUpdate}
...
{defaultJob}
{userJobUpdate}
...
42. 42//
Documentation d’un webservice
Tout un projet spécifié grâce aux
représentations de ses ressources !
Collection de JSON SCHEMA
REPRÉSENTATIONS DE RESSOURCES
PROJET
RESSOURCES
ATTRIBUTS ROUTES
REQUÊTES RÉPONSES
47. 47//
Clients et Product/Project managers
Perte de temps infinie en tentant de reproduire le cas qui a causé le crash...
Mon application crash
encore et toujours...
Je regarde !
OK je suis partie pour des heures de tests pour tenter
de reproduire le cas qui a causé le crash...
49. 49//
Product/Project managers et Développeurs
Perte de temps infinie dans la mise à jour de la documentation et des bouchons des webservices...
Pourrais-tu mettre à jour les
spécifications webservices du coup stp ?
Bien sûr...
Je dois modifier tout un tas de fichiers, des bouchons
et de la documentation... Quel cauchemar !
52. 52//
Clients, Products/Project managers et Développeurs
Il n’y a plus de souci - gain de temps effectif pour tout le monde !
Mes spécifications sont
toujours à jour
Je peux savoir rapidement
quand la documentation
est obsolète
Mettre des spécifications
et des bouchons à jour est
devenu beaucoup plus
simple !