Qu'est-ce que les tests intégrés dans les tests de logiciels ?

⚡ Résumé intelligent

Les tests embarqués vérifient conjointement le comportement fonctionnel et non fonctionnel des logiciels et du matériel, car dans un système embarqué, les deux sont étroitement liés et aucun ne peut être validé correctement individuellement.

  • (I.e. Couplage serré: Le matériel étant construit en parallèle du logiciel, l'environnement de test réel arrive souvent tard.
  • ☑️ Cinq niveaux : Les tests unitaires logiciels, d'intégration, unitaires système, d'intégration système et de validation système ciblent chacun une limite de module différente.
  • Enjeux de sécurité : Les produits médicaux, ferroviaires, aéronautiques et automobiles doivent subir des tests rigoureux et documentés avant de pouvoir obtenir une certification.
  • 🧪 Préférence pour la case grise : Les tests unitaires système observent les ressources internes et les messages du système d'exploitation temps réel ; les méthodes de type « boîte grise » sont donc les plus appropriées.
  • Principaux obstacles : Accès limité au matériel, composants open source, défauts logiciels et matériels mixtes et défauts difficiles à reproduire.

Tests embarqués de logiciels et de matériels dans un système embarqué

Que sont les systèmes embarqués ?

Systèmes embarqués Les systèmes embarqués sont des dispositifs à commande électronique où logiciel et matériel sont étroitement liés. Ils peuvent contenir divers dispositifs informatiques, tels que des PC intégrés à d'autres appareils pour exécuter des fonctions spécifiques à une application. L'utilisateur final n'en a généralement même pas conscience.

Tests intégrés

Tests embarqués est un processus de test permettant de vérifier les fonctionnalités et non fonctionnel Les tests embarqués consistent à évaluer les attributs logiciels et matériels d'un système embarqué et à garantir l'absence de défauts du produit final. Leur principal objectif est de vérifier et de valider si le produit final, composé de matériel et de logiciels embarqués, répond aux exigences du client.

Les tests de logiciels embarqués vérifient et garantissent la qualité du logiciel concerné et sa conformité à toutes les exigences. Ils constituent une excellente approche pour assurer la sécurité des applications critiques telles que les équipements médicaux, les systèmes ferroviaires, aéronautiques, automobiles, etc. Des tests rigoureux et minutieux sont indispensables à l'obtention de la certification logicielle.

Comment effectuer des tests de logiciels embarqués

En général, vous testez pour quatre raisons :

  • Pour trouver des bugs dans un logiciel
  • Aide à réduire les risques pour les utilisateurs et l'entreprise
  • Réduisez les coûts de développement et de maintenance
  • Pour améliorer les performances

Lors des tests embarqués, les activités suivantes sont réalisées :

  1. Le logiciel reçoit certaines données d'entrée.
  2. Une partie du logiciel est exécutée.
  3. L'état du logiciel est observé et les sorties sont vérifiées afin de s'assurer qu'elles possèdent les propriétés attendues, comme la correspondance entre la sortie et le résultat attendu, la conformité aux exigences et l'absence de pannes système.

Types de tests de logiciels embarqués

Fondamentalement, il existe cinq niveaux de tests qui peuvent être appliqués aux logiciels embarqués.

Tests unitaires logiciels

Le module unitaire est soit une fonction, soit une classe. Les tests unitaires sont effectués par l'équipe de développement, principalement par le développeur, et sont généralement réalisés selon un modèle d'évaluation par les pairs. Les cas de test sont élaborés à partir des spécifications du module.

Test d'intégration

Test d'intégration peut être classé en deux segments :

  • Tests d'intégration de logiciels
  • tests d'intégration logiciel/matériel

Au final, l'interaction entre le matériel et les composants logiciels est testée. Cela peut inclure l'examen de l'interaction entre les périphériques intégrés et le logiciel.

Le développement de logiciels embarqués présente une caractéristique unique : l’environnement réel dans lequel le logiciel s’exécute est généralement créé en parallèle avec ce dernier. Cela complexifie les tests, car il est impossible de réaliser des tests complets en environnement simulé.

Tests unitaires du système

Le module à tester est maintenant un framework complet qui comprend l'intégralité du code logiciel ainsi que tous les autres éléments. système d'exploitation en temps réel Le protocole Point de contrôle ne consiste plus en un appel de fonction ou une invocation de méthode, mais en un message envoyé ou reçu via les files d'attente de messages du système d'exploitation temps réel (RTOS).

Les ressources système sont observées pour évaluer la capacité du système à prendre en charge l'exécution du système intégré. Pour cet aspect, tests de boîte grise est la méthode de test privilégiée. Selon l'organisation, les tests unitaires du système incombent soit au développeur, soit à une équipe d'intégration système dédiée.

Tests d'intégration système

Le module à tester est constitué d'un ensemble de composants au sein d'un nœud unique. Les points de contrôle et d'observation (PCO) combinent protocoles de communication réseau et événements RTOS, tels que les messages réseau. Outre son rôle de composant, un testeur virtuel peut également jouer celui d'un nœud.

Tests de validation du système

Le module à tester est un sous-système entièrement implémenté ou le système embarqué complet. L'objectif de ce test final est de satisfaire aux exigences fonctionnelles d'une entité externe. Il convient de noter qu'une entité externe peut être une personne, un appareil d'un réseau de télécommunications, ou les deux.

Différence : tests intégrés et tests logiciels

Le tableau ci-dessous compare les tests embarqués aux tests conventionnels test logiciel.

Test de logiciel Tests intégrés
Les tests logiciels concernent uniquement les logiciels. Les tests intégrés concernent à la fois les logiciels et le matériel.
En moyenne, 90 % des tests effectués dans le monde sont purement manuels. test de la boîte noire. Les tests embarqués sont effectués sur des systèmes ou des puces embarqués, et peuvent être de type boîte noire ou test boîte blanche.
Les principaux domaines de test sont les vérifications de l'interface graphique, la fonctionnalité, la validation et un certain niveau de test de base de données. Les principaux axes de test concernent le comportement du matériel en fonction du nombre d'entrées qui lui sont fournies.
Les tests logiciels sont principalement effectués sur des applications client-serveur, Web et mobiles. Les tests embarqués sont généralement effectués sur le matériel.
par exemple : Google Mail, Yahoo Mail, Android applications. Par exemple, les machines du domaine de la santé, les microcontrôleurs utilisés dans les ordinateurs.

Défis : tests de logiciels embarqués

Voici quelques-uns des défis auxquels on peut être confronté lors des tests de logiciels embarqués :

Dépendance matérielle

La dépendance au matériel constitue l'une des principales difficultés rencontrées lors des tests de logiciels embarqués, en raison de l'accès limité à ce dernier. Or, les émulateurs et les simulateurs peuvent ne pas refléter fidèlement le comportement du dispositif réel et donner une impression erronée des performances du système et de l'ergonomie de l'application.

Logiciel Open Source

La plupart des composants logiciels embarqués sont de nature open source, ne sont pas développés en interne et ne disposent pas d'une suite de tests complète. Il existe une grande variété de combinaisons de tests et de scénarios possibles.

Défauts logiciels ou matériels

Un autre aspect à considérer est le développement de logiciels pour du matériel nouvellement créé. Durant ce processus, un taux élevé de défauts matériels peut être identifié. Ces défauts ne se limitent pas aux logiciels ; ils peuvent également être liés au matériel.

Défauts reproductibles

Dans le cas d'un système embarqué, les défauts sont plus difficiles à reproduire. De ce fait, la procédure de test des systèmes embarqués accorde une importance bien plus grande à chaque occurrence de défaut qu'en situation classique, et s'attache à recueillir un maximum de données afin d'en identifier la cause première.

Mises à jour continues du logiciel

Les systèmes embarqués nécessitent des mises à jour logicielles régulières, telles que les mises à jour du noyau, les correctifs de sécurité et les pilotes de périphériques. Les contraintes liées à ces mises à jour rendent l'identification des bogues difficile et renforcent l'importance de la procédure de compilation et de déploiement.

FAQ

Les architectures typiques combinent l'analyse statique, les outils de tests unitaires pour C et C++, analyseurs de bus, tracdébogueurs compatibles e et systèmes de simulation matérielle, plus automatisation des tests Les suites de tests de régression s'exécutent donc sans surveillance.

Le Hardware-in-the-loop (HIL) exécute un véritable firmware sur le véritable contrôleur tandis qu'un simulateur fournit les signaux que l'installation environnante produirait, exerçant des conditions de défaut qu'il est dangereux de créer physiquement.

Un simulateur modélise le comportement et exécute une version hôte ; un émulateur reproduit le jeu d’instructions cible pour que le binaire réel s’exécute. Aucun des deux ne reproduit exactement les effets analogiques et temporels.

La norme IEC 61508 est la norme générique de sécurité fonctionnelle. Des versions sectorielles existent, notamment l'ISO 26262 pour les véhicules routiers, la DO-178C pour les logiciels embarqués, l'IEC 62304 pour les dispositifs médicaux et l'EN 50128 pour le contrôle ferroviaire.

Les modèles d'IA trient le gros volume de données et tracLes volumes de production d'une plateforme permettent de regrouper les pannes répétées et de hiérarchiser les tests de régression à exécuter en priorité sur du matériel rare. La décision en matière de sécurité reste du ressort de l'ingénieur.

Copilote GitHub brouillons de faisceaux de test et de supports pour C ou C++ Ce module accélère les simulations répétitives. Il reste cependant à vérifier le comportement et les contraintes temporelles des registres qu'il n'a jamais rencontrés.

Grâce à une analyse du temps d'exécution dans le pire des cas, instrumenté tracLe test de charge est effectué sur la cible et sous forte charge. Les dépassements de délais et la latence d'interruption sont mesurés sur du matériel réel, ce que les environnements hôtes ne peuvent pas reproduire.

Lecture C et C++, aisance avec les schémas et les analyseurs logiques, connaissance des concepts des systèmes d'exploitation temps réel et des protocoles de bus, ainsi que de la programmation de scripts. Expérience dans des domaines connexes tels que Tests IoT dessine sur la même base.

Résumez cet article avec :