Weitere ähnliche Inhalte Ähnlich wie Avis d'expert : Les Tests Logiciels (20) Avis d'expert : Les Tests Logiciels1. 1
Les tests logiciels
Comment mettre en place un processus de
« tests en continu » en ligne avec son usine logicielle ?
© 2015 nLiive. Tous droits réservés
2. 2
© 2015 nLiive. Tous droits réservés
Table des matières
3. Quelques Familiarités
4. Pas d’intégration continue fiable
sans « test en continu »
5. Les différentes typologies de
test
6. Le cycle du « test en continu »
7. Les tests unitaires : Tests au
niveau du code
8. Les tests d’intégration
9. Les tests fonctionnels : Tests au
niveau des composants métiers
10. Les tests d’UI : Tests au niveau
de l’interface graphique
11. La différence entre tests
unitaires et tests fonctionnels 1
12. La différence entre tests
unitaires et tests fonctionnels 2
13. Les tests de performance
14. Les tests de charge
15. Combien ça coûte ?
16. Le bug informatique le plus cher
de l’histoire !
17. La supervision applicative 1
18. La supervision applicative 2
19. Signature
3. 3
© 2015 nLiive. Tous droits réservés
Quelques familiarités !
« Avant, ça marchait ce bouton ; pourquoi ça
marche plus maintenant ?! »
« Mais, vous l’aviez pas corrigé ce bug-là ? Je ne
comprends pas ; plus vous codez, moins l’appli
fonctionne ?! »
La régression et les bugs sont catastrophiques
pour un projet, non seulement pour le temps
perdu à corriger, mais surtout pour l’image de
marque vis-à-vis de l’utilisateur final… Prenez-
les devants !
4. 4
© 2015 nLiive. Tous droits réservés
L’intégration continue se répand dans la plupart
des organisations aujourd’hui. Les usines
logicielles, qui permettent l’évolution constante
des applicatifs, automatisent
l’intégration de chaque builds
et leur mise en production. Les
tests logiciels doivent s’adapter
et s’intégrer à ces « usines »
afin d’assurer la qualité et
l’efficacité de ce processus.
C’est pourquoi nous parlons
de « tests en continu » ou
« continuous testing ».
Le « continuous testing » est le
fait d’automatiser et orchestrer
l’ensemble des tests logiciels à
tous les niveaux, on parle alors de
« Sofware Quality Assurance ».
La mise en place d’une couverture de tests
performante est un exercice complexe qui
nécessite d’être pris en compte le plus tôt possible.
Pas d’intégration continue fiable
sans « tests en continu »
5. 5
© 2015 nLiive. Tous droits réservés
La détection des bugs et des régressions peut avoir lieu à tous les niveaux et pour chaque type
de test :
Test « boite blanche » : une boîte blanche (White Box) est un module d’un système dont on peut
prévoir le fonctionnement interne car on connaît les caractéristiques de fonctionnement de
l’ensemble des éléments qui le composent. Autrement dit une boîte blanche est un module qui
comporte aussi peu de boîtes noires que possible.
Test « boite noire » : une boîte noire (Black Box) est un module d’un système dont on ne connait
pas le fonctionnement interne.
Les différentes typologies de test
*Plus généralement catégorisés dans « tests fonctionnels » au sens large
7. 7
© 2015 nLiive. Tous droits réservés
Les tests unitaires :
Tests au niveau du code
• Qu’est-ce que c’est ?
Les tests unitaires ont pour objectif de valider
le code des composants de l’application. Ils ne
font pas appel aux bases de données (Mock).
• Comment sont-ils réalisés ?
Les tests unitaires sont écrits par les
développeurs. Ils sont réalisés avec des
frameworks de tests et sont inclus dans
l’environnement de développement
(IDE – Eclipse/Visual Studio/etc.).
Ils doivent :
»» Etre lancés le plus souvent possible,
idéalement à chaque build
»» Etre indépendants de l’environnement de
production et reproductibles (utilisation de
frameworks de Mock)
Aucune erreur ne doit être détectée avant de
synchroniser le code source : l’intégrité du build
est la priorité absolue.
Les parties-prenantes :
»» Développeurs
8. 8
© 2015 nLiive. Tous droits réservés
Les tests d’intégration
• Qu’est-ce que c’est ?
Les tests d’intégrations permettent de valider
que l’ensemble des modules développés
séparément interagissent correctement au sein
d’une solution.
Lors d’un déploiement sur un environnement
de « Staging* », ils garantissent l’intégration des
modules entres eux.
*Staging : un environnement de Staging est
un environnement idéalement identique à
l’environnement de Production (ISO-PROD)
mise en place pour des fins de tests (également
souvent nommé PRE-PROD/INTEGRATION/
TEST/etc.)
• Comment sont-ils réalisés ?
Les tests d’intégration sont écrits par
des personnes techniques en charge de
l’architecture de production.
Les parties-prenantes :
»» Développeurs
»» Architectes techniques
9. 9
© 2015 nLiive. Tous droits réservés
Les tests fonctionnels :
Tests au niveau des composants métiers
• Qu’est-ce que c’est ?
Ils permettent de s’assurer que l’application
répond aux spécifications fonctionnelles et ce
en toutes circonstances.
• Comment sont-ils réalisés ?
Les tests fonctionnels sont écrits par des
personnes proches du métier de l’application.
Ils sont réalisés grâce à des outils « non-
techniques », en dehors de l’environnement de
développement.
Ils peuvent être faits directement au niveau des
composants métiers (sans solliciter l’interface
utilisateur) ou peuvent être réalisés dans
l’interface utilisateurs et seront alors couplés
avec les tests d’UI (User Interface).
Les parties-prenantes :
»» Equipe QA (Quality Assurance)
»» Equipe métiers
10. 10
© 2015 nLiive. Tous droits réservés
Les tests d’UI :
Tests au niveau de l’interface graphique
• Qu’est-ce que c’est ?
Les tests d’UI sont effectués via l’interface
utilisateur et permettent de tester toute la
chaine d’interaction.
• Comment sont-ils réalisés ?
Comme les tests fonctionnels, les tests d’UI sont
écrits par des personnes proches du métier de
l’application.
Ils sont réalisés dans le contexte final
d’exécution (réel navigateur web) par des outils
pilotant la souris et le clavier.
Ce sont les tests les plus efficaces pour détecter
les régressions.
Les parties-prenantes :
»» Equipe QA (Quality Assurance)
»» Equipe métiers
»» Expert UX (User Experience)
11. 11
© 2015 nLiive. Tous droits réservés
La différence entre tests unitaires et tests fonctionnels 1
Il est primordial de bien différencier les tests unitaires des tests fonctionnels :
»» Les tests unitaires ciblent les composants un à un et ne font pas intervenir de jeux de
données en bases de données
»» Les tests fonctionnels ciblent le système complet, intégrant l’utilisation de jeux de données en
bases de données
12. 12
© 2015 nLiive. Tous droits réservés
La différence entre tests unitaires et tests fonctionnels 2
PL = Presentation Layer
BLL = Business Logic Layer
DAL = Data Access Layer
13. 13
© 2015 nLiive. Tous droits réservés
Les tests de performance
• Qu’est-ce que c’est ?
Les tests de performance permettent de
mesurer individuellement les temps de réponse
des composants du système dans un contexte
d’usage normal.
Par exemple, dans un contexte Web, ce test
permet de mesurer les temps de réponse
des interactions utilisateur et de détecter les
ralentissements éventuels entre les versions.
Si l’on souhaite étendre les mesures de
performance au contexte particulier d’un grand
nombre d’utilisateurs simultanés, on parle alors
de test de charge.
Les parties-prenantes :
»» Equipe QA (Quality Assurance)
»» Equipe métiers
»» Expert UX (User Experience)
14. 14
© 2015 nLiive. Tous droits réservés
Les tests de montée en charge (TMC)
• Qu’est-ce que c’est ?
Les tests de charge sont des tests de
performance particuliers où l’objectif est de
solliciter le système en charge.
Dans un contexte web, ce test va créer un
nombre d’utilisateurs prédéfinis afin de valider
la performance et la fiabilité de l’application lors
d’un pic d’affluence.
Il existe deux types de tests de charge :
»» L’injecteur de requêtes http, qui stresse le
serveur dans un environnement simulé
»» Le pilotage de réels navigateurs web
(Chrome, IE, Firefox), qui reproduit
l’ensemble du contexte et est beaucoup plus
fiable
Les parties-prenantes :
»» Equipe QA (Quality Assurance)
»» Equipe métiers
»» Expert UX (User Experience)
15. 15
© 2015 nLiive. Tous droits réservés
Combien ça coute ?
La détection des bugs et leur correction est une
des activités les plus chères pour les équipes de
développement.
L’amélioration des processus de test se traduit
directement par une réduction de coût global et surtout
une meilleure image auprès des utilisateurs.
Par ce que le coût des tests représente entre 30% et
40% des coûts de développement, l’amélioration des
pratiques est un enjeu majeur.
La mise en place d’un processus de « tests en continu »
est une réponse possible et efficace.
Elle permet :
»» La réduction du temps de recette pour les équipes de
développement
»» La réduction des coûts de correction
»» L’amélioration de l’image pour les utilisateurs finaux
Dans le domaine du Web, des outils innovants arrivent
et simplifient grandement sa mise en place et son
utilisation au quotidien.
16. 16
© 2015 nLiive. Tous droits réservés
Le bug informatique le plus cher de l’histoire !
Ariane 5, vol 501, le 4 juin 1996 :
La fusée s’est brisée et a explosé en vol, 40
secondes après le décollage…
Le système de navigation, utilisé depuis
longtemps sur Ariane 4, étant réputé fiable, le
CNES a demandé de ne pas faire de tests pour
Ariane 5, et ainsi économiser 100 000$ ...
Finalement ce sont 370 millions qui partent en
fumée !
17. 17
© 2015 nLiive. Tous droits réservés
La supervision applicative 1
La mise en place d’un processus de
« continuous testing » vise à fiabiliser les
« mises en production », mais le cycle de contrôle de
la qualité ne s’arrête pas pour autant. Il est vital de
surveiller en permanence l’applicatif une fois déployé
en production et c’est ici qu’intervient la Supervision
Applicative.
• Qu’est-ce que c’est ?
La Supervision Applicative (monitoring actif) est
le fait de lancer continuellement des tests de
parcours utilisateur pour s’assurer de la fiabilité de
l’application en production.
Par opposition à l’utilisation de tags inclus dans les pages du site déclenchés par les internautes
réels (monitoring passif – analytics), la supervision applicative permet de détecter des problèmes
avant que des internautes réels ne les découvrent.
Toutes les mesures étant effectuées dans un contexte identique (même source géographique,
même opérateur, même navigateur, même ordinateur source), elle permet de mesurer de
manière fiable toutes les variations de comportement du site et donc d’anticiper les mesures à
prendre.
18. 18
© 2015 nLiive. Tous droits réservés
La supervision applicative 2
La supervision applicative valide le point de vue
de l’utilisateur final et il est donc primordial de
superviser l’application à l’aide de véritables
navigateurs afin de reproduire un contexte réel.
Ceci inclut la surveillance des requêtes externes
vers les « services tiers » (tags analytics, réseaux
sociaux, modules de paiement, Publicités, etc.).
L’impact des services tiers sur la performance
globale d’un site web en production peut être
très significatif et il est important de bien
monitorer tous les liens externes.
• Comment est-elle réalisée ?
A la différence des autres tests détaillés en
amont, la supervision applicative est gérée par
les équipes de production.
Les tests sont lancés directement sur
l’application dans son environnement de
production, et permettent aux équipes métiers
de maîtriser l’expérience utilisateur en continu.
Les parties-prenantes :
»» Equipe de production
»» Expert UX (User Experience)
»» Marketing
19. 19
© 2015 nLiive. Tous droits réservés
Conclusion
La mise en place d’une réelle stratégie d’assurance qualité logicielle (Software Quality Assurance)
inclus non seulement la mise en place d’un processus de « continuous testing », mais également
un contrôle permanent de l’applicatif une fois déployé en production avec la mise en place d’une
solution de supervision applicative complémentaire.
20. 20
© 2015 nLiive. Tous droits réservés
Jean-Baptiste Marcé
Plus de 20 ans d’expérience et d’expertise
dans la conception et l’industrialisation de
développement logiciel.
De formation Ingénieur INSA (également
titulaire d’un Master 2), il a débuté sa carrière
à la DGA puis a évolué chez différents éditeurs
de logiciels (domaine de la santé, Webagencies,
e-business) où il a tenu successivement les
fonctions de chef de projet, d’architecte
technique et de directeur technique. Il a vécu
plus de 7 ans en Allemagne et a une véritable
ouverture sur l’international.
Véritable concepteur d’architectures complexes
évolutives et garant du cycle de vie des logiciels,
il a tissé un réseau professionnel conséquent.