Reading Time: 8 mins

Fondamentaux des tests de logiciels

Fondamentaux-des-tests-de-logiciels-1

Fondamentaux des tests de logiciels

Qu’est-ce que le test de logiciel

Les krachs boursiers causant des milliards de pertes.

Des millions de voitures de constructeurs automobiles populaires sont rappelées.

Des avions et des avions de chasse s’écrasent entraînant des pertes de vie tragiques.

L’équipement médical tombe en panne entraînant de graves conséquences pour les patients.

Les défauts des logiciels bancaires entraînent des pertes incalculables.

Nous entendons souvent de telles nouvelles se produire avec une fréquence alarmante dans le monde entier. Mais pourquoi se produisent-ils ? Que pouvons-nous faire pour empêcher de telles tragédies ?

Il existe une seule réponse commune à tous ces problèmes : les tests logiciels !

Oui! Et c’est parce que toutes ces tragédies auraient pu être évitées par un processus de test logiciel rigoureux.

En termes simples, les tests de logiciels consistent à étudier les propriétés d’un système logiciel afin de déterminer sa faisabilité pour une tâche ou un objectif donné. Les tests de logiciels vérifient si le logiciel fonctionne comme prévu, dans une grande variété de circonstances différentes.

Comme l’objectif des différents systèmes logiciels est vaste et varié, les types de tests varient également en conséquence. En fait, il existe plus de 150 types de tests de logiciels, et d’autres sont ajoutés régulièrement, pour suivre le rythme des progrès réalisés à pas de géant dans le domaine de la technologie logicielle. Naturellement, tous les tests ne s’appliquent pas à tous les produits ou services logiciels. Chaque test est soigneusement conçu en fonction des exigences exactes de l’application testée.

D’une manière générale, les tests de logiciels visent à identifier les erreurs et les lacunes des systèmes logiciels par rapport aux exigences attendues. Toutes les catastrophes que nous avons mentionnées se sont produites parce que les tests qui ont été effectués sur eux n’ont pas permis de repérer les défauts ou les «bogues» qu’ils contenaient. Ainsi, l’une des caractéristiques d’un bon test logiciel est sa capacité à identifier les défauts.

L’obtention d’une précision de 100 % ou du zéro défaut est le Saint Graal des tests de logiciels. Cependant, c’est plus facile à dire qu’à faire. L’une des principales armes de l’arsenal des testeurs de logiciels est le développement de cas de test. Les cas de test sont rédigés dans le but de maximiser la couverture des tests, c’est-à-dire de mener des tests dans autant de situations différentes que possible.

Compte tenu des graves conséquences des défauts logiciels, les efforts déployés pour maximiser la couverture des tests en valent la peine. D’autres raisons importantes pour des tests logiciels approfondis sont :

  • Meilleure sécurité

Certaines applications telles que la banque, la défense et d’autres applications critiques doivent répondre à un degré plus élevé d’exigences de sécurité que la plupart des autres logiciels.

  • Amelioration de la qualite

Toutes les applications visent à améliorer la qualité pour assurer une fonctionnalité supérieure.

  • Optimisation des coûts

Les tests peuvent également améliorer la rentabilité en optimisant les performances des applications.

  • Satisfaction du client

Une autre considération majeure dans les tests de logiciels est de dépasser les attentes des clients en offrant des fonctionnalités supérieures.

Définition des tests de logiciels

Selon la norme ANSI/IEEE 1059, les tests logiciels sont définis comme l’analyse systématique de tout logiciel pour détecter les différences entre les conditions existantes et requises et pour évaluer ses fonctionnalités.

Il existe différentes grandes catégories de tests de logiciels basés sur l’approche et la méthodologie, entre autres :

  • Par exemple, les tests de logiciels peuvent être effectués manuellement ou en utilisant l’automatisation des tests. Avec l’immense complexité du code logiciel, les tests manuels sont rapidement remplacés par des tests automatisés. Les tests automatisés utilisent des outils, le plus populaire étant Selenium, pour exécuter des scripts de test et générer des résultats de test. D’autre part, les tests manuels reposent sur l’intervention humaine pour déterminer ce qui fonctionne ou ne fonctionne pas. Cela implique que les testeurs testent le logiciel du point de vue de l’utilisateur final à l’aide de plans de test manuels. Même les tests manuels reposent sur des outils tels que Testpad pour créer des plans de test et peuvent être utilisés lorsque l’automatisation n’est pas possible.
  • Une autre différenciation populaire est entre les tests Black Box et White Box. Dans le premier cas, les testeurs n’apprennent pas ou n’examinent pas le fonctionnement interne du logiciel. Les tests sont effectués uniquement sur la base de la fonctionnalité avec peu ou pas de connaissance de la mise en œuvre. Les tests de régression et les tests fonctionnels sont les types de tests Black Box les plus courants. Les tests White Box, en revanche, sont généralement effectués par des développeurs qui ont une compréhension approfondie de la structure/du code interne et de la mise en œuvre de l’application ou du produit. Il est plus adapté pour tester des algorithmes et inclut des tests de chemin/boucle/conditionnel.

Cycle de vie des tests logiciels (STLC)

Le cycle de vie des tests logiciels (STLC) est un sous-ensemble du cycle de vie du développement logiciel (SDLC). Cependant, c’est l’une des phases les plus critiques du développement logiciel, pour des raisons que nous avons déjà vues.

Bien que les tests de logiciels varient considérablement, plusieurs étapes communes font partie du STLC, quels que soient les objectifs de test.

cycle de vie des tests logiciels

  • Conditions

Au cours de la phase des exigences, les équipes de test étudient et définissent la portée des tests, communiquent le besoin de stratégies d’atténuation lorsque les tests ne sont pas réalisables et préparent des plans de test.

  • Planification

Les plans de test incluent l’identification des paramètres clés, ainsi que des méthodologies pour les mesurer et les suivre. Cela implique la création de stratégies de test et la gestion et l’atténuation des risques. La phase d’analyse identifie les conditions de test en fonction du degré de test, de la complexité, des risques et des critères de sortie. Plus les conditions de test sont détaillées, meilleurs sont la couverture de test et les résultats de test qui peuvent être obtenus. La phase de conception divise les conditions de test plus en détail, configure les environnements de test et crée des métriques de traçabilité et de couverture.

  • Cas de test

Sur la base de l’analyse et de la conception, des cas de test détaillés sont créés et examinés pour en vérifier l’exactitude et la couverture. Ils sont classés par ordre de priorité et séparés en tests automatisés/manuels et des scripts de test sont créés.

  • Exécution

Dans l’exécution réelle, les tests sont effectués, les défauts sont enregistrés et les mesures de traçabilité sont surveillées.

  • Fermeture

Dans la phase de conclusion, les critères de sortie sont vérifiés et des rapports sont générés. Dans la phase de clôture, tous les tests sont vérifiés pour s’assurer qu’ils sont terminés et des revues sont effectuées pour enregistrer les apprentissages clés et les opportunités d’amélioration.

Alors que le développement logiciel passe par ses étapes, le STLC aussi. Cela génère une série d’artefacts de test, qui sont des livrables créés avant, pendant et après les phases de test.

Artefacts de test communs générés pendant le STLC.

Artefacts de test communs générés pendant le STLC.

Résumé

Le test logiciel est l’une des phases les plus critiques du processus de développement logiciel . Il existe des centaines de types de tests, conçus en fonction des applications spécifiques testées. Le signe d’un bon test logiciel est l’étendue de la couverture des tests et la capacité à détecter les erreurs et les lacunes. Avec la pléthore d’applications développées et utilisées dans le monde, les tests de logiciels sont essentiels pour assurer la sécurité humaine, atteindre une qualité et une rentabilité élevées et assurer la satisfaction des clients.

Keerthi Veerappan

An INFJ personality wielding brevity in speech and writing. Marketer @ Zucisystems.