Les logiciels embarqués se trouvent dans une grande variété de produits électroniques, qu’il s’agisse d’appareils grand public ou de systèmes industriels. Les domaines tels que les transports, les équipements médicaux, les villes intelligentes, la domotique, l’agroéquipement et l’industrie manufacturière…en sont truffés. Ces logiciels embarqués jouent aussi un rôle majeur pour les objets connectés qui forment l’IoT ou IIoT pour « Internet of Things » ou « Industrial Internet of Things ».

L’automatisation de tests de logiciels embarqués est une pratique essentielle pour garantir la qualité et la fiabilité des produits électroniques. Cette technique est devenue de plus en plus populaire dans l’industrie électronique, car elle permet de réduire les coûts et les délais de production tout en améliorant la qualité des produits.

Cet article tente de présenter simplement ce que sont les logiciels embarqués ainsi qu’une des architectures éprouvées par Kereval pour tester ces logiciels de façon automatique.

Qu’est-ce qu’un logiciel embarqué ?

Un logiciel embarqué est un type de logiciel qui est intégré dans un appareil ou un système matériel. On parle de Systèmes Embarqués (SE ou « embedded system » en anglais) pour faire la distinction avec les Systèmes d’Informations (SI) composé de « logiciels d’application ».
Le logiciel embarqué effectue des tâches spécifiques et est implémenté dans des microcontrôleurs ou des processeurs dédiés, il est conçu pour fonctionner sans l’intervention d’un utilisateur. Les informations reçues par ce logiciel sont issues de capteurs et transmises à d’autres composants ou à un Système d’Information.

Figure 1. logiciel embarqué dans son environnement

Comment tester un logiciel embarqué ?

Dans un processus de développement informatique, la phase de test est une étape permettant d’assurer que le logiciel fonctionne selon ses spécifications et qu’il répond au besoin du client. Le système à tester, ici le logiciel, est aussi appelée SUT pour « System Under Test » ou « système sous test ». Il existe différents types ajouter une balise vers les types de tests de tests qui sont listés plus loin dans cet article.

Les tests sont conçus en fonction des exigences et des spécifications du produit développé ainsi qu’en s’appuyant sur des méthodes et des bonnes pratiques (ISTQB). Cela est d’autant plus important quand l’usage du produit final est soumis à une règlementation ou doit répondre à des normes.

Comme déjà indiqué, à la différence d’un logiciel qui s’exécute sur un ordinateur ou un serveur (application, logiciel bureautique, application web…), un logiciel embaqué est intégré dans un système matériel. Pour communiquer avec ce système il est nécessaire « d’instrumenter » la carte électronique sur laquelle le logiciel est implémenté, c’est-à-dire mettre en place le moyen de gérer des signaux (digitaux, analogiques, PWM, RF…) en entrée et sortie de la carte.

La communication avec le logiciel embarqué nécessite donc une phase d’instrumentation pour simuler l’environnement dans lequel il est censé évoluer et pour lire ses réponses.
Un jeu de données pour un test sera alors un ensemble de paramètres et branchements à réaliser par le testeur afin que les signaux électriques soient envoyés vers les entrées du système.

Figure 2. Logiciel embarqué dans un environnement simulé et instrumenté « manuellement »

Dans ce contexte, on comprend la complexité des tests : la simulation en entrée (par exemple de multiples signaux) et l’interprétation des résultats en sortie (comparaison des résultats attendus avec les résultats obtenus) rendent les tests manuels fastidieux et chronophages et nécessitent des outils automatiques.

Comment automatiser les tests de logiciels embarqués ?

A ce stade de la réflexion, il est nécessaire de comprendre quel périmètre peut être automatisé, le coût que cela représente, le délai de réalisation et les avantages que cela peut apporter (Retour Sur Investissement ou « R.O.I. » en anglais)

Techniquement, l’automatisation est possible grâce à des instruments pilotés informatiquement : alimentations, relais, générateurs de signaux, oscilloscopes, … Les tests sont exécutés à l’aide de scripts : des programmes informatiques qui simulent les interactions avec le logiciel embarqué. Les scripts de test peuvent être créés à l’aide de langages de programmation tels que Python, C++, …

Dans la plupart de ses bancs de test, Kereval a choisi d’utiliser Robot Framework pour la rédaction des scripts de tests afin de faciliter la communication entre les équipes techniques et fonctionnelles, cela permet de garder un même vocabulaire et une même compréhension des actions à réaliser. Les équipes d’automaticiens se chargent ensuite de les rendre exécutables sur des plateformes cibles.

Figure 3. Logiciel embarqué instrumenté et testé automatiquement.

Les données et signaux en entrées sont gérées informatiquement ainsi que la lecture et l’interprétation des signaux en sortie du SUT.

Les résultats de ces tests montrent que le système répond bien aux attentes qui sont décrites dans des exigences.

Pour de tels projets de validation, Kereval met en place une architecture logicielle Open Source à base de Squash Test et Robot Framework répondant à différents besoins :

  • La gestion des exigences du produit et les cas de tests couvrant ces exigences
  • L’organisation des campagnes par périmètre fonctionnel et leurs itérations
  • La gestion de l’environnement d’exécution des tests (serveur dédié ou PC collaborateur)
  • L’intégration de la solution dans une chaîne d’intégration continue existante
  • La modularité, qui permet de choisir les briques à installer selon les besoins d’un client
  • La gestion des campagnes de tests mixant tests manuels et automatiques
  • L’automatisation de la génération des rapports de tests (https://www.kereval.com/lautomatisation-de-rapports-de-test/)
Figure 4. Schéma fonctionnel de l’architecture de test

Les principaux avantages de l’automatisation :

  • Gain de temps d’exécution : l’argument numéro 1 évoqué car, en général les tests exécutés automatiquement sont plus rapides que les mêmes tests effectués manuellement, en particulier dans le cas de logiciels embarqués où la préparation de l’environnement peut être compliquée. De plus l’exécution peut être déclenchée sur des périodes non ouvrées (soir et weekend par exemple) et les résultats étudiés au retour des équipes.
    L’estimation du gain de temps tient une place importante dans le calcul du R.O.I. (retour sur investissement).
  • Répétabilité : une fois en place les mêmes actions seront répétées pour un même test avec les mêmes données d’entrée maîtrisées.
  • Réduction d’erreur dans les opérations complexes : certaines exécutions de tests ou génération de jeux de données demandent des manipulations nombreuses ou complexes et sujettes à erreur. Effectuées manuellement, ces opérations peuvent demander plusieurs essais avant d’aboutir, leur automatisation évite les erreurs.
  • Autonomie des équipes de tests : Certaines opérations demandent l’intervention d’équipes particulières (mise à jour de version, passage de batch, génération de signal particulier, …), l’automatisation de ces opérations permet à l’équipe de tests de les déclencher au moment voulu sans recours à des tiers.

Quels types de tests automatiser ?

Il existe plusieurs types de tests, on en trouve la définition dans les normes telles que l’ISO/IEC 25010 ou le glossaire ISTQB : ( https://www.cftl.fr/wp-content/uploads/2018/10/Glossaire-des-tests-logiciels-v3_2F-ISTQB-CFTL-1.pdf )

  1. Test de fonctionnalité : Vérifie que le logiciel réalise les fonctionnalités pour lesquelles il a été conçu.
  2. Test de performance : Vérifie dans quelle mesure un élément de test (SUT) accomplit des fonctions désignées dans des contraintes de temps et d’autres ressources données.
  3. Test de charge :  un type de tests de performance qui vérifie la réaction d’un SUT soumis à des conditions anticipées de charges variables, généralement dans des conditions anticipées de faible utilisation, d’utilisation typique et de pic d’utilisation.
  4. Test de compatibilité : Vérifie dans quelle mesure un SUT peut fonctionner de manière satisfaisante parallèlement à d’autres produits indépendants dans un environnement partagé (coexistence) et, si nécessaire, échanger des informations avec d’autres systèmes ou composants (interopérabilité).
    1. En termes d’interopérabilité, Kereval a développé un savoir-faire dans le domaine de la santé pour en savoir plus : https://www.kereval.com/quest-ce-que-linteroperabilite-en-e-sante/[AR3] 
  5. Test de fiabilité et/ou robustesse : Vérifie que le logiciel est stable et qu’il fonctionne, pendant une durée donnée (MTBF – Mean Time Between Failures) sans interruption ou panne même avec des données étalonnées en entrée  (suivez ce lien pour lire ce que propose Kereval en matière de tests d’Intelligence Artificielle : https://www.kereval.com/verification-formelle-de-lintelligence-artificielle/ ).
  6. Test de sécurité : Evalue le degré de protection d’un SUT ainsi que les données et informations associées. Particulièrement vraie dans le monde IIoT où un grand nombre de données est échangé. Les tests de sécurité vérifient que les personnes ou systèmes non autorisés ne puissent pas accéder à ces données ou informations mais que les personnes ou systèmes autorisés y accèdent.
  7. Vérifie que le logiciel est sécurisé et protégé contre les attaques malveillantes (voir les activités déjà réalisées par Kereval : https://www.kereval.com/secteurs/#uagb-tabs__tab1 et https://www.kereval.com/writeup-breizhchip-breizh-ctf-2023/ ).

En conclusion

L’automatisation des tests de systèmes embarqués présente de nombreux avantages tant pour les équipes de développement que pour les équipes métier. Avec l’utilisation de langage de haut niveau comme Robot Framework, l’automatisation des tests peut faciliter la compréhension au sein d’une entreprises. Elle permet de réduire les coûts et les délais de développement, d’améliorer la qualité du produit final, de faciliter la maintenance et la mise à jour du système, et d’optimiser les processus de test en général. Cependant, il est important de garder à l’esprit que l’automatisation ne peut pas remplacer complètement les tests manuels, et qu’elle nécessite une planification et une mise en place soigneuses pour être efficace. En combinant l’automatisation et les tests manuels, les équipes peuvent maximiser les avantages des deux méthodes et obtenir des résultats de test plus complets et plus fiables.

Pour les professionnels de l’industrie du logiciel qui cherchent à améliorer leurs pratiques de test, KEREVAL propose un accompagnement sur l’étude et la mise en place d’outils adaptés, n’hésitez pas à nous contacter ( https://www.kereval.com/contact/ ).

Et pour vos besoins de formations en test logiciels, consultez les dates disponibles : https://www.kereval.com/de-nouvelles-dates-de-formations-au-test-logiciel/

À lire également