2. Hello!
Je suis Sylvain Leroy
Vous pouvez me trouver sur :
sylvain.leroy@tocea.com / @sleroy0
about.me/sylvain_leroy
2007
Ingénieur
Recherche
Informatique
2011
Création
Société Tocea
2014
Acquisition Tocea
Groupe Metrixware
CTO Tocea
2015
Acquisition Echoes
Groupe Metrixware
CTO MetrixwareProjet Recherche
3. Ma Société
▧ Assistance Qualité / Recette
applications
▧ Modernisation automatique
d’applications
▧ Offre Intégration Usine
Logicielle
▧ Formateurs Bonnes Pratiques
/Cleancode / Qualité / Devops
▧ Distributeur Outils de
qualité de code
(Optimyth)
▧ Komea Dashboard
(Pilotage développements
par la
qualité/productivité)
▧ Offres Cobol/Mainframe
4. TOP 20 Justifications les plus courantes
▧ Cela fonctionne sur ma machine
▧ Ou étiez-vous quand le programme a crashé ?
▧ Pourquoi voulez-vous faire ceci ainsi ?
▧ Vous n’utilisez pas la bonne version du système d’exploitation
▧ Même si cela ne fonctionne pas, est-ce gênant ?
▧ Avez vous passé l’antivirus ?
▧ Quelqu’un a du changé mon code
▧ Cela fonctionne mais cela n’a pas été testé
▧ Ceci ne peut être à l’origine de Cela!
▧ Je ne peux pas tout tester!
▧ C’est juste une coïncidence malchanceuse
▧ Vous ne devez pas utiliser la dernière version du logiciel
▧ Je n’ai pas touché à ce module depuis des lustres!
▧ Il doit avoir quelque chose de bizarre dans vos données
▧ Qu’avez vous pu taper pour faire planter le logiciel ?
▧ Cela doit être un problème matériel
▧ Comment est-ce possible ?
▧ Cela fonctionnait hier
▧ Cela fonctionne sur ma machine
▧ Cela n’avait jamais cela avant
▧ C’est bizarre
▧ C’est normal, c’est une fonctionnalité
17. Utilisation de Git + GitFlow
https://danielkummer.github.io/git-flow-cheatsheet/
18.
19.
20. Les différentes Gates
Tests des fonctionnalités critiques (scénario nominal)
Charge <= 1JQ1
Tests complets : toutes les options sont testées, toutes
les interactions complexes
Charge : (max 1 semaine par env)
Q2
Q3
Tests de performance , sécurité
Charge : 1 à 2 semaine par env
Qg
Analyse qualimétrique du programme.
Règles de programmation, métriques
Charge : machine < 4h.
21. Casser un build lors de l’analyse qualimétrique
▧ Installation du plugin BuildBreaker de Sonar
▧ Définition d’alertes sur les métriques ciblées
43. Gestion des livraisons
▧ Les dates de release
doivent être planifiées
selon une fréquence
régulière
▧ La procédure et
l’outillage de release
doivent être documentés
▧ Identifiez et documentez
tous les éléments liés à
une unité de déploiement
▧ La fonction de release
doit être réalisée par une
entité autonome
▧ Les unités de déploiement
doivent être construites
tôt
▧ Le processus de
déploiement doit être
testé avant le déploiement
réel.
▧ Prévoyez un plan de
restauration
▧ Utilisez des outils
▧ Gérez et configurer les
outils
59. Astuces Tests unitaires
▧ Exécuter les tests en mémoire
▧ Ecrire les tests de manière à ce qu’ils soient indépendants
▧ Les tests doivent être isolés (pas d’effet de bord)
▧ Exécuter chaque test (pas d’@Ignore ou de /**/)
▧ Ecrire chaque test sous la forme d’une assertion (ou d’un
prédicat)
▧ Ecrire chaque test avec l’assertion la plus forte possible
▧ Assurez-vous que le code requis pour les tests et séparé
du code en production
▧ Refactorez avant de déboguer
▧ Ajoutez un timeout
▧ Nommez bien vos tests
▧ Utilisez des exceptions spécifiques
▧ Rendez vos tests exigeants
64. ▧ Tests unitaires
▧ Tests d’intégration
▧ Tests fonctionnels
▧ Tests d’acceptation
▧ Smoking Tests
▧ Tests de déploiement
▧ Tests du système
▧ Tests de performance
▧ Tests de sécurité
▧ Tests manuels
Les différents tests :
65.
66. 80%
Couverture de code optimale à
atteindre
(Pour les système ne menaçant pas la
vie humaine)
67. 50%
Le nombre de défauts en moyenne
supprimés par les (seuls) tests
unitaires
68. ▧ Au dessus, le coût de détection des bugs
est trop important
▧ Intégrés directement à Eclipse, Maven ..
▧ Utilisation de JUnit ou TestNG
▧ Suivre les évolutions (régulières) des
frameworks qui simplifient l’écriture
▧ Les tests unitaires c’est du code, écrivez-les
bien!
Tests unitaires
69. ▧ Approche BigBang
▧ Approche ToP/Down
▧ Approche Bottom/Up
▧ Problématique des bases de données :
mémoire, embarquée ou simple fichier ?
▧ Problématique de simulation des web-
services : bouchons, stubs,...
Tests d’intégration
Vérifier le fonctionnement des “grands” composants de
l’architecture
70. ▧ TF : fonctionnalités du logiciel / aux
spécifications.
▧ TS : fonctionnalités du logiciel / aux
exigences clients.
▧ Tests réalisés en boîte noire à partir d’un
livrable de l’IC
▧ 4 Vérifications :
Tests des fonctionnalités critiques (Smoke Testing)
Tests de validation de résultats (Sanity Testing)
Tests de non-régression
Tests d’ergonomie / utilisabilité
Tests fonctionnels / système
71. ▧ Créés généralement par le client
▧ Exprimés avec son vocabulaire (DDD)
▧ Tests boîte noire
▧ Utilisation d’outils comme Fitnesse peuvent
simplifier l’expression de ces tests.
Tests d’acceptation
72. ▧ Utilisation d’un outil de gestion d’exigences
et de scénarios de tests
▧ Un Cas de test doit avoir un objectif
▧ Une description de l’environnement de test
est requise
▧ L’installation de l’environnement de tests
doit être vérifiée
▧ Chaque cas de test doit être associé à un ou
plusieurs requirements
▧ Un cas de test doit être simple et
déterministe
Tests manuels
ANomalie : Toute condition qui dévie des attentes basées sur les exigences de spécifications, documents de conception, documents utilisateurs, standards etc, ou des perceptions ou expériences de quelqu’un. Les anomalies peuvent être trouvées pendant, mais pas uniquement, les revues, tests, analyses, compilations ou utilisation des produits logiciels ou de la documentation applicable [IEEE 1044]. Voir aussi défauts, déviation, erreur, faute, défaillance, incident, problème.
Versioner la documentation
Générer la documentation
Collaborer pour améliorer la documentatio
Wiki, etc
Versionner la documentation
Générer la documentation
Collaborer pour améliorer la documentatio
Versionner la documentation
Générer la documentation
Collaborer pour améliorer la documentatio
Versionner la documentation
Générer la documentation
Collaborer pour améliorer la documentatio
Versionner la documentation
Générer la documentation
Collaborer pour améliorer la documentatio
Versionner la documentation
Générer la documentation
Collaborer pour améliorer la documentatio
Versionner la documentation
Générer la documentation
Collaborer pour améliorer la documentatio
Versionner la documentation
Générer la documentation
Collaborer pour améliorer la documentatio
Versionner la documentation
Générer la documentation
Collaborer pour améliorer la documentatio
Versionner la documentation
Générer la documentation
Collaborer pour améliorer la documentatio
Versionner la documentation
Générer la documentation
Collaborer pour améliorer la documentatio