Skip to main content

L’assurance qualité gagne en popularité. Les experts estiment que les emplois dans le domaine des tests aux États-Unis uniquement augmenteront de 25 % au cours de la prochaine décennie. Si cela vous intéresse, vous vous demandez peut-être par où commencer pour vous former aux tests logiciels.

Dans cet article, je répondrai aux questions qui vous aideront à vous lancer dans les tests logiciels. J’examinerai ce que sont les tests logiciels, les concepts de test les plus importants ainsi que quelques outils de test logiciel à prendre en considération. 

Les tests logiciels expliqués

Le processus constitué de toutes les activités du cycle de vie, statiques et dynamiques, qui concernent la planification, la préparation et l’évaluation d’un composant ou d’un système ainsi que des produits de travail associés, afin de déterminer qu’ils satisfont aux exigences spécifiées, de démontrer qu’ils sont adaptés à leur usage 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 logiciel, car ils valident que l’application logicielle fonctionne comme prévu et répond aux exigences et aux attentes de ses utilisateurs finaux.

Continue Reading for Free

Create a free account to finish this article, plus get ongoing access to timely insights and practical resources.

L’objectif est d’identifier les défauts, les erreurs et les incohérences de l’application logicielle avant sa mise à la disposition du public. Les tests consistent à exécuter le logiciel dans différentes conditions, configurations et scénarios afin de s’assurer qu’il fonctionne correctement et efficacement.

Si vous êtes curieux de savoir comment débuter dans le domaine des tests logiciels, voici une liste de questions d’entretien courantes en assurance qualité (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 de logiciels pour s’assurer que l’application testée respecte les normes et les exigences de qualité spécifiées. Le STLC comprend généralement plusieurs phases destinées à garantir que l’application logicielle est testée de manière exhaustive et atteint le niveau de qualité souhaité avant sa mise à la disposition des utilisateurs finaux. Voici les phases du cycle de vie des tests logiciels :

Analyse des exigences

Au cours de cette phase, les testeurs de logiciels analysent les exigences et les spécifications. Ils identifient les exigences fonctionnelles et non fonctionnelles, comprennent l’objectif de l’application logicielle et son public cible, puis élaborent les cas de test et les scénarios correspondants.

Planification des tests

Au cours de cette phase, l’équipe de test identifie la portée des tests, l’approche de test et les ressources nécessaires aux tests. Le plan de test identifie également les risques et les contraintes associés au processus de test et définit le calendrier des tests.

Conception des tests

Au cours de cette phase, l’équipe de test conçoit les cas de test et les scénarios en fonction des exigences et des spécifications. Elle identifie également les données de test nécessaires aux tests et élabore des scripts de test qui automatisent le processus de test.

Exécution des tests

Les testeurs exécutent les cas de test et les scénarios conçus lors de la phase précédente. Les résultats des tests sont documentés et tout défaut ou toute erreur trouvé dans l’application logicielle est signalé.

Améliorez votre boîte de réception avec plus de conseils en leadership technologique pour livrer de meilleurs logiciels et systèmes.

Rapport de test

Au cours de cette phase, l’équipe de test prépare un rapport présentant les résultats des tests et les défauts identifiés pendant les tests. Le rapport peut inclure ses recommandations pour corriger les défauts et améliorer la qualité globale de l’application logicielle.

Clôture des tests

Il s’agit de la dernière phase, au cours de laquelle l’équipe de test évalue le processus de test et identifie les domaines à améliorer. Elle prépare également un rapport de clôture des tests qui résume le processus de test et les résultats des tests.

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 logicielle atteint le niveau de qualité et de fonctionnalité souhaité.

Types de tests logiciels 

Il existe différents types de tests logiciels utilisés par les équipes d’assurance qualité, selon le contexte et les exigences du projet.

Nous pouvons distinguer les tests manuels des tests automatisés, selon la manière dont les tests sont exécutés. En fonction de ce qui est testé, nous pouvons différencier les tests fonctionnels des tests non fonctionnels. Selon les méthodes utilisées, nous avons les tests statiques et dynamiques. En fonction de l’approche, nous pouvons identifier les types de tests en boîte blanche et en boîte noire. Nous avons également les tests exploratoires, les tests de fumée et de vérification rapide, ainsi que les tests de régression. Tous ces types de tests peuvent se chevaucher, selon la manière dont ils sont utilisés. 

Tests manuels

Dans le cadre des tests manuels, les tests sont effectués par une personne, sans utiliser d’outils ou de scripts automatisés. Ils peuvent être davantage sujets aux erreurs et prennent généralement plus de temps. 

Tests automatisés

Les tests automatisés sont effectués par une machine qui exécute des scripts rédigés à l’avance. Ils nécessitent davantage d’expertise technique, par exemple la connaissance d’un langage de programmation et d’outils d’automatisation tels que Selenium. Ils peuvent être plus coûteux que les tests manuels, et certains aspects du processus de test ne peuvent pas être automatisés.

Tests fonctionnels

Les tests fonctionnels consistent à vérifier ce que fait l’application. Ils vérifient les fonctionnalités et les capacités de l’application logicielle et s’assurent qu’elles répondent aux exigences et aux spécifications.

Tests non fonctionnels

Contrairement aux tests fonctionnels, les tests non fonctionnels se concentrent 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 présenterai que quelques-uns dans cet article. 

Tests de performance : mesurent le temps de réponse, le débit et la capacité de mise à l’échelle de l’application logicielle dans différentes conditions de charge. Ils vérifient la capacité de l’application logicielle à gérer simultanément plusieurs utilisateurs et transactions, et à fonctionner efficacement dans des conditions de charge maximale.

Tests de charge : simulent des charges d’utilisateurs réelles et sont effectués afin de déterminer le comportement d’un système dans des conditions normales et maximales. Ils servent à déterminer si l’infrastructure utilisée pour héberger l’application est suffisante et indiquent combien d’utilisateurs simultanés l’application peut gérer, ainsi que l’ampleur de l’application requise en matière de matériel, de capacité réseau, etc., afin que davantage d’utilisateurs puissent accéder à l’application.

Tests de résistance : consistent à tester le système au-delà de sa capacité normale, souvent jusqu’à un point de rupture, afin d’observer les résultats. L’objectif est de s’assurer que le logiciel ne se bloque pas lorsque les ressources informatiques sont insuffisantes (telles que la mémoire, l’espace disque, les requêtes réseau, etc.).

Tests de sécurité : garantissent que l’application logicielle est sécurisée et protégée contre les accès non autorisés. Les tests de sécurité recherchent les vulnérabilités et les faiblesses dans les protocoles de sécurité de l’application logicielle et identifient les menaces potentielles pour la sécurité.

Tests d’utilisabilité : servent à évaluer si l’application est facile à utiliser. Ils vérifient avec quelle facilité les utilisateurs peuvent naviguer dans l’application logicielle et exécuter efficacement les fonctions prévues.

Tests d’accessibilité : considérés comme un sous-ensemble des tests d’utilisabilité, les tests d’accessibilité sont effectués afin de garantir que l’application testée peut être utilisée par les personnes en situation de handicap.

Tests de localisation : type de test logiciel au cours duquel le comportement du logiciel est testé pour une région, une zone géographique ou une culture spécifique. Voici 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 des numéros de téléphone

Tests de compatibilité : vérifient si l’application est suffisamment performante pour fonctionner avec différents navigateurs, bases de données, matériels, systèmes d’exploitation, appareils mobiles et réseaux

Tests statiques et tests dynamiques

Les tests statiques reposent sur l’examen manuel des produits du travail (c’est-à-dire les révisions) ou sur l’évaluation du code effectuée par un outil (par exemple, les revues de code) ou d’autres produits du travail (c’est-à-dire l’analyse statique). Ils peuvent être effectués sur, entre autres, les spécifications, les exigences métier, les critères d’acceptation, le code source, les plans de test, les cas de test, les scripts de test et les guides utilisateur. 

Les tests dynamiques correspondent à l’exécution réelle du logiciel testé. Ils peuvent être manuels ou automatisés, ou

Tests en boîte blanche et tests en boîte noire 

Les tests en boîte blanche sont un type de test dans lequel le testeur connaît la structure interne du code de l’application, tandis que les tests en boîte noire sont réalisés sans qu’il soit nécessaire de comprendre le code source. Chacun de ces types de test applique des techniques de test différentes, telles que le partitionnement en classes d’équivalence, l’analyse des valeurs limites et la table de décision pour les tests en boîte noire, ainsi que la couverture des instructions et la couverture des décisions pour les tests en boîte blanche.

Tests exploratoires

Les tests exploratoires sont un type de test fondé sur l’expérience. Ils impliquent une planification minimale et une exécution maximale des tests. 

Les activités de conception et d’exécution des tests sont menées en parallèle, généralement sans documenter officiellement les conditions de test, les cas de test ou les scripts de test.

Il s’agit d’une approche utile lorsque les spécifications sont inexistantes ou insuffisantes et que le temps est extrêmement limité, ou elle peut être utilisée efficacement en complément des tests automatisés.

Tests de fumée 

Les tests de fumée, parfois appelés « tests de vérification de la compilation » ou « tests de confiance »,  sont un processus de test logiciel au cours duquel les testeurs vérifient si la version déployée est stable. Les tests de fumée permettent de valider que nous pouvons poursuivre les tests logiciels. Ils consistent en un nombre minimal de tests exécutés sur chaque version afin de tester les fonctionnalités logicielles critiques. 

Tests de cohérence

Les tests de cohérence sont un type de test logiciel effectué après la livraison d’une version logicielle comportant des modifications mineures du code ou des fonctionnalités, afin de confirmer que les bogues ont été résolus 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.

Tests de régression

Les tests de régression sont un type de test logiciel au cours duquel nous retestons les fonctionnalités existantes afin de vérifier qu’elles fonctionnent toujours correctement après toute modification ou mise à jour de l’application logicielle. Les tests de régression garantissent que les nouvelles modifications ou mises à jour n’ont pas affecté les fonctionnalités existantes de l’application logicielle.

Tests de compatibilité

Les tests de compatibilité servent à garantir que l’application logicielle fonctionne correctement sur différentes plateformes, différents appareils et différents navigateurs. Ils vérifient que l’application logicielle est compatible avec diverses configurations matérielles et logicielles.

Image générée par IA de robots travaillant sur une chaîne d’assemblage pour illustrer le fonctionnement des tests logiciels.

Niveaux de test

Les tests logiciels peuvent être classés en différents niveaux selon la portée et les objectifs des tests. Voici les niveaux courants des tests logiciels :

Tests unitaires

Les tests unitaires constituent le premier niveau de test et se concentrent sur le test de composants individuels ou d’unités de code isolés. Les tests unitaires vérifient que chaque unité de code fonctionne comme prévu et répond aux exigences spécifiées.

Tests d’intégration

Les tests d’intégration se concentrent sur le test des interactions entre les différents modules ou composants de l’application logicielle. Les tests d’intégration vérifient que les modules ou composants fonctionnent ensemble comme prévu et répondent aux exigences spécifiées.

Tests système

Les tests système constituent le niveau de test auquel l’ensemble de l’application logicielle est testé comme un système complet. Les tests système vérifient que l’application logicielle répond aux exigences spécifiées et fonctionne comme prévu dans divers scénarios.

Tests d’acceptation utilisateur

Les tests d’acceptation constituent le niveau de test auquel l’application logicielle est testée du point de vue de l’utilisateur final. Les tests d’acceptation vérifient que l’application logicielle répond aux besoins et aux exigences de l’utilisateur final et fonctionne comme prévu dans l’environnement utilisateur. Les types courants de tests d’acceptation utilisateur sont les tests alpha et les tests bêta.

Chaque niveau de test est important et remplit un objectif spécifique dans le processus de test logiciel. Des tests doivent être effectués à chaque niveau afin de garantir que l’application logicielle atteint le niveau de qualité et de fonctionnalité souhaité et fonctionne comme prévu dans divers scénarios. 

Principes des tests logiciels

Il existe sept grands principes de test, tels qu’ils sont définis par l’ISTQB :

  1. Les tests montrent la présence de défauts, et 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, après les tests, la confiance dans le produit peut augmenter.
  2. Les tests exhaustifs sont impossibles : la plupart des applications sont incroyablement complexes, de sorte qu’il est impossible de tester chaque combinaison et variation possible, d’autant plus que le temps et les ressources consacrés aux tests sont également limités.
  3. Tester tôt : plus les bogues et les défauts sont découverts tôt au cours du cycle de vie du développement logiciel, plus il est facile de les corriger. C’est là que l’approche Agile est pertinente, puisque les activités de test commencent très tôt.
  4. Les défauts se regroupent : cela signifie que les zones dans lesquelles des défauts ont été trouvés sont très susceptibles d’en contenir encore davantage. Selon le principe de Pareto, 80 % des défauts peuvent être trouvés dans 20 % des fonctionnalités.
  5. Le paradoxe des pesticides : exécuter les mêmes tests de manière répétée sans les mettre à jour ne permettra probablement pas de découvrir de nouveaux problèmes. 
  6. Les tests dépendent du contexte : les applications sont testées différemment selon leur contexte : par exemple, une API ne se teste pas de la même manière qu’une interface utilisateur, et les applications web ne se testent pas comme les applications mobiles ou de bureau.  
  7. Le sophisme de l’absence d’erreurs : en résumé, le fait d’avoir trouvé et corrigé les défauts ne signifie pas que le logiciel est utile à ses utilisateurs.

Conclusion

Les tests logiciels constituent un domaine très complexe, et de nombreux types de tests peuvent être réalisés. Il est important d’adapter votre stratégie de test au contexte du produit logiciel testé. Il existe une multitude de ressources consacrées aux tests logiciels, notamment des podcasts, des livres et bien plus encore.

Si vous avez apprécié cet article, veuillez vous abonner à la newsletter du responsable QA afin d’être parmi les premiers informés des nouveaux articles consacrés aux tests et à la qualité.

Andreea Draniceanu

Bonjour ! Je m'appelle Andreea, je suis ingénieure en tests logiciels basée en Roumanie. Je travaille dans l'industrie du logiciel depuis plus de 10 ans. Actuellement, mon principal domaine d'expertise est l'automatisation des tests d’interface utilisateur avec C#, mais j'adore explorer tous les aspects liés à l’assurance qualité 😊