On Demand
: 09h00 - 16h30
Début : À partir de 2025
Fin : 2025
Durée :1,0 jours
à partir de
£ ACA0,00 euro
(hors TVA)
Introduction à la formation continue :
Un logiciel de haute qualité repose inévitablement sur des tests approfondis et efficaces. Cependant, les tests peuvent être particulièrement complexes dans l’environnement embarqué, où les frameworks de tests existants peuvent parfois poser des obstacles, notamment dans le contexte du C++ embarqué.
Ce séminaire vous fournira les outils nécessaires pour concevoir des logiciels C++ embarqués testables, simuler les dépendances matérielles et mettre en place une suite de tests complète pour assurer la fiabilité de votre code.
Objectif de la formation continue :
Ce séminaire pratique, riche en exercices de programmation, présente les bases des logiciels embarqués maintenables et testables. Vous apprendrez :
L’utilisation d’interfaces en C++ et leur application au moment de l’exécution ou de la compilation sera également abordée. Vous découvrirez comment rendre vos classes testables et sécurisées à l’aide de frameworks de tests.
Enfin, l’intégration des tests dans le processus de développement, ainsi que l’utilisation de l’analyse statique du code et des mesures de qualité associées, seront discutées de manière approfondie.
Pré-requis Techniques pour Participer à Nos Formations en Ligne
Nos formations reposent sur des plateformes entièrement accessibles via un navigateur , éliminant ainsi le besoin d’installer un logiciel supplémentaire. Pour garantir une expérience optimale, veuillez vous assurer de disposer des éléments suivants :
Avec ces conditions techniques en place, vous pourrez profiter pleinement de nos sessions interactives et enrichissantes en ligne.
Code propre et C++ moderne :
Un code propre est essentiel pour garantir un logiciel lisible, bien structuré, et facile à maintenir. Cela inclut des pratiques comme l’adhésion aux conventions de nommage, la réduction de la complexité du code, l’organisation logique des modules, et une documentation claire. Un code propre est aussi testable, modifiable et peut évoluer sans introduire de bugs.
Le C++ moderne, de son côté, s’appuie sur des fonctionnalités récentes du langage telles que les expressions lambda, les pointeurs intelligents, le RAII (Resource Acquisition Is Initialization), et les nouvelles bibliothèques standard. Ces pratiques favorisent une gestion améliorée de la mémoire, la sécurité des types et la lisibilité du code.
Principes d’un bon test et défis dans l’environnement embarqué :
Un bon test est avant tout automatisé, répétable, isolé et capable de prédire les résultats attendus. Dans l’environnement embarqué, les défis sont multiples : gestion des dépendances matérielles, limitation des ressources (mémoire, processeur), et absence de certains outils standards de test, comme les frameworks de tests intégrés. De plus, les tests d’une application embarquée doivent parfois simuler le matériel ou se dérouler dans des conditions réelles limitées.
Faux, simulations, tests unitaires, tests d’intégration :
Mettre en place, structurer et nommer des tests pour établir une suite de tests complète :
Une suite de tests complète inclut des tests unitaires, d’intégration et fonctionnels. Pour cela, il est crucial de structurer les tests de manière logique, en les organisant par modules ou fonctionnalités. Les tests doivent aussi être nommés de manière descriptive pour clarifier leur objectif, ce qui rend la suite de tests plus lisible et maintenable.
Structuration et conception de logiciels testables : Utilisation de l’abstraction et des interfaces :
Pour rendre un logiciel testable, il est essentiel d’abstraire les dépendances matérielles ou externes par l’utilisation d’interfaces. Cela permet de simuler ces composants lors des tests sans nécessiter du matériel réel. L’utilisation de la conception orientée objet et des principes comme l’injection de dépendances rend le code plus modulaire et plus facile à tester.
Séparation des composants logiciels dépendants du matériel et indépendants :
Il est crucial de séparer les composants qui dépendent du matériel (par exemple, les pilotes et les interactions avec les périphériques) des parties du logiciel qui peuvent être testées indépendamment. Cette séparation simplifie les tests, car les composants non matériels peuvent être testés sans l’interaction avec le matériel réel.
Implémentation du modèle de conception « Injection de dépendance » dans Modern C++ :
L’injection de dépendance (DI) permet d’injecter des objets nécessaires au fonctionnement d’un module sans avoir à les créer à l’intérieur du module. En C++ moderne, cela peut être fait via des interfaces, des constructeurs ou des pointeurs intelligents. Ce modèle facilite l’isolation des modules pour les tests et améliore la flexibilité et la maintenabilité du code.
Approches d’exécution et de compilation pour injecter des faux :
Les faux peuvent être injectés de différentes manières :
Introduction et utilisation de frameworks de tests (Google Test, GMock) :
Google Test et GMock sont des frameworks populaires en C++ pour les tests unitaires et la simulation (mocks). Ces outils permettent de vérifier les attentes sur les objets simulés, de valider les résultats des tests et d’automatiser les scénarios de tests, ce qui rend les tests plus efficaces et moins sujets à l’erreur humaine.
CMake comme outil pour décrire le processus de construction du code de production et de test :
CMake est un système de génération de builds qui permet de décrire de manière flexible le processus de compilation et d’intégration du logiciel. Il facilite l’organisation du code de production et des tests dans un projet C++, en définissant des règles pour compiler, lier le code et exécuter les tests.
Intégration des activités de tests dans le processus de développement logiciel (CI/CD) :
L’intégration des tests dans un processus CI/CD (Intégration Continue/Déploiement Continu) permet de valider automatiquement le code à chaque modification. Cela assure une meilleure qualité du logiciel à chaque étape du développement, en exécutant les tests unitaires à chaque commit et en validant leur succès avant tout déploiement en production.
Outils d’analyse de la couverture des tests dans un contexte C++ :
Des outils de couverture de tests comme GCov ou LCOV permettent de mesurer quel pourcentage du code est couvert par les tests. Ces outils génèrent des rapports détaillés sur les parties du code non couvertes par les tests, ce qui permet d’identifier les zones du code nécessitant plus d’attention.
Mesures de qualité et analyse de code statique :
L’analyse de code statique consiste à examiner le code sans l’exécuter pour détecter des erreurs potentielles, des violations de normes ou des problèmes de performance. Des outils comme Cppcheck ou Clang Static Analyzer sont utilisés pour analyser le code C++ et garantir sa qualité, sa conformité aux bonnes pratiques et son efficacité.