|
Les outils utilisés pour l'automatisation des tests logiciels dans les systèmes embarqués sont divers, souvent en fonction du matériel spécifique, de l'architecture logicielle et des besoins de test. Les sociétés de systèmes utilisent absolument ces outils, car les tests manuels des systèmes embarqués prennent énormément de temps et sont sujets aux erreurs, en particulier compte tenu des interactions matériel-logiciel souvent complexes.
Voici une répartition des catégories d'outils courants et des exemples :
1. Cadres de test : Ceux-ci fournissent la structure et l’organisation des tests automatisés.
* Test Google (gtest) : Un framework de test C++ largement utilisé, connu pour sa simplicité et son extensibilité. Couramment utilisé dans les projets embarqués qui utilisent C++.
* Unité : Un framework de tests unitaires léger et multiplateforme adapté aux projets C et C++. Populaire dans les systèmes embarqués en raison de son faible encombrement.
* CppUTest : Un autre framework de tests unitaires C++ spécialement conçu pour les systèmes embarqués, mettant l'accent sur une utilisation minimale des ressources.
* CUnit : Un cadre de tests unitaires pour C.
* Test terminé : Un framework commercial qui prend en charge les scripts dans différents langages et peut automatiser les tests d'interface graphique (bien que moins courant directement dans les systèmes embarqués nus)
2. Environnements/exécuteurs d'exécution de tests : Ceux-ci gèrent l’exécution des suites de tests et le reporting des résultats.
* De nombreux IDE intègrent des exécuteurs de tests : Par exemple, Eclipse CDT peut s'intégrer à des frameworks comme Google Test.
* Scripts personnalisés : Souvent, les équipes de systèmes embarqués écrivent leurs propres scripts (par exemple, en utilisant Python ou Bash) pour orchestrer l'exécution des tests, en particulier pour les tests d'intégration et au niveau du système.
* Systèmes d'intégration continue/déploiement continu (CI/CD) : Jenkins, GitLab CI, Azure DevOps, etc. sont couramment utilisés pour automatiser le processus de création et de test, y compris pour les systèmes embarqués. Ceux-ci s’intègrent souvent aux frameworks de test et aux exécuteurs.
3. Outils spécifiques au matériel : Ces outils comblent souvent le fossé entre le logiciel d'automatisation des tests et le matériel embarqué.
* Débogueurs JTAG : Des outils comme ceux de Segger, Lauterbach ou ARM fournissent des interfaces pour déboguer et tester le matériel à bas niveau. Ils peuvent également déclencher des tests et capturer les résultats.
* Émulateurs en circuit (ICE) : Les ICE permettent des scénarios de test plus sophistiqués que JTAG, incluant souvent des capacités de traçage et d'émulation en temps réel. Ce sont généralement des solutions haut de gamme.
* Simulateurs Hardware-in-the-loop (HIL) : Il s'agit de systèmes avancés qui simulent l'environnement externe du système embarqué, permettant des tests approfondis de l'interaction du système avec le monde réel sans avoir recours à des composants physiques ou à des situations potentiellement dangereuses.
* Analyseurs de bus CAN/LIN/Ethernet : Ces outils capturent et analysent les communications sur les bus automobiles et industriels, ce qui est crucial pour tester les systèmes embarqués communiquant via ces protocoles.
* Oscilloscope/analyseurs logiques : Pour l'examen direct du signal matériel.
4. Outils d'analyse de la couverture des tests : Ceux-ci mesurent dans quelle mesure la suite de tests couvre le code.
* gcov (GCC) : Un outil intégré au compilateur GCC qui fournit des informations sur la couverture du code.
* Outils commerciaux : Des outils plus sophistiqués fournissent des rapports de couverture détaillés, y compris la couverture des succursales, la couverture des conditions et la MC/DC (Modified Condition/Decision Coverage), qui sont souvent exigées par les normes de sécurité (telles que la norme ISO 26262).
5. Outils de gestion des tests : Ceux-ci aident à organiser et à gérer le processus de test.
* Jira, Azure DevOps, TestRail : Il s'agit d'outils courants permettant de gérer les cas de test, de suivre les bogues et de créer des rapports sur les résultats des tests.
Quels outils les entreprises utilisent : Le choix dépend fortement de facteurs tels que :
* Budget : Les outils open source comme Google Test et Unity sont intéressants pour des raisons de coût. Les outils commerciaux offrent des fonctionnalités plus avancées mais ont un prix.
* Complexité du projet : Les projets simples n'auront peut-être besoin que d'un cadre de tests unitaires, tandis que les systèmes complexes nécessiteront une suite d'outils plus complète.
* Normes de sécurité : Les applications critiques pour la sécurité (automobile, aérospatiale, médicale) nécessitent souvent l'utilisation d'outils conformes à des normes spécifiques et offrant une analyse avancée de la couverture.
* Plate-forme matérielle : Les interfaces de débogage et le matériel disponibles influenceront le choix des outils.
* Expertise de l'équipe : Les compétences de l’équipe d’ingénierie détermineront la faisabilité de l’adoption et de l’utilisation d’outils particuliers.
En résumé, les sociétés de systèmes impliquées dans le développement de systèmes embarqués utilisent une large gamme d'outils, combinant souvent des options open source et commerciales pour créer une infrastructure de test sur mesure qui répond à leurs besoins spécifiques et aux exigences de leur projet. La tendance est à une automatisation et à une intégration accrues avec les pipelines CI/CD.
|