Tests dans le développement de logiciels C++ embarqués

Méthodes efficaces pour l'assurance qualité dans les systèmes embarqués

On Demand

  : 09h00 - 16h30

Début : À partir de 2025

Fin : 2025

Durée :1,0 jours

Numéro de l'événement : CFAEE.00.00D

         Au Choix


Share

à 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 :

  • Les principes et les définitions des tests de qualité.
  • Différentes approches de classification des tests.
  • Comment structurer les différentes couches logicielles pour rendre les logiciels embarqués testables.

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 :

  • 🌐 Connexion Internet stable : une ligne DSL d’au moins 6000 est nécessaire, avec une connexion par câble LAN fortement recommandée pour une meilleure fiabilité.
  • 🌍 Navigateur compatible et à jour : utilisez Firefox, Google Chrome, Edge ou Safari. Veuillez noter qu’Internet Explorer n’est pas pris en charge.
  • 💻🎧 Équipement audio et vidéo : un ordinateur (PC ou portable) équipé de haut-parleurs ou écouteurs, d’un microphone et d’une webcam fonctionnels.

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 :

  • Faux (Mocks) : Ce sont des objets ou composants simulés qui imitent le comportement des éléments réels dans un environnement de test, permettant ainsi de tester un module sans dépendre des autres parties du système.
  • Simulations : Elles représentent virtuellement le matériel ou l’environnement dans lequel le logiciel s’exécute. Elles permettent de tester des scénarios sans nécessiter du matériel physique.
  • Tests unitaires : Ce sont des tests qui vérifient des fonctions ou des unités individuelles de code de manière isolée, garantissant que chaque composant fonctionne indépendamment du système.
  • Tests d’intégration : Ces tests vérifient que les différentes parties du système fonctionnent correctement ensemble, en testant les interactions entre les modules ou composants.

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 :

  • Injection à l’exécution : Cela permet de remplacer des objets ou services pendant l’exécution du test.
  • Injection à la compilation : Réalisée lors de la construction du code, souvent avec des mocks ou des stubs définis dans le code source.

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é.

Professionnels du test logiciel, programmeurs, concepteurs, architectes de logiciels.

La participation inclut des documents détaillés.

Prix :
Les frais d’inscription s’élèvent à :
ACA0,00 € (hors TVA)

Shopping Basket