1. L’essor des tests logiciels par l’IA
L’intégration de la technologie de l’IA générative dans les activités de test est le changement le plus important des cinq dernières années dans le domaine de l’assurance qualité. Les outils de Quality engineering ont atteint un niveau de sophistication inattendu, et cela va continuer à croître de façon exponentielle.Par exemple, nous pouvons maintenant utiliser des plug-ins qui permettent de prédire où les défauts apparaîtront dans le système de développement grâce au Machine learning. Le modèle apprend à comprendre l’application testée, et après seulement trois itérations, il peut identifier et détecter l’emplacement du défaut dans le développement du logiciel. C’est donc une manière efficace de prévenir les défauts avant qu’ils ne surviennent, ce qui permet de gagner du temps et de l’argent.
LE SAVIEZ-VOUS ?
Comment cela fonctionne-t-il concrètement ? Imaginons que vous développiez une application d’assurance. Vous souhaitez mettre au point une fonctionnalité qui permette à un client d’effectuer une demande. Mettons que votre client ait eu un accident de voiture et veuille un véhicule de remplacement pour le lendemain. La fonctionnalité implique donc une nouvelle évolution dans le prochain sprint ou la prochaine version du logiciel. Or, la définition des exigences et l’écriture du code vous reviennent. Quel sera l’impact sur le reste du système ? L’outil d’IA permet d’identifier toute conséquence indirecte dangereuse sur d’autres fonctions de l’application.
Auparavant, vous deviez effectuer des tests de régression manuels sur le système, puis apporter les modifications nécessaires. Il était également possible d’utiliser l’heuristique et les probabilités pour prédire l’impact.
Cependant, ces deux approches sont chronophages et demandent une vérification considérable des différents composants du système. Aujourd’hui, tout ce processus est automatisé par l’IA et les calculs se font en moins de temps qu’il n’en faut pour le dire.
En matière de productivité, un tel outil peut réduire de 40 % les efforts effectués, ce qui permet au testeur de consacrer plus de temps aux activités d’exploration.
2. La QA a plus que jamais besoin de l’intelligence humaine
Les outils d’IA générative comme ChatGPT sont impressionnants, mais ils ont encore leurs limites. Seul un humain peut juger si un système répond vraiment aux besoins des utilisateurs, car les logiciels sont faits pour eux et pas pour des robots.Les outils IA génératifs vont changer le monde, et ils évoluent très vite. Mais la qualité des logiciels dépend toujours du savoir-faire et de l’expérience des testeurs.
Ils doivent savoir ce qui fait la qualité d’une application – une tâche qui demande de réfléchir de manière critique. Vous devez pouvoir développer un bon feeling sur les attributs de qualité. C’est seulement après que vous pourrez élaborer un scénario de test efficace. Mais, cela nécessite des compétences et de l’expertise.Les systèmes d’information, les API et les microservices demandent des tests avancés d’intégration et de système. Ces questions sont très complexes et il n’y a pas de méthode infaillible ou d’outil optimal pour y répondre parfaitement. La compréhension de l’architecture des logiciels et de leur organisation sociale exige une expérience certaine dans le domaine. Plus qu’un simple système technique, ces éléments constituent alors un système d’information.
L’expérience en matière de tests compte ici plus que l’expertise en matière de développement de logiciels, car il est nécessaire de comprendre la configuration globale du système technique. Quels sont les éléments utiles au système d’information ? Est-ce la performance ? La pertinence fonctionnelle ? La priorité est-elle la sécurité ou bien l’accessibilité ? L’intégration de la qualité dans un système ne peut se faire sans sacrifices, car le temps est compté.
C’est précisément là que le feeling à un rôle à jouer. Les testeurs expérimentés réalisent constamment des analyses de risques basées sur les fonctionnalités du système, en pondérant les priorités au fur et à mesure de leur travail. Pour certains sites web, le design n’est pas le plus important : c’est la disponibilité qui prime. Prenons l’exemple de X (Twitter). Le site n’est certes pas très beau, mais il est efficace et rapide. En effet, il peut gérer des millions de messages qui parcourent le monde chaque seconde. Dans ce cas précis, les testeurs se concentrent sur l’utilisation.
3. Les tests de systèmes associent l’informatique à l’ingénierie des produits
On pense souvent que les tests logiciels sont surtout utiles pour les applications web dans des domaines B2C où l’informatique est essentielle, comme la banque, les assurances, le retail ou les services publics, qui doivent offrir une bonne expérience client. En fait, tous les secteurs ont besoin de tests.
Travailler sur les systèmes de gestion qui gèrent les finances, les ressources humaines ou la chaîne d’approvisionnement d’une organisation présente des défis comparables à ceux d’un site web axé sur le client. Les secteurs d’activité ne sont donc pas le seul critère. Il faut établir les processus adéquats.
Le chevauchement entre les deux disciplines (l’ingénierie des systèmes embarqués et l’ingénierie des logiciels applicatifs) est aujourd’hui monnaie courante.
Les exemples sont nombreux, en raison de la transformation digitale désormais omniprésente dans tous les secteurs. Prenons le développement des objets connectés (IoT) et des logiciels embarqués nécessaires aux constructeurs automobiles.
Ceux-ci ont besoin de services de test d’intégration pour s’assurer que les systèmes de gestion basés sur le cloud, par exemple pour les mises à jour automatiques des véhicules connectés, fonctionnent efficacement.
Les quatre types de tests sont toujours les mêmes :
- Fonctionnel : mon système fera-t-il ce que je lui demande ?
- Non fonctionnel : mon système est-il sûr, disponible, accessible, etc. ?
- Régression : ma solution aura-t-elle un impact sur d’autres fonctionnalités dans mon système ?
- Confirmation : la correction d’un défaut est-elle bien effectuée ?
Il existe ensuite quatre niveaux de test, qui utilisent les quatre types ci-dessus :
- Tests d’unité : une seule ligne de code
- Tests de composants : un module de différentes fonctionnalités
- Tests d’intégration : comment le code s’intègre dans le système global
- Test du système (ou du domaine) : l’ensemble du système fonctionne-t-il ?
Enfin, les tests d’acceptation par l’utilisateur permettent de vérifier que les processus opérationnels sont conformes aux exigences globales.
4. L’assurance qualité logicielle devrait devenir de plus en plus importante dans les années à venir
La quasi-totalité des entreprises développent leur présence en ligne. Les systèmes au contact de la clientèle étant essentiels pour générer des recettes et/ou apporter des services, selon les priorités définies, les API doivent être performantes en matière de disponibilité, de performance, d’évolutivité et de pertinence.
Les tests sont donc essentiels pour la livraison régulière de nouvelles fonctionnalités, condition sine qua non pour rester en tête de marchés extrêmement compétitifs. (Et je vous mets au défi de me trouver un marché qui ne soit pas extrêmement compétitif à l’époque actuelle).
Les entreprises doivent continuer à développer de nouveaux services et à s’adapter rapidement à l’évolution des demandes de leurs clients. Si vous ne pouvez pas tester au début du cycle de vie, vous ne pourrez pas effectuer de livraisons fréquentes. C’est aussi simple que cela.
Les entreprises fixent les dates de lancement de leurs nouveaux services et le non-respect de ces délais peut avoir des conséquences catastrophiques.
Les tests logiciels sont bénéfiques, car les défauts de production ralentissent le développement et coûtent cher. Moins il y a de problèmes, moins le prix est élevé. De plus, une bonne réputation augmente la satisfaction des clients – et les ventes.
5. La discipline Quality engineering réinitialise le triangle temps/qualité/coût
L’un des principaux avantages de Quality engineering réside dans le fait que les entreprises peuvent concevoir et intégrer la qualité dans une solution le plus tôt possible, la rendant ainsi plus facile à tester aux moments les plus critiques. La validation des exigences en est un bon exemple. Jusqu’à 70 % des défauts se trouvent dans les étapes relatives aux exigences et à la conception. Il est beaucoup plus rentable de les corriger à ce stade que de les retravailler ou de les soumettre à des tests de régression ultérieurement.
La Quality engineering remet en cause l’idée conventionnelle selon laquelle il faut faire des compromis entre la qualité, le coût et le délai. Quand les entreprises testent les bons éléments au bon moment, et visent les zones les plus critiques, elles diminuent le nombre de défauts qui se transmettent d’une étape de production à une autre.L’IA générative a pour objectif d’assister le testeur. Nous voulons être agiles et rapides, afin de réduire les coûts de développement. Ainsi, améliorer la qualité entraînera des gains de temps et d’argent.
6. Le rôle des testeurs de logiciels évolue
Pour les testeurs d’aujourd’hui, il est fondamental de disposer des compétences nécessaires pour automatiser les scripts de test.
S’il s’agit actuellement d’un niveau d’expertise minimum requis pour un ingénieur qualité logiciel, cela n’a pas toujours été le cas. Des compétences en développement logiciel sont également utiles : elles permettent au testeur d’intégrer des tests dans le pipeline d’intégration et de déploiement continus. En effet, de nos jours, l’intégralité du développement s’effectue en DevOps et en Agile. Bien que la plupart des testeurs aient des compétences en développement de logiciels, l’inverse n’est pas toujours vrai : les développeurs de logiciels sachant tester sont plutôt rares.
Force est de constater que les tests ont toujours été le parent pauvre du développement de logiciels. Jadis, les développeurs avaient tendance à dire que les testeurs n’étaient pas de vrais ingénieurs, qu’ils leur mettaient des bâtons dans les roues en renvoyant des défauts de code qui les ralentissaient. Je ne suis pas d’accord avec cette idée, mais c’était ce que tout le monde pensait.
Les choses évoluent rapidement. L’ingénierie de la qualité devient tendance, les testeurs utilisent des technologies plus sophistiquées. L’automatisation des tests, difficile à mettre en œuvre sur le plan technique, est considérée comme une contribution plus significative. Dans un monde de développement permanent où les enjeux sont considérables, les testeurs jouent souvent le rôle de super-héros chargés de résoudre les problèmes (et, par la même occasion, de faire gagner beaucoup de temps et d’argent).
En Europe, une communauté croissante de testeurs se démarque : amusants, créatifs et solidaires, nous organisons de nombreux événements, particulièrement en France. Dans les start-ups et aux États-Unis, les ingénieurs qualité gagnent en prestige : mieux intégrés dans l’équipe, ils sont plus à même d’apporter leur point de vue sur la valeur finale du logiciel.
Peu à peu, l’incompréhension entre le monde des développeurs et celui des testeurs s’amenuise. Les équipes mixtes, composées d’un plus grand nombre de rôles généralistes aux multiples casquettes, rendent le processus plus compact. Le titre même de « testeur » est moins utilisé. Les organisations qui adoptent un bon état d’esprit se gardent de mettre leurs experts dans des cases, préférant les considérer comme des membres à part entière des équipes de software engineering. Ainsi, chacun est impliqué dans la réalisation d’un même objectif. Je suis persuadé que cela finira par devenir la norme.
L’assurance qualité est une voie de prédilection pour les cerveaux qui aiment mettre leurs deux hémisphères à contribution, car elle nécessite de savoir à la fois rédiger ET calculer. J’ai toujours aimé travailler avec les mots. En tant que testeur, on travaille dans l’information autant que dans la technologie. Les gens ont trop tendance à oublier que le « I » d’IT signifie « information ».
Le logiciel est influencé par celles et ceux qui le conçoivent autant que par celles et ceux qui l’utilisent. Une théorie suggère que la technologie reflète les personnes qui l’ont développée… Cela me paraît sensé. En bref, si votre équipe est médiocre, votre système le sera également. Par contre, les équipes efficaces produiront des projets remarquables. N’est-ce pas stimulant ?
Envie de devenir ingénieur chez Expleo ?
Expleo has a 40-year heritage in software and systems testing for leading companies across sectors ranging from banking and insurance, utilities and retail to engineering firms in automotive, aerospace, defence and transportation.