L'assurance qualité devient de plus en plus populaire. Les experts estiment que les postes de test logiciels aux États-Unis vont augmenter de 25 % au cours de la prochaine décennie. Si cela vous intéresse, vous vous demandez peut-être par où commencer pour apprendre les tests logiciels.
Dans cet article, je vais répondre à des questions pour vous aider à débuter dans les tests logiciels. Je passerai en revue ce que sont les tests logiciels, les concepts les plus importants en matière de tests ainsi que quelques outils de test logiciel à considérer.
Explication des tests logiciels
Le processus comprenant toutes les activités du cycle de vie, tant statiques que dynamiques, concernant la planification, la préparation et l'évaluation d’un composant ou d’un système et des éléments de travail associés afin de déterminer s’ils répondent aux exigences spécifiées, de démontrer leur adéquation à l’usage prévu et de détecter les défauts.
Glossaire de l’ISTQB
Les tests logiciels jouent un rôle important dans le processus de développement en validant que l'application fonctionne comme prévu et répond aux exigences et attentes de ses utilisateurs finaux.
L’objectif est d’identifier les défauts, erreurs et incohérences dans l’application logicielle avant sa mise à disposition du public. Les tests consistent à exécuter le logiciel dans différentes conditions, configurations et scénarios pour garantir son bon fonctionnement et son efficacité.
Si vous souhaitez savoir comment débuter dans le domaine des tests logiciels, voici une liste de questions d’entretien QA courantes (et leurs réponses !).
Cycle de vie des tests logiciels
Le cycle de vie des tests logiciels (STLC) est le processus suivi par les testeurs logiciels afin de s’assurer que l’application à tester répond aux normes de qualité et aux exigences spécifiées. Le STLC se compose généralement de plusieurs phases conçues pour garantir que l’application est minutieusement testée et atteint le niveau de qualité souhaité avant sa sortie auprès des utilisateurs finaux. Voici les phases du cycle de vie des tests logiciels :

Analyse des exigences
Dans cette phase, les testeurs logiciels analysent les exigences et les spécifications. Ils identifient les exigences fonctionnelles et non-fonctionnelles, comprennent le but de l’application ainsi que son public cible, puis développent des cas de test et des scénarios en conséquence.
Planification des tests
Durant cette phase, l’équipe de test définit la portée des tests, la stratégie d’approche et les ressources nécessaires. Le plan de test identifie également les risques et contraintes liés au processus ainsi que le calendrier des activités de test.
Conception des tests
Dans cette phase, l’équipe de test conçoit les cas de test et les scénarios à partir des exigences et spécifications. Elle identifie également les données de test nécessaires et élabore les scripts permettant l’automatisation du processus de test.
Exécution des tests
Les testeurs exécutent alors les cas de test et scénarios conçus précédemment. Les résultats sont documentés et tout défaut ou erreur détecté dans l’application est signalé.
Rapport de test
À cette étape, l’équipe de test rédige un rapport avec les résultats et défauts identifiés lors des tests. Ce rapport inclut éventuellement leurs recommandations pour corriger les défauts et améliorer la qualité globale du logiciel.
Clôture des tests
Il s’agit de la dernière phase où l’équipe de test évalue le processus suivi et identifie les axes d’amélioration. Elle prépare également un rapport de clôture résumant le processus et les résultats des tests réalisés.
Le cycle de vie des tests logiciels est un processus continu qui nécessite une collaboration entre l’équipe de test et l’équipe de développement afin de garantir que l’application atteigne le niveau de qualité et de fonctionnalité requis.
Types de tests logiciels
Il existe différents types de tests logiciels utilisés par les équipes QA en fonction du contexte et des exigences du projet.
Nous pouvons distinguer les tests manuels et les tests automatisés, selon la façon dont les tests sont exécutés. Selon ce qui est testé, nous pouvons différencier les tests fonctionnels et non fonctionnels. Selon les méthodes utilisées, nous avons les tests statiques et dynamiques. Suivant l’approche, nous pouvons identifier les types de tests en boîte blanche et boîte noire. Nous avons également les tests exploratoires, les tests de fumée et de santé, ainsi que les tests de régression. Tous ces types de tests peuvent se recouper selon la manière dont ils sont utilisés.
Test manuel
Avec le test manuel, les tests sont effectués en personne, sans utiliser d’outils ou de scripts automatisés. Cela peut être plus sujet à erreur et prend généralement plus de temps.
Test automatisé
Le test automatisé est réalisé par une machine qui exécute des scripts écrits à l'avance. Il nécessite plus de compétences techniques, par exemple la connaissance d’un langage de programmation et d’outils d’automatisation tels que Selenium. Il peut être plus coûteux que le test manuel, et certains aspects du processus de test ne peuvent pas être automatisés.
Test fonctionnel
Le test fonctionnel consiste à vérifier ce que fait l’application. Les tests fonctionnels vérifient les fonctionnalités et capacités de l'application logicielle et s'assurent qu'elles répondent aux exigences et spécifications.
Test non fonctionnel
Contrairement au test fonctionnel, les tests non fonctionnels se focalisent sur la manière dont l’application se comporte. Il existe plusieurs sous-types de tests non fonctionnels, selon l’objectif principal des tests. Je n’en aborderai que quelques-uns dans cet article.
Test de performance : Mesure le temps de réponse, le débit et la scalabilité de l’application logicielle sous différentes charges. Il vérifie la capacité de l’application à gérer plusieurs utilisateurs et transactions simultanément, et à fonctionner efficacement sous des conditions de charge maximale.
Test de charge : Simule des charges utilisateurs réelles et est réalisé pour déterminer le comportement du système en conditions normales et de pointe. Il sert à vérifier si l’infrastructure utilisée pour héberger l’application est suffisante et nous indique combien d’utilisateurs simultanés l’application peut supporter et quelle doit être son ampleur en termes de matériel, capacité réseau, etc. afin que davantage d’utilisateurs puissent y accéder.
Test de résistance : Consiste à tester au-delà de la capacité normale, souvent jusqu’au point de rupture, pour observer les résultats. L’objectif est de garantir que le logiciel ne plante pas dans des conditions de ressources informatiques insuffisantes (par exemple mémoire, espace disque, requêtes réseau, etc).
Test de sécurité : Garantit que l’application logicielle est sécurisée et protégée contre les accès non autorisés. Les tests de sécurité vérifient la présence de vulnérabilités et de faiblesses dans les protocoles de sécurité de l’application logicielle et identifient les potentielles menaces à la sécurité.
Test d’utilisabilité : Utilisé pour évaluer si l’application est conviviale. Il vérifie la facilité avec laquelle les utilisateurs peuvent naviguer dans l’application logicielle et effectuer efficacement les fonctions souhaitées.
Test d’accessibilité : Considéré comme un sous-ensemble du test d’utilisabilité, le test d’accessibilité est réalisé afin de s’assurer que l’application testée est utilisable par des personnes en situation de handicap.
Test de localisation : Un type de test logiciel dans lequel le comportement du logiciel est testé pour une région, un pays ou une culture spécifique. Quelques attributs à prendre en compte lors des tests de localisation : texte correctement traduit, devise, unités de mesure, caractères spéciaux autorisés, et formats de numéros de téléphone.
Test de compatibilité : Vérifie si l’application fonctionne correctement sur différents navigateurs, bases de données, matériels, systèmes d’exploitation, appareils mobiles et réseaux.
Test statique et test dynamique
Le test statique s’appuie sur l’examen manuel des livrables (c’est-à-dire des revues) ou sur une évaluation pilotée par outils du code (pensez aux revues de code) ou d'autres livrables (par exemple, analyse statique). Il peut être réalisé sur (mais n’est pas limité à) des spécifications, des exigences métier, des critères d’acceptation, du code source, des plans de test, des cas de test, des scripts de test et des guides utilisateur.
Le test dynamique consiste en l’exécution réelle du logiciel testé. Cela peut être fait de manière manuelle ou automatisée.
Test boîte blanche et boîte noire
Le test en boîte blanche est un type de test où le testeur a connaissance de la structure interne du code de l’application, tandis que le test en boîte noire est réalisé sans besoin de connaître le code source. Chacun de ces types de tests applique des techniques de test différentes, telles que le partitionnement d’équivalence, l’analyse des valeurs limites et la table de décision pour le test en boîte noire, et la couverture des instructions plus la couverture des décisions pour le test en boîte blanche.
Test exploratoire
Le test exploratoire est un type de test basé sur l’expérience. Il nécessite une planification minimale et une exécution maximale des tests.
Les activités de conception et d’exécution des tests sont réalisées en parallèle, généralement sans documentation formelle des conditions de test, des cas de test ou des scripts de test.
C’est une approche utile lorsqu’il n’existe pas ou peu de spécifications et que le temps est extrêmement limité, ou bien elle permet de compléter efficacement les tests automatisés.
Test de fumée
Le test de fumée, parfois appelé « Test de validation de la construction » ou « Test de confiance », est un processus de test logiciel dans lequel les testeurs vérifient si la version déployée est stable. Le test de fumée sert à valider que l’on peut procéder à des tests logiciels plus poussés. Il consiste en un nombre minimal de tests exécutés sur chaque version pour vérifier les fonctionnalités logicielles critiques.
Test de santé
Le test de santé est un type de test logiciel réalisé après la livraison d’une version logicielle contenant des modifications mineures du code ou des fonctionnalités afin de confirmer que les bugs ont été corrigés et qu’aucun nouveau problème n’a été introduit par ces changements. L’objectif est de confirmer que la fonctionnalité proposée fonctionne globalement comme prévu.
Test de régression
Le test de régression est un type de test logiciel qui consiste à retester des fonctionnalités existantes afin de valider qu’elles fonctionnent toujours correctement après des modifications ou des mises à jour de l’application. Le test de régression garantit que les nouveaux changements ou mises à jour n’ont pas affecté les fonctionnalités existantes de l’application.
Test de compatibilité
Les tests de compatibilité sont utilisés pour s’assurer que l’application fonctionne correctement sur différentes plates-formes, appareils et navigateurs. Ils vérifient que l’application logicielle est compatible avec divers environnements matériels et logiciels.

Niveaux de test
Les tests logiciels peuvent être classés en différents niveaux en fonction de leur portée et de leurs objectifs. Voici les niveaux de test les plus courants :
Test unitaire
Le test unitaire est le premier niveau de test et se concentre sur la vérification de composants ou d’unités de code individuels en isolation. Il vérifie que chaque unité de code fonctionne comme prévu et satisfait aux exigences spécifiées.
Test d’intégration
Le test d’intégration se concentre sur la vérification des interactions entre différents modules ou composants de l’application. Il s’assure que les modules fonctionnent ensemble comme prévu et répondent aux exigences spécifiées.
Test système
Le test système correspond au niveau de test durant lequel toute l’application logicielle est testée en tant que système complet. Il vérifie que l’application satisfait aux exigences spécifiées et fonctionne comme attendu dans différents scénarios.
Test d’acceptation utilisateur
Le test d’acceptation est un niveau de test dans lequel l’application logicielle est vérifiée du point de vue de l’utilisateur final. Il s’assure que l’application répond aux besoins et exigences de l’utilisateur et fonctionne comme prévu dans l’environnement utilisateur. Les deux types de tests d’acceptation les plus courants sont les tests alpha et bêta.
Chaque niveau de test est important et joue un rôle précis dans le processus de test logiciel. Les tests doivent être réalisés à chaque niveau afin de garantir que l’application atteint le niveau de qualité et de fonctionnalité souhaité, et fonctionne comme prévu dans divers scénarios.
Principes des tests logiciels
On distingue sept principaux principes de test, tels que définis par l’ISTQB :
- Les tests montrent la présence de défauts, non leur absence : Vous ne pouvez pas garantir qu’une application est exempte de défauts simplement parce qu’elle a été testée. Cependant, les tests augmentent la confiance dans le produit.
- Les tests exhaustifs sont impossibles : La plupart des applications sont extrêmement complexes, il est donc impossible de tout tester, notamment en raison du temps et des ressources limitées.
- Tester tôt : Plus les bogues et défauts sont découverts tôt dans le cycle de vie du développement logiciel, plus il est facile de les corriger. C’est là qu’Agile excelle, car les activités de test commencent très tôt.
- Les défauts se regroupent : Cela signifie que les zones où un défaut a été trouvé ont de fortes chances d’en contenir d’autres. Selon le principe de Pareto, 80 % des défauts se trouvent dans 20 % des fonctionnalités.
- Le paradoxe du pesticide : Exécuter sans arrêt les mêmes tests sans les adapter ne permettra probablement pas de trouver de nouveaux problèmes.
- Les tests dépendent du contexte : Les applications sont testées différemment selon leur contexte — par exemple, les tests d’une API diffèrent de ceux d’une interface utilisateur, et les tests d’applications web diffèrent de ceux des applications mobiles ou de bureau.
- L’illusion de l’absence d’erreurs : En bref, ce n’est pas parce que les défauts ont été trouvés et corrigés que le logiciel est utile pour ses utilisateurs.
Need expert help selecting the right Testing Software?
We’ve joined up with Crozdesk.com to give all our readers (yes, you!) access to Crozdesk’s software advisors. Just use the form below to share your needs, and they will contact you at no cost or commitment. You will then be matched and connected to a shortlist of vendors that best fit your company, and you can access exclusive software discounts!
Conclusion
Les tests logiciels forment un domaine très complexe, où de nombreux types de tests peuvent être menés. Il est important d’adapter votre stratégie de tests selon le contexte du produit logiciel à tester. Il existe d’innombrables ressources sur les tests logiciels, y compris des podcasts, livres et bien plus encore.
Si vous avez apprécié cet article, abonnez-vous à la newsletter du QA Lead pour être le premier informé de nouveaux articles sur le test et la qualité.
