La maintenance est l’ensemble des activités effectués sur le logiciel après le déploiement.
Une fois un système logiciel est fabriqué et déployé, il est utilisé pendant des années.
Pour que le logiciel continue à être utilisé au cours des années, il faut que les incidents rencontrés soient corrigés, il faut faire évoluer ses fonctionnalités pour répondre aux nouveaux besoins des utilisateurs, il faut le migrer vers un nouvel environnement pour l’adapter aux nouvelles technologies, ou si nécessaire le supprimer de façon sécurisée en archivant les données importantes.
Toutes ces activités de modification de migration et de suppression sont des activités de maintenance.
Tous les tests associés aux activités de maintenance sont appelés des tests de maintenances.
Les modifications :
Les modifications peuvent être des corrections, des évolutions, ou des changements d’environnement.
Les corrections peuvent se faire à travers des livraisons planifiées à l’avance ou à travers des hot fixes ou des corrections à chaud en cas de détections d’un incident critique dont la correction est urgente.
Les évolutions sont des livraisons généralement planifiées de versions étendues du système logiciel.
Les changements d’environnement sont des mises à jour d’envergure limitée de l’un des éléments qui constituent l’environnement du système logiciel comme le système d’exploitation sur lequel il est basé, la base de données ou il stocke ses données et les logiciels sur étagère COTS dont le système dépend et qui doivent être mis à jour.
Tous ces éléments sont à mettre à jour régulièrement pour entretenir la qualité et le niveau de sécurité du système logiciel.
Les migrations :
Les migrations sont des changements majeurs dans l’environnement.
La taille et les spécificités des changements introduits lors des migration implique de les traiter comme une catégorie de maintenance à part entière.
Si lors d’une migration, la base de données est changée, le schéma de donnée qui est la structure qui organise le stockage et la manipulation de donnée change aussi.
Le changement de schéma de données implique la modification du code du système logiciel pour établir la communication entre l’application et sa nouvelle base de données.
Les tests de maintenance doivent alors vérifier les modifications du logiciel, ses caractéristiques opérationnelles dans sa communication avec la base de données, ainsi que l’intégrité des données récupérées de l’ancienne base et converties vers le format de la nouvelle base de données.
La suppression :
La « mise au rebut » est un terme comptable pour signifier la destruction ou la mise hors service d’un bien.
Une suppression est effectuée quand un système est remplacé par un autre système (et pas seulement sa base de données), ou quand le système est totalement abandonnée et seules ses données sont gardées et stockés grâce à des mécanismes d’archivage.
Les types de tests
Les tests de maintenances incluent donc :
- des tests qui vérifient les parties qui ont été modifiés pour vérifier qu’ils fonctionnent comme prévu,
- et des tests de régressions pour vérifier que les autres parties qui n’ont pas été modifiés n’ont pas été impactés par les changements.
Comme les tests de fabrication d’un nouveau logiciel, les tests de maintenance d’un logiciel existant peuvent être effectués sur plusieurs niveaux et en combinant plusieurs types de tests : fonctionnels, non fonctionnels, structurels, de confirmation et des tests de régressions.
Le périmètre de tests de maintenance est défini selon la criticité des parties modifiés, l’ampleur des des modifications réalisées et la taille du système global.
L’analyse d’impact est une étude qui permet d’identifier les conséquences d’un changement dans un logiciel.
Cette analyse d’impact est utile pour décider de ce qui doit être testé pour prévenir les régressions. Et déterminer les tests de régressions à réaliser.
Les spécifications sont le point de référence pour juger de la conformité d’un logiciel au fonctionnement attendu.
Négliger de mettre à jour les spécifications complique la réalisation des tests de maintenance parce qu’on ne sait plus ce qui est attendu, et donc normal.
Les testeurs qui ont de l’ancienneté dans le projet peuvent limiter l’impact de l’absence de spécification grâce à la connaissance fonctionnelle qu’il ont du logiciel, mais ces testeurs peuvent ne plus être disponibles s’ils sont en congé ou s’ils quittent le projet.
Il est donc important d’entretenir des spécifications à jour tout au long de la maintenance d’un système logiciel.