Sécurité dans les contrats d'externalisation de services de développement et ...
QUICKIE: Les bugs sont vos alliés _ saisissez cette opportunité d’amélioration continue.pptx
1. Les bugs sont vos alliés : ne manquez
pas cette opportunité d’amélioration
continue
Par Dennis Bordet
2. Dennis BORDET, développeur Android
chez BAM
Tech Lead Android
Investigateur de bug / sourcier
Organisateur de la formation des développeurs à
l’investigation des bugs
Serial bug fixer
3. Dennis BORDET n’a pas toujours été
investigateur de bug
Début de carrière dans une grande ESN
Corriger les bugs ne veut pas dire les étudier
BAM → Lean → limiter le gaspillage
→ étude des problèmes
5. C’est quoi un bug ?
C’est un comportement qui ne correspond
pas à ce qui est indiqué dans les specs
6. C’est quoi un bug ?
C’est un comportement qui ne correspond
pas à ce qui est indiqué dans les specs
7. C’est quoi un bug ?
Tout comportement inattendu pour l’utilisateur
ou le client.
8. C’est quoi un bug ?
Tout comportement inattendu pour l’utilisateur
ou le client.
Par exemple :
- Un utilisateur a peu de réseau
- l’utilisateur clique sur un bouton,
- Mon app envoie une requête HTTP,
- L’app n’a pas de témoin de loading,
- la requete HTTP répond 10 secondes plus
tard avec succès
- L’utilisateur a rencontré un bug
9. Comment identifier et corriger un bug ?
Désolé, cette conférence n’en parle pas.
🔗debug.guide
10. Pré-requis: Avoir identifié le bug Étudier l’introduction du bug ET sa détection
tardive
Comment étudier un bug ?
11. Le QRQC : la méthode
pour tirer des
apprentissages de nos
bugs
1. Contexte et identification du
problème
Comment étudier un bug ?
12. - ligne de code en erreur
- le commit d’introduction
- la merge request
- le ticket / l’US
- le geste de
développement / de
conception
- La ligne de code qui
corrige le bug
Comprendre l’intention du
développement
1. Contexte et identification du problème
→ Pour mieux identifier les causes
→ Pour challenger l’analyse
→ Pour partager les
apprentissages
13. Le QRQC : la méthode
pour tirer des
apprentissages de nos
bugs
1. Contexte et
identification du
problème
2. Trouver des hypothèses
de cause d’introduction
Comment étudier un bug ?
14. Points clefs
- Se remettre en question
- Ne pas rejeter la faute
- les 4M
- Imbriquer les “pourquoi ?”
- Creuser les causes internes
- Ne pas mélanger les causes et solutions
2. Trouver des hypothèses de cause d’introduction
Causes typiques:
- Archi
- Geste de
développement
- Découpage
- DDD
- Design pattern
- Structure de donnée
15. Le QRQC : la méthode
pour tirer des
apprentissages de nos
bugs
1. Contexte et
identification du
problème
2. Trouver des hypothèses
de cause d’introduction
Comment étudier un bug ?
3. Étudier la détection tardive du
bug
16. 3. Étudier la détection tardive du bug
Ouverture MR
Merge
Master Release
Dev Relecture Validation
Recette
Prod
A B C D
17. Pourquoi mon bug n’a pas été détecté dans les
points de contrôle précédents ?
→ même méthode que les hypothèses d’introduction
3. Étudier la détection tardive du bug
Plus un bug est détecté tard, plus il va être couteux
18. Le QRQC : la méthode
pour tirer des
apprentissages de nos
bugs
1. Contexte et
identification du
problème
2. Trouver des hypothèses
de cause d’introduction
Comment étudier un bug ?
3. Étudier la détection
tardive du bug
4. Définir des actions
19. -> Pour empêcher une ré-
introduction du bug
-> Pour détecter plus tôt une
introduction du bug
-> Pour chercher d’autres
occurrences de ce bug
Une ou plusieurs actions à
long terme.
Identifiez la plus intéressante,
pragmatique, rentable, rapide,
motivante
4. Définir des actions
Une action court terme pour
corriger le bug.
Dans le cas où la
correction originale ne faisait
que contourner le bug.
Dans le cas où il existe
d’autres occurrences du bug
20. Doit amener à un changement
dans le système de travail de
l’équipe
En lien avec la cause du bug
4. Définir des actions
Ne doit pas alourdir le
processus de développement
22. KPI précis sur vos bugs
● Délai de détection
● Phase de détection (A, B, C, D)
● Période de détection
● Comparaison pour chaque release /
feature
23. Quels sont vos points faibles ?
● Chaque bug, un point faible
● Classement des points faibles
● -> Prise d’action priorisée
24. Outils de travail manquants / à
améliorer ?
● Les recherches de solutions vont
vous pousser à améliorer vos outils
de travail
○ Linter
○ CI/CD
○ Tests
○ Doc
● Veille régulière sur ce qui se fait
28. Dantotsu
Un livre sur l’amélioration de la qualité
chez Toyota.
Parle de la gestion des défauts, entre
autres.
Catégorisation ABCD
29. RTFT
Right the first time
Compter le nombre d’essais avant d’avoir implémenté votre
ticket
=> TDD
=> Nouveaux points faibles unlocked
Notes de l'éditeur
Ecouter podcast de marek: compter les bugs jusqu’a 0: 11min30
E
Je peux vous conseiller ce très bon site qui vous aidera à debugguer en 20 etapes. Attention la première va vous surprendre
Se remettre en question
se mettre dans un objectif d’apprentissage, pas dans une attitude de justification
Ne pas rejeter la faute sur les autres
Si chacun s’approprie une part de responsabilité c’est souvent bien plus constructif
s’aider des 4M pour trouver les causes
man -> formation, equipe,
method -> methode de travail adéquate au sujet ?
material -> input sont bons ?
machine -> les outils de dev sont OK ?
Imbriquer les “pourquoi?”
A la maniere un peu bete d’un enfant qui repete sans cesse pourquoi ? afin de trouver la cause en profondeur
Ca ne sert a rien de creuser des causes externes sur lesquelles vous n’avez pas la main
Si une librairie que vous utilisez est bugguée, a la limite vous pouvez remonter le probleme, ouvrir une issue sur github, mais concentrez vous sur ce que vous pouvez vraiment faire a votre echelle.
Est ce que c’est la lib adequate ?
Est ce qu’on l’a bien intégrée ?
Ne pas mélanger les causes et solutions
“la cause c’est que la CI ne nous remonte pas le problème au developpeur” -> KO
“la cause c’est que le développeur a pu creer ce probleme sans s’en apercevoir” -> c’est deja mieux
(Attention sur cet exemple c’est une cause de non détection, pas d’introduction)
Au niveau des causes typiques, on peut rechercher plusieurs choses:
archi au sens large: ca va de ->
Est ce que les responsabilités des composants sont bien définie
Nommage adéquat ?
Gest de dev
Refactorisation bien effectuée ?
Librairie utilisée correctement ?
Découpage : conception, implementation
commits un peu trop gros
Merge request trop grosse
Le ticket lié aux developpement n’est pas bien décrit techniquement ou fonctionnellement
DDD
Est ce que le fonctionnel semble bien compris ?
Code smells sur le nommage ou la conception encore une fois
Design pattern
Bien implémenté
adapté ?
anti pattern
Structure de donnée
Est ce que la structure de donnée choisie est celle qui est la mieux adapté pour mon cas ?
L’action court terme s’il y en a une, il faut la considérer comme obligatoire.
(
-> Vous corrigez le bug pour de vrai si jamais votre premiere correction ne traitait pas la root cause ou bien ne faisait que contourner le probleme
-> vous corrigez les autres occurences (ou a minima vous les identifiez dans votre DB de bug)
)
Doit amener à un changement dans le système de travail de l’équipe
sinon vous risquer de blamer une personne plutot que de permettre à l’équipe de s’améliorer
Ex: L’action “former Kevin aux coroutines” ca n’est pas une bonne action. Alors que “s’assurer que toute l’équipe est formée aux coroutines et améliorer l’onboarding des nouveaux sur le projet (et meme peut etre dans l’entreprise)” ca, ca amène du changement
Petit commentaire, la formation est rarement la solution au problème, il manque souvent un filet de sécurité pour ne pas insérer le problème
DeuxiemementL’action Ne doit pas alourdir le processus de développement
Sinon la qualité ne sera pas priorisé car trop couteuse ou embetante.
Par exemple: avant chaque commit, le developpeur doit relire son code et cocher les 10 cases du commit parfait. C’est trop lourd, il ne le fera pas
Troisiemement,
l’action doit etre en lien avec la (ou les) rootcauses, sinon on va traiter des causes superficielles qui risquent de ne rien apporter
Ca c’est deja une seconde étape, vous pouvez prendre des actions sur vos bugs meme sans avoir priorisé ses actions par rapport à votre base de donnée d’analyse de bug