SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
Stratégie de Test
La faire bien pour en faire moins
1
Nicolas Fédou
• Artisan Développeur chez
• Coach Craft
• Aka. Coach Technique
• Aka formateur et accompagnant en
bonnes pratiques de développement
agile
• Ex-Testeur du logiciel des CFM56
(Moteur d’avion)
2
L’origine
• Développement en phases longues
• IE. : Livraison tous les 6 mois
=> 6 livraisons en 3 ans
• Livraison de périmètres fonctionnels complets,
non remis en cause plus tard (dans l’idéal ☺)
Valider
Appels
Code « métier »
T
3
L’origine
Stratégie de tests :
l’art de sélectionner les tests fonctionnels à jouer
pour éviter les régressions
et évidement montrer la présence des évolutions
4
Les demandes clients d’aujourd’hui
• Nous avons du mettre en place une phase de stabilisation, mais
• Elle nous prend du temps et de l’énergie
Temps
QA / Stabilisation
5
Itération Données / IO Tests Ambiance
Sprint 0
S + 1
S + 2
Les demandes clients d’aujourd’hui
• Nous avons une campagne de tests automatisés, mais
• Elle nous demande trop d’efforts
• À concevoir ou produire
• À maintenir
• Elle dure trop longtemps
• La CI bloque de plus en plus
• Les développeurs ne les lancent
plus
6
Une stratégie de tests « agile »
•Est l’ensemble des moyens et pratiques que
l’on se donne pour construire un produit de
qualité.
•Est une façon de s’organiser pour avoir
toutes les preuves de qualité logicielle
nécessaires et suffisantes à moindre
effort pour livrer le produit en continu.
7
Stratégies d’hier
Tests fonctionnels End 2 End : manuels ou « manuels robotisés »
Sur toute la stack technique
Valider
Appels
Code « métier »
T
8
Stratégies d’hier
Tests fonctionnels End 2 End : une « user journey » de bout en bout
End
Start
M
O
S
C
O
W
10
S’organiser seulement pour livrer :
« à la James Dean »
Livrer permet juste
d’entrer dans la
course
L’édition de logiciel
est un coût
Un logiciel ne rapporte
qu’en production
11
La qualité permet
de rester dans la course
Les tests sont
des preuves de qualité
S’organiser seulement pour livrer :
« à la James Dean »
12
• Un test, c’est exercer une pression sur un système
Pour en constater la réponse
Pour obtenir un feedback délibérément
Comme d’habitude ☺
Le test en théorie
14
Program testing can be
used to show the presence of bugs,
but never to show their abscence !
Notes on
Structured
programming, 1970
Edsger Djikstra
15
Le test en pratique
•Un test montre un fonctionnement attendu
Il réduit la probabilité d’un défaut sur une fonctionnalité
•Un ensemble de tests décrivant toutes les facettes
d’une fonctionnalité…
+ de mesures, - de surprises,
- d’évolutions sans casser de tests
16
Nous avons le budget pour produire la qualité, mais pour …
• La démontrer avec des tests, avant la mise en production
• Faire face aux risques (sécurité, pannes, …)
• Tenir tous les enjeux (performance, charge, …)
Les critères de qualités n’ont pas de limites, nos budgets en ont une.17
Qualité Vs Budget
Priorisation par les risques
Coût d’un risque = probabilité perçue * impact perçu
George Fairbanks, Chapter 3 of the book Just Enough Software Architecture: A Risk-Driven Approach
http://www.methodsandtools.com/archive/agilesoftwarearchitecture.php
Preuves de qualités Confiance
Zone de fiabilité Zone d’acceptation du risque
18
Priorisation par les risques
Risques non acceptables
Efforts de tests rentable
Risques acceptable (enfin, je crois)
Efforts de monitoring (pour être sûr)
Risques acceptables et indolores
Corrections à la demande
19
Cartographie des risquesProbabilité
Impact
Sansimpact
Improbable
Haut risque
Dan North, in Testing Faster workshop20
Modèle de qualité logicielle ISO 25010 (2011)
remplace l’iso 9126 (2001)
Critères de qualité
https://www.iso.org/obp/ui/#iso:std:iso-iec:25010:ed-1:v1:en
21
Modèle de qualité logicielle ISO 25010 (2011)
remplace l’iso 9126 (2001)
Nouveauté 2011 !!!
Critères de qualité
https://www.iso.org/obp/ui/#iso:std:iso-iec:25010:ed-1:v1:en §22
Fonctionnalité
Complète, Correcte,
Appropriée
• Behaviour Driven Development
• Use case
• Règles de gestion
• Tests fonctionnels manuels
• Workflow/E2E
• Métriques applicatives
• Demos
23
Efficience
Temps, Ressources, Capacité
• …
• Tests de performances/charge
• Monitoring système et applicatif
• Demos
• Oui, des rapports de tirs de
Performance, etc.
24
Compatibilité
Coexistence (i.e. : avec du legacy),
Interopérabilité
• Consumer Driven Contracts
• Approval Testing
• Double Run / Suivi de Production
• Demos
25
Utilisabilité
Approprié, Apprenable, Opérable,
Sécurisé pour l’utilisateur, Esthétique, Accessible
• Tests d’intégration
• Ou fonctionnel dédié
• Tests de Régression Visuelle
• Tests Exploratoires
• Métriques Applicatives
• Demos
26
Fiabilité
Maturité, Disponibilité,
Tolérance aux Pannes,
Récupérabilité
• Tests sur le gestion des pannes
• Et la journalisation en tant que guide de suivi de prod
• Tests d’endurance, charge
• Chaos Monkeys
• Mean Time Between Failures
• Taux d’échec de mise en prod
• Demos
27
Sécurité
Confidentialité, Intégrité,
Non répudiation, Responsabilité, Authenticité
• Tests négatifs
• Un utilisateur inconnu n’obtient pas
la fonctionnalité
• Audit de vulnérabilités
• Pistes d’audit
• Demos
28
Maintenabilité
Modularité, Réutilisabilité,
Analysabilité,
Modifiabilité, Testabilité
• Compile !, ArchUnit
• Clean Code, Pair Programming
• Test first
• Revue de Code
• Analyse de code statique (Sonar)
• Productivité de l’équipe de réalisation
• Demos
29
Portabilité
Adaptabilité, Installabilité, Remplaçabilité
• Intégration et livraison continue
• Conteneurisation (Docker)
• Infra as code
• ansible-test sanity --list-tests
• Molecule
• Ansible-test integration –docker-no-pull –v […]
• Kubernetes en service managé
• Demos
30
Avant Après
l’écriture du code
Fonctionnels
Décrit / défini le produit
Supporte le produit
Techniques
Les tests se sont adaptés
Prescriptif Descriptif
Par Brian Marick, diffusé par Lisa Crispin et Janet Gregory
Gojko Adzic en propose une mise à jour en 2013
31
Les tests prescriptifs se sont adaptés
M
O
S
C
O
W
32
« Une » stratégie d’aujourd’hui
_ |_| X
Valider
Appels
Code « métier »
Tous les leaders d’opinions sur BDD, dooble looop, TDD outside-in ou non
33
« Une » architecture testable
WS
Impl
App
Layer
Repositories
Aggregate
Root
Domain
Object
Domain
Object
Shared
Utility
Shared Model
34
Tests d’intégration « boite blanche »
WS
Impl
App
Layer
Repositories
Aggregate
Root
Domain
Object
Domain
Object
Shared
Utility
Shared Model
Narrow
Integration
Test
API Call
API Mock
System Under Test
35
Tests unitaires « fonctionnels ? »
WS
Impl
App
Layer
Repositories
Aggregate
Root
Domain
Object
Domain
Object
Shared
Utility
Shared Model
Unit
Test
API Call
System under test
36
Security,
caller error’s
management
Tests unitaires « techniques ? »
WS
Impl
App
Layer
Repositories
Aggregate
Root
Domain
Object
Domain
Object
Shared
Utility
Shared Model
Unit
Test
API Call
Unit
Test
Unit
Test
API Mock
Utils by use as « nullOrEmpty »
➔ Cover by caller’s tests
Utils by rule as « Financial Maths »
➔ Cover as a Library you own
Technical
support
37
Tests et niveau d’abstraction
_ |_| X
Valider
Appels
Code « métier » Tests d’intégration système
End to End
Tests d’intégration logicielle et unitaires
Tous les leaders d’opinions sur BDD, dooble looop, TDD outside-in ou non
Tester les détails d’une fonctionnalité depuis l’API la plus proche de l’implémentation
Moins de code à stimuler, tests plus simples à implémenter
Les tests fonctionnels ne sont pas que de bout en bout (End to end)
38
Tests et niveaux d’abstraction
Quantitéde
codestimulé
abstraction fonctionnelle
Mike Cohn : Pyramide de tests Gerard Meszaros : The right abstraction level for your tests
Concret Abstrait
39
Réduire le coût d’écriture des tests
• Générateur de données
• Data set builder
• DataSetBuilder
.makePromotion(shops=4,
packaging.as(40 XXL, 60L, 200S, 1000XS),
TEC=80%)
• Factories : données référentielles
• Given.REGISTERED_USER, GIVEN.anyUser()
• Builder : variabilité composable par cas de tests
• Given.aCustomeUser().withTrips({}).withFriends({}).build()
40
Réduire le coût d’écriture des tests
• Librairie d’assertions
• Assertj
• assertThat(boolean).isTrue().IsNull();
• assertThat(test).containsIgnoringCase(Text);
• assertThat(pojo).IsEqualIgnoringNullsTo(nex ExpectedPojo(field1, null, field3));
• Custom Business Difference Tool
• Ignore derivated data from calculation
• Ignore déclarative data (as user comments)
• Etc.
41
• Test Data Record and Replay
• Spring aspect
• Debug and snippet
• Xstream
« should_return_empty_when_friend_has_no_trips »
Is valuable as a documentation ?
42
43
Test FIRST
Tests avant le code !
• Implémentation
• Vérification d’un travail fini
• Objectif à atteindre
• Fonctionnalité attendue
• Fast
• Rapide
• Isolated
• Une raison d’échouer
• Repeatable
• Self Validating
• Validation automatique
• Timely
• Avant le code de productionFIRST Quality !
44
Test : moteur du développement
• Test Driven Development (TDD)
• Test FIRST +
• Code de production sans tests
• Minimum de tests pour être non passant
• Minimum de code de production pour le faire passer
• Seulement les API
• Conception et clean code seulement en phase de
refactoring
45
Test FIRST en équipe
BDD : Behaviour Driven Development
• Spécifications exécutables
-- Alberto Brandolini46

Contenu connexe

Tendances

Méthodologie de tests et qualité
Méthodologie de tests et qualitéMéthodologie de tests et qualité
Méthodologie de tests et qualitéSpikeeLabs
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels Bilel Abed
 
Présentation Tests Fonctionnels
Présentation Tests FonctionnelsPrésentation Tests Fonctionnels
Présentation Tests FonctionnelsDATANYWARE.com
 
Qualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du LogicielQualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du Logicieldanaobrest
 
Le test dans un cycle agile. Comment faire ?
Le test dans un cycle agile. Comment faire ?Le test dans un cycle agile. Comment faire ?
Le test dans un cycle agile. Comment faire ?Gilles Brieux
 
Méthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XPMéthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XPYouness Boukouchi
 
Types de tests vs techniques de tests
Types de tests vs techniques de testsTypes de tests vs techniques de tests
Types de tests vs techniques de testsSabrine MASTOURA
 
Présentation Agile Testing
Présentation Agile TestingPrésentation Agile Testing
Présentation Agile Testingjubehr
 
Guide tests fonctionnels
Guide tests fonctionnelsGuide tests fonctionnels
Guide tests fonctionnelscvcby
 
Automatisations des tests fonctionnels avec Robot Framework
Automatisations des tests fonctionnels avec Robot FrameworkAutomatisations des tests fonctionnels avec Robot Framework
Automatisations des tests fonctionnels avec Robot Frameworklaurent bristiel
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2Christophe Rochefolle
 
Non-Functional testing
Non-Functional testingNon-Functional testing
Non-Functional testingKanoah
 
Présentation de JIRA Agile par Stéphane Génin au Kanban Day 2015
Présentation de JIRA Agile par Stéphane Génin au Kanban Day 2015Présentation de JIRA Agile par Stéphane Génin au Kanban Day 2015
Présentation de JIRA Agile par Stéphane Génin au Kanban Day 2015French Kanban User Group
 
MÃthode-agile-SCRUM.pptx
MÃthode-agile-SCRUM.pptxMÃthode-agile-SCRUM.pptx
MÃthode-agile-SCRUM.pptxJaweherBN
 
Introduction à la validation de logiciel
Introduction à la validation de logicielIntroduction à la validation de logiciel
Introduction à la validation de logicielJean-Paul CARMONA
 
Agile Testing – embedding testing into agile software development lifecycle
Agile Testing – embedding testing into agile software development lifecycle Agile Testing – embedding testing into agile software development lifecycle
Agile Testing – embedding testing into agile software development lifecycle Kari Kakkonen
 
Methodologies de Developpement Agiles : Scrum et XP
Methodologies de Developpement Agiles : Scrum et XPMethodologies de Developpement Agiles : Scrum et XP
Methodologies de Developpement Agiles : Scrum et XPNicolas Perriault
 

Tendances (20)

Tests Logiciel
Tests LogicielTests Logiciel
Tests Logiciel
 
Méthodologie de tests et qualité
Méthodologie de tests et qualitéMéthodologie de tests et qualité
Méthodologie de tests et qualité
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels
 
Présentation Tests Fonctionnels
Présentation Tests FonctionnelsPrésentation Tests Fonctionnels
Présentation Tests Fonctionnels
 
Qualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du LogicielQualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du Logiciel
 
Le test dans un cycle agile. Comment faire ?
Le test dans un cycle agile. Comment faire ?Le test dans un cycle agile. Comment faire ?
Le test dans un cycle agile. Comment faire ?
 
Méthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XPMéthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XP
 
Types de tests vs techniques de tests
Types de tests vs techniques de testsTypes de tests vs techniques de tests
Types de tests vs techniques de tests
 
Présentation Agile Testing
Présentation Agile TestingPrésentation Agile Testing
Présentation Agile Testing
 
Guide tests fonctionnels
Guide tests fonctionnelsGuide tests fonctionnels
Guide tests fonctionnels
 
Automatisations des tests fonctionnels avec Robot Framework
Automatisations des tests fonctionnels avec Robot FrameworkAutomatisations des tests fonctionnels avec Robot Framework
Automatisations des tests fonctionnels avec Robot Framework
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
Non-Functional testing
Non-Functional testingNon-Functional testing
Non-Functional testing
 
Présentation de JIRA Agile par Stéphane Génin au Kanban Day 2015
Présentation de JIRA Agile par Stéphane Génin au Kanban Day 2015Présentation de JIRA Agile par Stéphane Génin au Kanban Day 2015
Présentation de JIRA Agile par Stéphane Génin au Kanban Day 2015
 
Qualité logiciel - Generalités
Qualité logiciel - GeneralitésQualité logiciel - Generalités
Qualité logiciel - Generalités
 
MÃthode-agile-SCRUM.pptx
MÃthode-agile-SCRUM.pptxMÃthode-agile-SCRUM.pptx
MÃthode-agile-SCRUM.pptx
 
Méthodes agiles
Méthodes agilesMéthodes agiles
Méthodes agiles
 
Introduction à la validation de logiciel
Introduction à la validation de logicielIntroduction à la validation de logiciel
Introduction à la validation de logiciel
 
Agile Testing – embedding testing into agile software development lifecycle
Agile Testing – embedding testing into agile software development lifecycle Agile Testing – embedding testing into agile software development lifecycle
Agile Testing – embedding testing into agile software development lifecycle
 
Methodologies de Developpement Agiles : Scrum et XP
Methodologies de Developpement Agiles : Scrum et XPMethodologies de Developpement Agiles : Scrum et XP
Methodologies de Developpement Agiles : Scrum et XP
 

Similaire à Strategie de test à agile tour bordeaux

Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingGeeks Anonymes
 
Les tests et la qualité: moteur de productivité (v.2016-07)
Les tests et la qualité: moteur de productivité (v.2016-07)Les tests et la qualité: moteur de productivité (v.2016-07)
Les tests et la qualité: moteur de productivité (v.2016-07)Elapse Technologies
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileDenis Voituron
 
20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_allCARA_Lyon
 
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterComment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterGuillaume Deshayes
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Erradi Mohamed
 
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...TelecomValley
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17Marc Hage Chahine
 
ATMTL23 - Dépasser les frontières : Réinterpréter les Principes ISTQB avec un...
ATMTL23 - Dépasser les frontières : Réinterpréter les Principes ISTQB avec un...ATMTL23 - Dépasser les frontières : Réinterpréter les Principes ISTQB avec un...
ATMTL23 - Dépasser les frontières : Réinterpréter les Principes ISTQB avec un...Agile Montréal
 
13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciel13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciellauraty3204
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agilelaurent bristiel
 
La qualité au meilleur prix grâce aux tests unitaires
La qualité au meilleur prix grâce aux tests unitairesLa qualité au meilleur prix grâce aux tests unitaires
La qualité au meilleur prix grâce aux tests unitairesGauthier Delamarre
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Session #2 du workshop sur la performance en environnement de production
Session #2 du workshop sur la performance en environnement de productionSession #2 du workshop sur la performance en environnement de production
Session #2 du workshop sur la performance en environnement de productionDEFO KUATE Landry
 
Agilite togo jug_final
Agilite togo jug_finalAgilite togo jug_final
Agilite togo jug_finalagnes_crepet
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAssociation Agile Nantes
 
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie TrudelHa zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie TrudelAgile Montréal
 
TDD où l’art de développer à l’endroit
TDD où l’art de développer à l’endroitTDD où l’art de développer à l’endroit
TDD où l’art de développer à l’endroitEspritAgile
 

Similaire à Strategie de test à agile tour bordeaux (20)

Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testing
 
Les tests et la qualité: moteur de productivité (v.2016-07)
Les tests et la qualité: moteur de productivité (v.2016-07)Les tests et la qualité: moteur de productivité (v.2016-07)
Les tests et la qualité: moteur de productivité (v.2016-07)
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
 
Test unitaires
Test unitairesTest unitaires
Test unitaires
 
20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all
 
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterComment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Cours Génie Logiciel 2016
Cours Génie Logiciel 2016
 
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17
 
ATMTL23 - Dépasser les frontières : Réinterpréter les Principes ISTQB avec un...
ATMTL23 - Dépasser les frontières : Réinterpréter les Principes ISTQB avec un...ATMTL23 - Dépasser les frontières : Réinterpréter les Principes ISTQB avec un...
ATMTL23 - Dépasser les frontières : Réinterpréter les Principes ISTQB avec un...
 
13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciel13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciel
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agile
 
La qualité au meilleur prix grâce aux tests unitaires
La qualité au meilleur prix grâce aux tests unitairesLa qualité au meilleur prix grâce aux tests unitaires
La qualité au meilleur prix grâce aux tests unitaires
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Session #2 du workshop sur la performance en environnement de production
Session #2 du workshop sur la performance en environnement de productionSession #2 du workshop sur la performance en environnement de production
Session #2 du workshop sur la performance en environnement de production
 
Agilite togo jug_final
Agilite togo jug_finalAgilite togo jug_final
Agilite togo jug_final
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
 
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie TrudelHa zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
 
TDD où l’art de développer à l’endroit
TDD où l’art de développer à l’endroitTDD où l’art de développer à l’endroit
TDD où l’art de développer à l’endroit
 

Strategie de test à agile tour bordeaux

  • 1. Stratégie de Test La faire bien pour en faire moins 1
  • 2. Nicolas Fédou • Artisan Développeur chez • Coach Craft • Aka. Coach Technique • Aka formateur et accompagnant en bonnes pratiques de développement agile • Ex-Testeur du logiciel des CFM56 (Moteur d’avion) 2
  • 3. L’origine • Développement en phases longues • IE. : Livraison tous les 6 mois => 6 livraisons en 3 ans • Livraison de périmètres fonctionnels complets, non remis en cause plus tard (dans l’idéal ☺) Valider Appels Code « métier » T 3
  • 4. L’origine Stratégie de tests : l’art de sélectionner les tests fonctionnels à jouer pour éviter les régressions et évidement montrer la présence des évolutions 4
  • 5. Les demandes clients d’aujourd’hui • Nous avons du mettre en place une phase de stabilisation, mais • Elle nous prend du temps et de l’énergie Temps QA / Stabilisation 5
  • 6. Itération Données / IO Tests Ambiance Sprint 0 S + 1 S + 2 Les demandes clients d’aujourd’hui • Nous avons une campagne de tests automatisés, mais • Elle nous demande trop d’efforts • À concevoir ou produire • À maintenir • Elle dure trop longtemps • La CI bloque de plus en plus • Les développeurs ne les lancent plus 6
  • 7. Une stratégie de tests « agile » •Est l’ensemble des moyens et pratiques que l’on se donne pour construire un produit de qualité. •Est une façon de s’organiser pour avoir toutes les preuves de qualité logicielle nécessaires et suffisantes à moindre effort pour livrer le produit en continu. 7
  • 8. Stratégies d’hier Tests fonctionnels End 2 End : manuels ou « manuels robotisés » Sur toute la stack technique Valider Appels Code « métier » T 8
  • 9. Stratégies d’hier Tests fonctionnels End 2 End : une « user journey » de bout en bout End Start M O S C O W 10
  • 10. S’organiser seulement pour livrer : « à la James Dean » Livrer permet juste d’entrer dans la course L’édition de logiciel est un coût Un logiciel ne rapporte qu’en production 11
  • 11. La qualité permet de rester dans la course Les tests sont des preuves de qualité S’organiser seulement pour livrer : « à la James Dean » 12
  • 12. • Un test, c’est exercer une pression sur un système Pour en constater la réponse Pour obtenir un feedback délibérément Comme d’habitude ☺ Le test en théorie 14
  • 13. Program testing can be used to show the presence of bugs, but never to show their abscence ! Notes on Structured programming, 1970 Edsger Djikstra 15
  • 14. Le test en pratique •Un test montre un fonctionnement attendu Il réduit la probabilité d’un défaut sur une fonctionnalité •Un ensemble de tests décrivant toutes les facettes d’une fonctionnalité… + de mesures, - de surprises, - d’évolutions sans casser de tests 16
  • 15. Nous avons le budget pour produire la qualité, mais pour … • La démontrer avec des tests, avant la mise en production • Faire face aux risques (sécurité, pannes, …) • Tenir tous les enjeux (performance, charge, …) Les critères de qualités n’ont pas de limites, nos budgets en ont une.17 Qualité Vs Budget
  • 16. Priorisation par les risques Coût d’un risque = probabilité perçue * impact perçu George Fairbanks, Chapter 3 of the book Just Enough Software Architecture: A Risk-Driven Approach http://www.methodsandtools.com/archive/agilesoftwarearchitecture.php Preuves de qualités Confiance Zone de fiabilité Zone d’acceptation du risque 18
  • 17. Priorisation par les risques Risques non acceptables Efforts de tests rentable Risques acceptable (enfin, je crois) Efforts de monitoring (pour être sûr) Risques acceptables et indolores Corrections à la demande 19
  • 18. Cartographie des risquesProbabilité Impact Sansimpact Improbable Haut risque Dan North, in Testing Faster workshop20
  • 19. Modèle de qualité logicielle ISO 25010 (2011) remplace l’iso 9126 (2001) Critères de qualité https://www.iso.org/obp/ui/#iso:std:iso-iec:25010:ed-1:v1:en 21
  • 20. Modèle de qualité logicielle ISO 25010 (2011) remplace l’iso 9126 (2001) Nouveauté 2011 !!! Critères de qualité https://www.iso.org/obp/ui/#iso:std:iso-iec:25010:ed-1:v1:en §22
  • 21. Fonctionnalité Complète, Correcte, Appropriée • Behaviour Driven Development • Use case • Règles de gestion • Tests fonctionnels manuels • Workflow/E2E • Métriques applicatives • Demos 23
  • 22. Efficience Temps, Ressources, Capacité • … • Tests de performances/charge • Monitoring système et applicatif • Demos • Oui, des rapports de tirs de Performance, etc. 24
  • 23. Compatibilité Coexistence (i.e. : avec du legacy), Interopérabilité • Consumer Driven Contracts • Approval Testing • Double Run / Suivi de Production • Demos 25
  • 24. Utilisabilité Approprié, Apprenable, Opérable, Sécurisé pour l’utilisateur, Esthétique, Accessible • Tests d’intégration • Ou fonctionnel dédié • Tests de Régression Visuelle • Tests Exploratoires • Métriques Applicatives • Demos 26
  • 25. Fiabilité Maturité, Disponibilité, Tolérance aux Pannes, Récupérabilité • Tests sur le gestion des pannes • Et la journalisation en tant que guide de suivi de prod • Tests d’endurance, charge • Chaos Monkeys • Mean Time Between Failures • Taux d’échec de mise en prod • Demos 27
  • 26. Sécurité Confidentialité, Intégrité, Non répudiation, Responsabilité, Authenticité • Tests négatifs • Un utilisateur inconnu n’obtient pas la fonctionnalité • Audit de vulnérabilités • Pistes d’audit • Demos 28
  • 27. Maintenabilité Modularité, Réutilisabilité, Analysabilité, Modifiabilité, Testabilité • Compile !, ArchUnit • Clean Code, Pair Programming • Test first • Revue de Code • Analyse de code statique (Sonar) • Productivité de l’équipe de réalisation • Demos 29
  • 28. Portabilité Adaptabilité, Installabilité, Remplaçabilité • Intégration et livraison continue • Conteneurisation (Docker) • Infra as code • ansible-test sanity --list-tests • Molecule • Ansible-test integration –docker-no-pull –v […] • Kubernetes en service managé • Demos 30
  • 29. Avant Après l’écriture du code Fonctionnels Décrit / défini le produit Supporte le produit Techniques Les tests se sont adaptés Prescriptif Descriptif Par Brian Marick, diffusé par Lisa Crispin et Janet Gregory Gojko Adzic en propose une mise à jour en 2013 31
  • 30. Les tests prescriptifs se sont adaptés M O S C O W 32
  • 31. « Une » stratégie d’aujourd’hui _ |_| X Valider Appels Code « métier » Tous les leaders d’opinions sur BDD, dooble looop, TDD outside-in ou non 33
  • 32. « Une » architecture testable WS Impl App Layer Repositories Aggregate Root Domain Object Domain Object Shared Utility Shared Model 34
  • 33. Tests d’intégration « boite blanche » WS Impl App Layer Repositories Aggregate Root Domain Object Domain Object Shared Utility Shared Model Narrow Integration Test API Call API Mock System Under Test 35
  • 34. Tests unitaires « fonctionnels ? » WS Impl App Layer Repositories Aggregate Root Domain Object Domain Object Shared Utility Shared Model Unit Test API Call System under test 36
  • 35. Security, caller error’s management Tests unitaires « techniques ? » WS Impl App Layer Repositories Aggregate Root Domain Object Domain Object Shared Utility Shared Model Unit Test API Call Unit Test Unit Test API Mock Utils by use as « nullOrEmpty » ➔ Cover by caller’s tests Utils by rule as « Financial Maths » ➔ Cover as a Library you own Technical support 37
  • 36. Tests et niveau d’abstraction _ |_| X Valider Appels Code « métier » Tests d’intégration système End to End Tests d’intégration logicielle et unitaires Tous les leaders d’opinions sur BDD, dooble looop, TDD outside-in ou non Tester les détails d’une fonctionnalité depuis l’API la plus proche de l’implémentation Moins de code à stimuler, tests plus simples à implémenter Les tests fonctionnels ne sont pas que de bout en bout (End to end) 38
  • 37. Tests et niveaux d’abstraction Quantitéde codestimulé abstraction fonctionnelle Mike Cohn : Pyramide de tests Gerard Meszaros : The right abstraction level for your tests Concret Abstrait 39
  • 38. Réduire le coût d’écriture des tests • Générateur de données • Data set builder • DataSetBuilder .makePromotion(shops=4, packaging.as(40 XXL, 60L, 200S, 1000XS), TEC=80%) • Factories : données référentielles • Given.REGISTERED_USER, GIVEN.anyUser() • Builder : variabilité composable par cas de tests • Given.aCustomeUser().withTrips({}).withFriends({}).build() 40
  • 39. Réduire le coût d’écriture des tests • Librairie d’assertions • Assertj • assertThat(boolean).isTrue().IsNull(); • assertThat(test).containsIgnoringCase(Text); • assertThat(pojo).IsEqualIgnoringNullsTo(nex ExpectedPojo(field1, null, field3)); • Custom Business Difference Tool • Ignore derivated data from calculation • Ignore déclarative data (as user comments) • Etc. 41 • Test Data Record and Replay • Spring aspect • Debug and snippet • Xstream
  • 40. « should_return_empty_when_friend_has_no_trips » Is valuable as a documentation ? 42
  • 41. 43
  • 42. Test FIRST Tests avant le code ! • Implémentation • Vérification d’un travail fini • Objectif à atteindre • Fonctionnalité attendue • Fast • Rapide • Isolated • Une raison d’échouer • Repeatable • Self Validating • Validation automatique • Timely • Avant le code de productionFIRST Quality ! 44
  • 43. Test : moteur du développement • Test Driven Development (TDD) • Test FIRST + • Code de production sans tests • Minimum de tests pour être non passant • Minimum de code de production pour le faire passer • Seulement les API • Conception et clean code seulement en phase de refactoring 45
  • 44. Test FIRST en équipe BDD : Behaviour Driven Development • Spécifications exécutables -- Alberto Brandolini46