Le test logiciel est le processus qui consiste à évaluer et à vérifier qu'un produit ou une application logicielle fait ce qu'il ou elle est censé(e) faire. Les avantages du test comprennent la prévention des bogues, la réduction des coûts de développement et l'amélioration des performances.
Il existe de nombreux types de tests de logiciels, chacun ayant des objectifs et des stratégies spécifiques :
Dans chaque cas, la validation des exigences de base est critique. Tout aussi important, les tests exploratoires aident un testeur ou une équipe de test à découvrir des scénarios et des situations difficiles à prévoir et qui peuvent entraîner des erreurs logicielles.
Même une application simple peut faire l'objet d'un grand nombre et d'une variété de tests. Un plan de gestion de tests permet de hiérarchiser les types de tests qui apportent le plus de valeur, compte tenu du temps et des ressources disponibles. L'efficacité des tests est optimisée en exécutant le moins de tests possible pour trouver le plus grand nombre de défauts.
Le test logiciel est arrivé en même temps que le développement logiciel, qui a débuté juste après la seconde guerre mondiale. C'est à l'informaticien Tom Kilburn que l'on doit l'écriture du premier logiciel qui a été lancé le 21 juin 1948 à l'Université de Manchester, en Angleterre. Il effectuait des calculs mathématiques à l'aide d'instructions en code machine.
Le débogage était la principale méthode de test à l'époque et il l'est resté pendant les deux décennies suivantes. Dans les années 1980, les équipes de développement ne se contentaient plus d'isoler et de corriger les bogues des logiciels, mais elles testaient les applications dans des conditions réelles. Cela a ouvert la voie à une vision plus large des tests qui englobaient un processus d'assurance qualité faisant partie du cycle de vie du développement logiciel.
« Dans les années 1990, il y a eu une transition des tests vers un processus plus complet appelé assurance qualité, qui couvre l'ensemble du cycle de développement logiciel et affecte les processus de planification, de conception, de création et d'exécution des cas de test, le support des cas de test existants et les environnements de test », déclare Alexander Yaroshko dans son article sur le site des développeurs uTest.
« Les tests avaient atteint un niveau qualitativement nouveau, ce qui a conduit au perfectionnement des méthodologies, à l'émergence d'outils puissants de gestion du processus de test et d'outils d'automatisation des tests. » 1
Tests en continu
Le test logiciel a traditionnellement été séparé du reste du développement. Il est généralement effectué plus tard dans le cycle de vie du développement logiciel après la phase de construction ou d'exécution du produit. Un testeur peut ne disposer que de très peu de temps pour tester le code, parfois juste avant la mise sur le marché de l'application. Si des défauts sont détectés, le temps pour recoder ou retester peut être limité. Il n'est pas rare de publier un logiciel dans les temps, mais avec des bogues et des correctifs nécessaires. Sinon, une équipe de test peut corriger des erreurs, mais manquer une date de mise sur le marché.
Effectuer des tests plus tôt dans le cycle permet de garder l'effort de test au premier plan plutôt que comme une réflexion après coup par rapport au développement. Effectuer des tests logiciels précoces permet également de réduire les coûts de la résolution des défauts.
De nombreuses équipes de développement utilisent désormais une méthodologie connue sous le nom de tests en continu. Cette dernière s'inscrit dans une approche DevOps, où le développement et les opérations collaborent tout au long du cycle de vie du produit. L'objectif est d'accélérer la livraison des logiciels tout en équilibrant les coûts, la qualité et les risques. Avec cette technique de test, les équipes n'ont pas besoin d'attendre que le logiciel soit construit avant de commencer les tests. Elles peuvent exécuter des tests beaucoup plus tôt dans le cycle pour découvrir les défauts plus tôt, lorsqu'ils sont plus faciles à corriger.
Peu de gens peuvent s'opposer à la nécessité d'un contrôle qualité lors du développement logiciel. Les retards de livraison ou les défauts logiciels peuvent nuire à la réputation d'une marque, et entraîner la frustration et la perte de clients. Dans des cas extrêmes, un bogue ou un défaut peut dégrader les systèmes interconnectés ou provoquer de graves dysfonctionnements.
Prenons l'exemple de Nissan qui a dû rappeler plus d'un million de voitures en raison d'un défaut de logiciel dans les capteurs d'airbags. Ou celui d'un bogue logiciel qui a provoqué l'échec du lancement d'un satellite militaire d'un montant de 1,2 milliard de dollars. 2 Les chiffres parlent d'eux-mêmes. Les défaillances logicielles aux États-Unis ont coûté à l'économie 1,1 billion de dollars d'actifs en 2016. De plus, elles ont touché 4,4 milliards de clients. 3
Bien que les tests eux-mêmes sont coûteux, les entreprises peuvent économiser des millions par an en développement et en support si elles disposent d'une bonne technique de test et de processus d'assurance qualité. Les tests logiciels précoces révèlent les problèmes avant qu'un produit ne soit mis sur le marché. Plus vite les équipes de développement reçoivent des informations sur les tests, plus vite elles peuvent résoudre des problèmes comme ceux ci-dessous :
Lorsque le développement laisse une large place aux tests, il permet d'améliorer la fiabilité des logiciels et de livrer des applications de qualité avec peu d'erreurs. Un système qui répond aux attentes des clients, voire les dépasse, permet d'augmenter les ventes et la part de marché.
Le test logiciel suit un processus commun. Les tâches ou étapes comprennent la définition de l'environnement de test, le développement de cas de test, la rédaction de scripts, l'analyse des résultats de test et la soumission de rapports de défauts.
Les tests peuvent être chronophages. Des tests manuels ou des tests ad hoc peuvent suffire pour les petites versions. Cependant, pour les systèmes plus grands, des outils sont fréquemment utilisés pour automatiser les tâches. Les tests automatisés aident les équipes à mettre en œuvre différents scénarios, à tester les différenciateurs (comme le déplacement de composants dans un environnement cloud) et à obtenir rapidement un retour sur ce qui fonctionne et ce qui ne fonctionne pas.
Une bonne approche de test englobe les niveaux de l'interface de programmation d'application (API), de l'interface utilisateur et du système. En outre, plus les tests sont automatisés et exécutés tôt, mieux c'est. Certaines équipes construisent des outils d'automatisation de tests en interne. Cependant, les solutions des fournisseurs offrent des fonctions qui peuvent rationaliser les tâches clés de la gestion de tests, telles que :
Découvrez comment Skytap utilise IBM Cloud pour développer et tester des applications Web.
Découvrez comment ce client accélère la création de rapports de 95 % grâce aux logiciels IBM Rational et SAP.
IBM Rational Test Workbench fournit des outils de test logiciel pour soutenir une approche DevOps : tests d'API, tests fonctionnels d'interface utilisateur, tests de performances et virtualisation de services.
Le logiciel IBM Rational Test Virtualization Server permet de réaliser des tests précoces et fréquents dans le cycle de vie du développement.
IBM Rational Performance Tester permet aux équipes de test logiciel de tester plus tôt et plus fréquemment dans le cadre d'une approche DevOps.
Utilisez un outil unique pour collaborer entre les équipes, gérer le code, organiser des stand-up meetings, planifier des sprints et suivre votre travail. Disponible sur site et sur le cloud.
IBM Rational ClearCase fournit un accès contrôlé aux actifs logiciels, y compris le code, les exigences, les documents de conception, les modèles, les plans de test et les résultats de tests.
IBM Engineering Test Management est une solution collaborative de gestion de la qualité qui offre une planification des tests de bout en bout et une gestion des actifs de test, des exigences aux défauts.
Dans ce guide de base, découvrez comment les tests en continu intégrés accélèrent le développement d'applications.
Découvrez les bases du développement logiciel et comment il aide les entreprises à innover et à être compétitives.
Découvrez pourquoi l'adoption des bonnes capacités et des meilleures pratiques pour réaliser des tests en continu peut soutenir votre transformation DevOps.
Suivez les derniers événements d'IBM Developer et restez au fait des actualités.
Suivez les derniers événements d'IBM DevOps et restez au fait des actualités.
Cette vidéo explique ce que sont les tests en continu, comment ils sont effectués aujourd'hui et propose des idées sur la façon d'effectuer des tests à l'avenir.
1 https://www.utest.com/articles/small-history-of-software-testing (lien externe à ibm.com)
2 https://www.guru99.com/software-testing-introduction-importance.html (lien externe à ibm.com)
3 https://www.cloudcomputing-news.net/news/2017/oct/30/glitch-economy-counting-cost-software-failures/ (lien externe à ibm.com)