lundi 24 février 2025

Contrôles, tests des ensembles matériels et logiciels

1) Les contrôles, les tests des ensembles matériels et logiciels visent à déterminer s’ils sont conformes aux spécifications convenues, s’ils sont utilisables, maintenables, exploitables… dans les conditions attendues. Ils portent sur les ensembles matériels et logiciels eux-mêmes, leurs éléments constitutifs, ou sur les éléments associés (documentation, gestion de configuration…).

Ils sont réalisés par les donneurs d'ordres, les utilisateurs, les responsables techniques.

Ils sont planifiés dans le cycle de réalisation des activités numériques (par exemple l’ingénierie, le déploiement), ou effectués en cours d’utilisation, ou à une date définie par un responsable autorisé.

2) Des processus sont à définir pour réaliser ces contrôles et tests. 

On distingue les contrôles statiques, qui consistent à examiner, analyser les matériels, le code source, des documents, le contenu de fichiers… et les contrôles et tests dynamiques, qui sont fondés sur une mise en fonctionnement dans un environnement de test ou de production, à partir de données de test ou réelles.

Les principaux contrôles et tests sont fonctionnels, de capacité, de performances, de sécurité, d’adaptabilité, d’exploitabilité, de maintenabilité, d’évolutivité.

En cas de modification, les tests de non-régression visent à vérifier que les fonctions non modifiées continuent à être exécutées de façon correcte. Des choix sont à faire sur leur taux de couverture. Théoriquement, tous les tests mettant en œuvre les éléments constitutifs modifiés sont à refaire complètement. Dans la pratique, compte tenu de la charge que cela représente, sauf si les tests sont complètement automatisés, le périmètre testé est plus restreint, défini de façon empirique, ce qui présente des risques sur la fiabilité.

La charge de contrôle et de test est parfois considérable, étant donné le très grand nombre des possibilités, des contextes d'utilisation. Les systèmes auto-apprenants, qui ont des propriétés très intéressantes, sont très difficiles, voire impossibles à tester complètement.

3) Des choix sont à faire sur les outils de réalisation des tests.

Des environnements techniques dédiés sont utilisables : développement, intégration, pré-production, recette... Les environnements d'intégration permettent de tester l'interopérabilité d'équipements provenant de constructeurs différents.

Il existe des outils d'automatisation de l'exécution des tests fonctionnels, de comparaison automatique des résultats obtenus aux résultats attendus.

Fonctionnalités

1) Les activités d’ingénierie, de maintenance numériques, comportent des tests fonctionnels. Des anomalies fonctionnelles des systèmes sont également identifiées par les utilisateurs.

Il est en général impossible de tester l’ensemble des cas possibles d’utilisation des ensembles matériels et logiciels. Il est envisageable de définir un ensemble de cas de test permettant une vérification suffisante, pour des coûts et des délais acceptables. En ce qui concerne le nombre de cas de test à retenir, une démarche possible de choix est fondée sur la conservation d’un historique des tests effectués dans des contextes comparables, sur les résultats obtenus, sur l’expérience des intervenants.

A titre d’exemple, Eurostar a effectué 5000 tests utilisateurs pour optimiser le parcours client (IT for Business décembre 2024).

Beaucoup d’entreprises considèrent que les modifications fonctionnelles des SI ne sont pas suffisamment testées.

2) La préparation des tests fonctionnels est réalisable au départ à partir des spécifications fonctionnelles détaillées. Leur taux de couverture est améliorable en demandant au donneur d’ordres de fournir des cas de test « métier ».

Dans les méthodes de développement "test driven", les tests fonctionnels des logiciels sont préparés avant le début de la programmation.

Des IA génératives sont utilisables pour préparer des scénarios de tests fonctionnels.

3) Des analyses sont réalisables sur l’utilisation des sites web, des applications mobiles, afin de comprendre les réactions des utilisateurs, les comparer à d’autres sites, applications, et de proposer des optimisations des fonctions mises à leur disposition. Des IA sont utilisables pour cela.

Des tests de charge, de performances, sont à réaliser pour les ensembles matériels et logiciels.

Pour les SI, les logiciels d'utilisation collective, des choix sont à faire sur les environnements techniques à mettre en place, les outils à utiliser. Les environnements techniques sont normalement identiques ou comparables aux environnements de production. Des robots de tests, des outils d'analyse des performances sont parfois utilisés.

Pour les grands ensembles de SI, par exemple pour les réseaux de télécommunications numériques, il n’est évidemment pas possible de réaliser des tests de charge dans un environnement identique à l’environnement d’exploitation. Dans ce cas, des tests partiels sont réalisés, et la mise en place des nouvelles architectures est en général progressive.

La préparation des tests de charge, de performances des SI, est souvent effectuée à partir de données réelles, ou d’extractions de données réelles. Il est en effet difficile, coûteux de créer ex nihilo des bases de données, des fichiers de test volumineux et représentatifs de l’utilisation future des SI.

Les constructeurs d’ordinateurs réalisent parfois des tests de charge à partir d’applications qu’ils considèrent comme représentatives.

Des tests spécifiques de résistance des SI aux intrusions, aux attaques, sont réalisables, à base de tentatives de « casser » les protections mises en place.

Plusieurs environnements cibles sont parfois définis pour les ensembles matériels et logiciels. Des tests de configuration sont à faire dans tous les environnements prévus.

L’adaptabilité, l’exploitabilité, la maintenabilité, l’évolutivité des ensembles matériels et logiciels sont susceptibles d’être contrôlées a priori :

– tests des fonctions de paramétrage, d’exploitation… ;

– examen de la documentation de paramétrage, d’exploitation, de maintenance/évolution ;

– analyses du code source (structuration, respect des normes de programmation…) ;

– contrôle des fichiers de test…

Ces contrôles sont à effectuer sur la base des exigences définies dans ces domaines.

Aucun commentaire:

Enregistrer un commentaire