Test de logiciels - La science rencontre l'art


Cela ne change que lorsqu'elle ne fonctionne pas. Pour que cela ne se produise pas, un contrôle de qualité constant est important. Le mot magique pour cela : Software Testing.
Testing de logiciels : une tentative d'approche
"Il n'existe pas de définition uniforme du test logiciel", rapporte Thomas Steirer, expert en testing chez Nagarro. "De mon point de vue, il est toutefois judicieux de définir le terme de manière large. Il englobe alors toutes les mesures qui garantissent que le logiciel remplit les tâches pour lesquelles il a été conçu. Le test logiciel devient alors une tâche globale qui, dans le meilleur des cas, commence dès le développement".
En fait, une philosophie s'est établie sous le terme "DevOps", qui poursuit précisément cet objectif. "DevOps", composé de "Development" et "Operations", rapproche le développement et l'exploitation de logiciels. Les entreprises établissent à cet effet des processus et des outils qui facilitent les boucles de rétroaction. L'un des objectifs est de supprimer les processus séquentiels rigides et d'améliorer ainsi l'assurance qualité. "Auparavant, on pensait souvent en fonction des activités. Les développeurs* spécifiaient le nouveau logiciel et en esquissaient la structure logique, les programmeurs* le mettaient en œuvre. Ensuite, les utilisateurs* internes à l'entreprise testaient une première version alpha", explique Thomas Steirer.
L'inconvénient de cette procédure : les testeurs ne découvraient souvent les défauts, même graves, qu'à un stade tardif - dans le pire des cas chez le client final. Les temps de développement s'en trouvaient allongés et les coûts supplémentaires parfois considérables. "C'est pourquoi nous accompagnons dès aujourd'hui le processus de développement. Notre expérience montre qu'environ 80 pour cent de toutes les erreurs y sont déjà commises : Le développement oublie par exemple des fonctionnalités importantes pour les utilisateurs* ou ne tient pas compte des systèmes tiers avec lesquels le logiciel va souvent interagir. Un contrôle de qualité précoce permet d'éviter cela", explique Thomas Steirer.
Un must - pas seulement pour les fabricants de logiciels
Au premier abord, il semble que le testing concerne principalement les entreprises de logiciels. Mais c'est loin d'être le cas ! Toutes les entreprises utilisent aujourd'hui des logiciels : les systèmes ERP et CRM, les sites web avec boutiques en ligne intégrées, les systèmes de contrôle de la production sont des exemples classiques. Il s'agit souvent de solutions que les entreprises adaptent à leurs besoins - et conçoivent souvent des écosystèmes informatiques entiers. "Prenons par exemple SAP. Il ne s'agit pas seulement d'un simple logiciel, mais plutôt d'une boîte à outils colorée dans laquelle les entreprises peuvent puiser en fonction de leurs besoins", explique Thomas Steirer. "La Business Technology Platform (BTP) de SAP en est la preuve : il s'agit de plus en plus d'environnements système orchestrés et spécifiques à l'entreprise".
Ces écosystèmes informatiques sont indispensables au bon fonctionnement de l'entreprise. Dans le cas des sites web et des boutiques en ligne, l'informatique interne à l'entreprise concerne en outre directement les consommateurs finaux. Il est alors fâcheux que ceux-ci ne puissent pas passer commande en raison d'erreurs logicielles. Les testeurs* de logiciels n'assurent donc pas "seulement" passivement le bon déroulement des opérations, mais protègent plutôt les entreprises contre des risques commerciaux fondamentaux - car sans informatique moderne, rien ne fonctionne plus aujourd'hui dans les entreprises. Thomas Steirer : "Les logiciels sont un facteur de survie pour presque toutes les entreprises. Les risques logiciels ne se limitent donc pas au logiciel, mais concernent l'ensemble de l'organisation et sa base existentielle. Un test logiciel bien conçu réduit ce risque à un niveau faible et maîtrisable. Ainsi, le travail des testeurs devient en fait une forme de gestion des risques".
Tester les environnements système - une question d'expérience
Or, les environnements de systèmes complexes sont par principe sujets aux erreurs. L'accent est donc mis sur la manière dont les différents composants s'assemblent de manière adéquate et cohérente. Pour ce faire, les architectes de systèmes* définissent, avant même la mise en service, les exigences auxquelles ils doivent répondre. Pour cela, ils spécifient par exemple
- Tâches et objectifs du nouvel environnement
- des cas d'utilisation courants ainsi que
- les API nécessaires pour que les différents composants puissent fonctionner ensemble.
peuvent interagir.
Les testeurs* les soutiennent en remettant en question les hypothèses, en vérifiant que les exigences sont complètes ou en examinant la pertinence pratique des cas d'utilisation. Sur le plan opérationnel, ils vérifient également les formulaires de saisie ou testent les interfaces. Difficile : pour que cela réussisse, il est important de disposer de connaissances empiriques. Thomas Steirer : "Le testing est un mélange de science et d'art. Les aspects scientifiques s'apprennent en étudiant la littérature. Les publications en la matière remplissent des bibliothèques entières. Mais on ne devient vraiment bon que lorsqu'on développe une intuition pour les problèmes typiques. Prenons un exemple : Dans la pratique, on peut imaginer une infinité de scénarios d'application. Mais il n'y a qu'un nombre fini de scénarios possibles. Tout l'art consiste à évaluer lesquels sont réalistes - et à se concentrer sur ceux-ci. Il est clair que pour cela, il faut avoir de l'expérience en matière de projets".
Testing
Un champ d'expérimentation pour l'interaction entre "l'homme et la machine" ? Il est même possible que le savoir empirique gagne encore en importance grâce à l'IA. La raison en est que l'IA se charge actuellement surtout de tâches opérationnelles, souvent ennuyeuses et répétitives. Ainsi, peu de personnes aiment lire le code source. Alors, c'est bien si ChatGTP & Co. le vérifie. Mais seuls les humains peuvent évaluer où l'utilisation de l'IA et l'automatisation des tests sont utiles - et où elles ne le sont pas. En outre, de plus en plus d'entreprises utilisent le Machine Learning. Un exemple pratique à cet égard : les assistants virtuels. Mais ceux-ci doivent d'abord être formés et validés par des données de test - un autre domaine d'activité pour les testeurs*.
Une conclusion pour les entreprises
À l'heure des modèles commerciaux axés sur les données et des chaînes d'approvisionnement incertaines, l'informatique devient encore plus critique pour le succès. Les entreprises devraient donc garder ce sujet à l'esprit et y investir au moins successivement. Au début, des spécialistes compétents peuvent accompagner les entreprises dans cette démarche, en tant que prestataires de services externes ou en formant le personnel. Thomas Steirer : "Après les premiers projets, on verra si une entreprise embauche ses propres spécialistes ou si elle fait appel durablement à des partenaires externes. Mais dans un premier temps, cela lui permet d'aborder le sujet en toute simplicité. Vu l'importance actuelle de l'informatique, cela ne fait en tout cas pas de mal de tenter le coup".