fotis-fotopoulos-software development-unsplash.jpg
Accueil » Actualités » 3 astuces pour tester un logiciel embarqué

3 astuces pour tester un logiciel embarqué



Les tests automatisés accélèrent le processus de test des logiciels, mais gardez ces bases à l’esprit.

Comment savez-vous que votre logiciel fonctionne comme il est censé le faire ? Vous le testez ! La vraie question, cependant, est « Comment le testez-vous? ». Autrefois, les développeurs testaient simplement manuellement leur logiciel. Malheureusement, les tests manuels ne sont pas un excellent moyen de tester un logiciel. Le grand nombre de cas de test, le temps nécessaire pour effectuer les tests et l’intensité du travail garantissent presque que le logiciel ne sera pas testé de manière adéquate.

La solution pour améliorer les tests de logiciels embarqués consiste à utiliser des tests automatisés. Les tests automatisés peuvent prendre de nombreuses formes, mais pour l’instant, nous allons nous concentrer sur les tests unitaires. Les tests unitaires sont « une méthode de test de logiciels par laquelle des unités individuelles de code source – des ensembles d’un ou plusieurs modules de programme avec les données de contrôle associées, les procédures d’utilisation et les procédures d’exploitation – sont testées pour déterminer si elles sont adaptées à l’utilisation ».1 L’article d’aujourd’hui explorera trois conseils pour développer et exécuter des tests unitaires pour les logiciels embarqués.

Astuce n°1 – Organisez votre logiciel en composants à tester

Les programmes logiciels généralement intégrés seront composés de plusieurs dizaines de modules placés dans un seul dossier de programme. Aujourd’hui, il est un peu plus courant de voir une organisation de dossiers où les modules sont organisés par application, middleware et pilotes. Des structures organisationnelles de programme comme celle-ci sont acceptables, mais il peut être beaucoup plus facile de gérer le programme par composants lors de l’examen des tests unitaires.

Un composant est un module qui encapsule un ensemble de fonctions connexes2, les données et les cas de test. Par exemple, un développeur qui écrit un composant d’application pour un filtre FIR peut l’organiser comme suit :

Filtre FIR

– comprendre

— sapin.h

– la source

— sapin.c

– essais

— test_sapin.c

Construire une structure de dossiers comme celle-ci peut sembler un peu pénible au début. Cependant, il conserve tous les modules logiciels requis par le composant pour remplir sa fonction ensemble et les cas de test ! De plus, l’organisation d’un composant comme celui-ci rend le composant facile à porter, ou peut-être plus important encore, plus facile à réutiliser dans d’autres projets logiciels.

Astuce n°2 – Développer des logiciels à l’aide du développement piloté par les tests (TDD)

Le mouvement Agile a fourni aux développeurs de logiciels de nombreux processus et outils conçus pour les aider à développer plus rapidement des logiciels de qualité. Une méthodologie qu’Agile a produite est le Test Driven Development, souvent appelé TDD. TDD « est un processus de développement logiciel reposant sur la conversion des exigences logicielles en cas de test avant que le logiciel ne soit entièrement développé et le suivi de tout le développement logiciel en testant à plusieurs reprises le logiciel par rapport à tous les cas de test3« .

J’ai découvert TDD pour la première fois vers 2014 lorsque j’ai assisté à une conférence sur le sujet donnée par James Grenning à l’Embedded Systems Conference. Ma première impression était que TDD semblait offrir beaucoup de potentiel, mais cela semblait être beaucoup plus de travail, et je n’étais pas convaincu qu’il pourrait tenir ses promesses. Malheureusement, il m’a fallu plusieurs années avant de pouvoir sérieusement creuser et l’intégrer dans mes processus de développement. Cependant, une fois que je l’ai fait, j’ai commencé à boire le Kool-Aid et à voir la valeur de la technique.

Les détails complets dépassent le cadre de cet article, mais mes références préférées pour TDD sont le livre de Kent Beck Test-Driven Development et James Grenning’s Test-Driven Development for Embedded C. En général, TDD change la façon dont les développeurs écrivent leur logiciel en se concentrant sur le test. cas. Les développeurs créent un scénario de test, le font échouer et écrivent le code requis pour réussir le scénario de test. En faisant cela, ils construisent des cas de test dont ils savent qu’ils détecteront les problèmes si un bogue est introduit dans le logiciel.

Astuce n°3 – Tirez parti de Docker et d’un harnais de test unitaire

Les outils disponibles pour les développeurs embarqués pour développer des tests unitaires ont considérablement évolué au cours des dernières années. Lorsque j’ai commencé à jouer avec les tests automatisés, j’ai découvert que la configuration des outils était un énorme défi. Ce n’est plus le cas aujourd’hui.

Les équipes peuvent configurer leurs tests unitaires de plusieurs manières. Premièrement, ils peuvent configurer leurs tests dans le cadre d’un système d’intégration et de déploiement continus (CI/CD). CI/CD permet aux équipes d’exécuter leurs scénarios de test automatiquement dans le cadre de leurs processus de création et de déploiement. Ensuite, les développeurs peuvent simplement choisir un harnais de test et l’installer sur leur système. Le harnais de test, dans ce cas, s’exécute dans un environnement autonome. Enfin, les développeurs peuvent créer leur harnais de test et leurs processus de développement et les configurer dans un environnement Docker. Docker permet aux développeurs d’exécuter leur environnement de développement dans une image portable qui minimise le temps de configuration et améliore la cohérence entre les développeurs.

Un harnais de test peut être configuré dans Docker, puis facilement déployé sur plusieurs développeurs afin qu’ils puissent configurer leur environnement en utilisant seulement quelques commandes. C’est un processus fascinant que nous explorerons dans plusieurs blogs à venir.

Conclusion

Créer et utiliser des tests automatisés pour les logiciels embarqués semble intimidant au début. Cependant, étant donné la complexité des systèmes d’aujourd’hui, il est presque impossible d’effectuer des tests à la main. La seule vraie solution est de développer des tests automatisés qui peuvent être utilisés pour exécuter toutes les fonctionnalités du système. Les tests unitaires sont l’outil le plus courant à la disposition des développeurs et peuvent considérablement améliorer la qualité du système tout en réduisant le temps global consacré au développement de logiciels. Dans cet article, nous avons exploré plusieurs astuces pour les tests unitaires de logiciels embarqués. Dans les prochains articles, nous explorerons comment configurer et écrire nos cas de test.


1. https://en.wikipedia.org/wiki/Unit_testing

2. https://en.wikipedia.org/wiki/Component-based_software_engineering#Software_component

3. https://en.wikipedia.org/wiki/Test-driven_development

Publications similaires