Tests de maintenabilité

Test actif

Réutilisabilité, modularité, stabilité, testabilité, …

Test actif
Agility Maturity Cards > Test actif
Tests de maintenabilité

Qu'est-ce qu'un test de maintenabilité ?

Il existe différents types de maintenance [Deyin 2021] :

  • Maintenance responsive ou Maintenance corrective
    - Maintenance corrective planifiée ou programmé
    - Mmaintenance corrective non planifiée ou non programmée
  • Maintenance proactive
    - Time-Based Maintenance (TBM) - basée sur un calendrier
    - Predictive Maintenance (PDM) - basée sur les probabilités et l'historique
    - Failure Finding Maintenance (FFM) - basée sur des tests réguliers sur le produit
    - Condition-Based Maintenance (CBM) - dépend de la situation du produit
    - Risk-Based Maintenance (RBM) - basée sur les risques les plus élevés rencontrés

La maintenabilité vise à faciliter la maintenance. Pour la norme ISO 25010, les tests de maintenabilité (MT) visent à augmenter l'efficacité et l'efficience avec lesquelles un produit peut être amélioré, adapté, mis à jour ou réparé par le biais d'activités de maintenance ou de maintenance en cours d'utilisation par des mainteneurs expérimentés [ISO 25010]. La maintenance comprend également des activités préventives [Gao 2003].

Pour y parvenir, les tests de maintenabilité prennent généralement en compte la norme [ISO 25010] :

  • Modularité [IEEE 24765:2010], pour limiter l'impact de la maintenance et faciliter les mises à niveau sans perturber l'ensemble du système.
  • Réutilisabilité [IEEE 1517-2004], afin d'éviter les doublons et donc les opérations répétitives sur le site de maintenance .
  • L'analysabilité, pour faciliter les diagnostics
  • Modifiabilité, pour faciliter les changements. Il introduit quelques conflits potentiels lorsque les parties sont livrées indépendamment, la flexibilité introduite par la modularité se révèle être plus efficace car elle évite un processus monolithique et facilite l'évolutivité. Et en même temps, la modularité augmente la maintenabilité à un niveau critique avec des logiciels basés sur des composants [Gao 2003].
  • Testabilité [IEEE 24765:2010], pour vérifier les hypothèses et permettre ainsi les analyses.





Aspects de testabilité pour faciliter l'analyse lorsque le code n'est pas disponible [Moustier 2020].

Les composants introduits par la modularité fournissent des interfaces qui seront utilisées pour les tests unitaires à condition qu'une bonne testabilité ait été construite et aussi pour tester le bon fonctionnement des dépendances avec des tests d'intégration. Ces tests d'intégration seront facilités par les harnais de test.


Pour construire des campagnes de TM, il est important de localiser rapidement les cas de tests qui traiteraient des composants impactés par la maintenance. Un autre inconvénient de la modularité est l'indisponibilité potentielle du code source pour permettre l'analyse, d'où un fort besoin de testabilité pour que les mainteneurs utilisent les moyens techniques disponibles et qu'ils soient au moins conscients de l'existence de ces moyens.

Le paradigme de la modularité inévitable fournit 3 types de modules [Gao 2003] :

  • Composants sur étagère (COTS)
  • Composants fabriqués en interne
  • Composants nouvellement générés

La catégorie à laquelle appartient un composant aidera à définir la stratégie de MT concernant le contexte dans lequel se déroule le site de maintenance :

  • lorsqu'ils se produisent dans un contexte non planifié en raison de la mise à niveau ou de la défaillance d'un composant, les cas de test sélectionnés doivent viser une récupération simple du produit afin d'obtenir un temps moyen de récupération(MTTR) acceptable.
  • lorsqu'il s'agit de préparer la dernière version d'un composant avant son déploiement, l'"exhaustivité" peut être ciblée pour garantir au mieux un déploiement "sans douleur".
  • afin de repérer les problèmes de manière proactive et d'exécuter la maintenance avant que les utilisateurs ne le fassent, on peut prévoir une visite régulière de maintenance pour surveiller la bonne santé du système

Un autre facteur qui aide à définir la stratégie appropriée est les moyens de testabilité disponibles qui peuvent inclure le code source, une certaine documentation, des outils et certaines compétences sur le composant sous maintenance.

À partir de ces trois éléments, des techniques d'essai appropriées peuvent être utilisées pour élaborer une stratégie de MT qui devrait viser un faible taux d'erreur du système et une fiabilité facile.

Quelques facteurs pour une stratégie de test Maintenance

Impact sur la maturité des tests

Certains produits comprennent également des pièces de matériel. Le site de maintenance de ces pièces nécessite un flux de travail matériel, du terrain au laboratoire de maintenance . Dans le domaine de l'électronique grand public, la procédure est généralement appelée "Autorisation de retour de marchandise" (RMA), ce qui est fait pour éviter de renvoyer des appareils qui peuvent être facilement réparés localement, afin de réduire les impacts du rappel.

Ce processus RMA s'articule autour de différents niveaux de support, depuis les instructions très simples qui peuvent être exécutées par n'importe quel utilisateur final, jusqu'aux utilisateurs expérimentés ou Power Users qui peuvent effectuer localement certaines corrections, jusqu'à l'escalade du rappel à vos laboratoires de R&D. Pour permettre cette approche basée sur les niveaux de maintenance, la qualité intégrée [SAFe 2021-27] est obligatoire. La testabilité qui va de pair avec cette approche de qualité intégrée permet un diagnostic à chaque niveau.

Les problèmes détectés sur le terrain doivent être récupérés afin de permettre l'analyse de ces incidents et d'apprendre des utilisateurs finaux. Par conséquent, lorsqu'un processus RMA est engagé, une analyse des causes profondes (RCA) doit être effectuée pour voir s'il y a des actions préventives à mener, et finalement un rappel du produit, afin d'éviter le mécontentement général, les dommages graves et les procès.

Ces tests de maintenabilité proactifs peut être plutôt coûteux, en termes d'argent et de réputation ; par conséquent, une bonne traçabilité des composants aidera à limiter la quantité d'unités ou de pièces de composants retournées à analyser. Cet exemple standard montre certains aspects des TM et il en existe autant que de contextes selon les principes de test [ISTQB 2018].

Il existe cependant un point commun à tous les contextes auxquels les produits seront confrontés, car tout produit a un carnet de commandes, du code, de la documentation et des cas de test. Tous ces éléments doivent être pris en charge comme des éléments d'une chaîne d'approvisionnement et il faut imaginer une certaine logistique autour d'eux pour faciliter le flux du pipeline de livraison. Cette approche générale de maintenance est appelée "5S" et consiste en fait à 

  • Trier les objets pour les retrouver rapidement
  • Régler les choses pour qu'elles soient prêtes à être utilisées immédiatement
  • Balayer et nettoyer les objets pour éliminer toute pièce défectueuse et perdre du temps à les réparer plutôt qu'à les utiliser.
  • Normaliser les choses avec des conventions, des processus et des responsabilités
  • Soutenir le système par l'autodiscipline

À titre heuristique, le champ d'application des 5S pourrait être limité aux pièces les plus critiques ou sujettes à des changements et à des erreurs, mais il est clair que de telles actions doivent être incluses dans le déroulement du Sprint pour maintenir les actifs et les maintenir prêts pour une utilisation intensive, en particulier lorsqu'il y a un problème dans la production.

Cet état d'esprit "soyez prêt" est à institutionnaliser, surtout lorsqu'il s'agit de systèmes qui sont lancés de temps en temps. Dans une telle situation, des répétitions sont nécessaires pour maintenir les connaissances actives. Cela peut paraître évident lorsque des ingénieurs viennent de lancer la solution, mais après quelques années, il peut sembler que ce ne soit plus le cas. N'oubliez pas qu'il y a encore des piles COBOL qui tournent sur des serveurs legacy avec des personnes pour les maintenir après des décennies, alors même que les gens déménagent...


Dans certains modèles commerciaux, comme le secteur automobile, la maintenance doit être rentable. Le constructeur vend des voitures aux utilisateurs finaux et octroie des licences aux garagistes ; la licence propose une rentabilité fiable. Dans ces circonstances, la testabilité du système est industrialisée afin qu'elle puisse être enseignée aux preneurs de licence pour maintenir la satisfaction des utilisateurs finaux à un niveau élevé.

Il est maintenant clair que la maintenance, la fiabilité, le MTTR et le budget d'erreurs sont si étroitement liés que chaque partie facilite les autres. Cette situation conduit 

  • à que tout soit prêt pour des actions correctives immédiates, ce qui est facilité par des principes tels que les principes SOLID, les 12 facteurs et de nombreux principes architecturaux qui aident à savoir où les choses doivent être placées, comme le préconisent les 5S.
  • à construire un système qui soit résilient aux situations inattendues, éventuellement en perturbant volontairement le système pour aller vers le Jidoka et limiter les interactions humaines et appliquer le paradigme "Animal de compagnie vs Bétail" [Bias 2016].
  • à prendre en charge toute dette technique

Cette approche conduit au "système de fabrication reconfigurable" (RMS) [Finn Miller 2017]. Il s'appuie sur six caractéristiques fondamentales :

  • Modularité
  • Intégrabilité
  • Une flexibilité sur mesure
  • Évolutivité
  • Convertibilité
  • Possibilité de diagnostic

Lorsqu'il possède les caractéristiques du RMS, celui-ci augmente la vitesse de réactivité des systèmes de fabrication face à des événements imprévisibles, tels que des changements soudains de la demande du marché ou des défaillances inattendues des machines. Le RMS repose sur 5 principes [Finn Miller 2017] :

  1. Les fonctionnalités du RMS sont rapidement adaptables pour répondre à de nouveaux besoins.
  2. Une évolutivité conçue dès le départ
  3. Modularisation des pièces par conception
  4. Configurabilité
  5. Les moyens sont rentables pour répondre à des événements inattendus

Toutes ces pratiques doivent être introduites, petit à petit, par le biais de petits facilitateurs [SAFe 2021-23] dans le cadre de la planification de chaque sprint. Encore une fois, les développeurs comme les PO sont responsables des TM. Cette approche "Baby step" est une façon classique de gérer un environnement qui permet les tests de maintenabilité et le Jidoka en particulier en perturbant progressivement et délibérément le système.

Le point de vue d'Agilitest sur cette pratique

Les scripts de test sont des actifs qui méritent d'être maintenus. L'application des caractéristiques et des principes de RMS aux scripts de test est une garantie : 

  1. Un test valide signifie avec flaky tests
  2. Campagnes de tests de grande envergure
  3. Test allant de parties aux assemblages pour permettre des tests progressifs de bout en bout au fur et à mesure que le produit est assemblé et pour faciliter des tests Shift Left et des scénarios simples à maintenir.
  4. Réutilisation du script notamment avec les données de test
  5. L'ingénierie et la gestion des scripts de test réduisent les coûts d'exploitation [SAFe 2021-06] et permet des tests de maintenance rentables.

Pour découvrir l'ensemble des pratiques, cliquez ici.

Pour aller plus loin

© Christophe Moustier - 2021