En quoi consiste le functional testing ?

Auteurs

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Présentation du unctional testing

Il s'agit d'une approche de test logiciel qui vérifie si les fonctionnalités d'une application fonctionnent comme prévu en fonction des exigences spécifiées.

En développement logiciel, il existe de nombreux types de tests logiciels. Chacun aborde la tâche selon une approche légèrement différente. Le functional testing correspond étroitement au concept d'expérience utilisateur et se concentre sur une question essentielle : les fonctionnalités du logiciel fonctionnent-elles comme prévu et conformément aux exigences spécifiées ?

La qualité des logiciels est souvent évaluée sous différents angles dans le cadre du cycle de vie de développement des logiciels. En ce qui concerne le functional testing, les testeurs doivent valider les fonctionnalités de base et confirmer que les fonctions du logiciel supportent adéquatement les exigences métier. L'exécution des tests permet aux équipes DevOps de comparer les résultats réels des tests avec les résultats attendus.

Les tests constituent une partie essentielle du processus de développement, et le functional testing offre aux équipes d'assurance qualité la possibilité d'effectuer une sorte de contrôle qualité en amont, leur donnant ainsi une vision claire du fonctionnement probable des workflows au moment de leur lancement officiel.

Les dernières actualités technologiques, étayées par des avis d’experts

Restez au fait des tendances les plus étonnantes du secteur dans le domaine de l’IA, de l’automatisation, des données et bien d’autres avec la newsletter Think. Consultez la Déclaration de confidentialité d’IBM.

Merci ! Vous êtes abonné(e).

Vous recevrez votre abonnement en anglais. Vous trouverez un lien de désabonnement dans chaque newsletter. Vous pouvez gérer vos abonnements ou vous désabonner ici. Consultez la Déclaration de confidentialité d’IBM pour plus d’informations.

Comment fonctionnent le functional testing ?

Différents éléments opérationnels sont mis en avant, en fonction du type de test logiciel utilisé dans le cadre de la stratégie globale de test. Le functional testing évalue la compatibilité globale entre différents modules logiciels, ce qui a une incidence directe sur d'autres aspects connexes, tels que les interactions attendues des utilisateurs et la viabilité de l'interface utilisateur.

L’environnement de test fourni par le functional testing est considéré comme un exemple de test boîte noire, dans lequel les testeurs n'ont pas accès aux rouages internes du système (comme c'est le cas dans le test boîte blanche), mais reçoivent plutôt un rapport « Réussite/Échec » indiquant si le système et ses pipelines fonctionnent comme prévu.

Les six étapes du functional testing

Le functional testing suit généralement un processus de test comportant six étapes :

  1. Identifier les différentes fonctions que le logiciel doit exécuter.
  2. Créer des données d'entrée en fonction des exigences fonctionnelles.
  3. Établir les résultats attendus selon les spécifications fonctionnelles.
  4. Réaliser des cas de test.
  5. Évaluer la correspondance entre les résultats réels et les résultats attendus.
  6. Déterminer si l’application logicielle fonctionne de manière satisfaisante en fonction des attentes.
Développement d’applications

Rejoignez-nous : développement d’applications d’entreprise dans le cloud

Dans cette vidéo, Dr Peter Haumer explique à quoi ressemble actuellement le développement d’applications d’entreprise modernes dans le cloud hybride en présentant divers composants et différentes pratiques, notamment IBM Z Open Editor, IBM Wazi et Zowe. 

Types de functional testing

Tout comme il existe différents modèles de tests de logiciels, il existe différents types de functional testing. Ils sont nombreux, et ceci est une liste non exhaustive. Les types de functional testing couvrent un large éventail de nuances et sont répertoriés ici par ordre alphabétique.

Tests ad hoc

Dans le domaine des tests logiciels, les testeurs suivent généralement le processus de test formel avec des tests ad hoc. Cette forme informelle de test exploratoire est entièrement guidée par les compétences et l'intuition des testeurs. Il n'y a pas de structure définie. Ce sont plutôt les instincts des testeurs qui déterminent les techniques de test utilisées.

Exemple : le « buddy testing », dans lequel un développeur et un testeur collaborent pour améliorer un module ou une application. Dans ce type de test ad hoc, le testeur découvre généralement les bugs ou autres problèmes à corriger, tandis que le développeur se concentre sur ces correctifs.

Tests API

Les interfaces de programmation d'applications (API) permettent de développer des logiciels et de connecter différentes applications ou systèmes. Les tests d'API garantissent que les points de connexion API fonctionnent comme il se doit. Ils fournissent également une supervision concernant les autorisations des utilisateurs et la manière dont les données sont gérées via les API.

Exemple : on parle de « test sans interface » lorsqu'il n'y a pas d'interface utilisateur ou de champ de saisie de données dans l'interface utilisateur. Dans de telles situations, les données saisies partagées avec un service ou une application interfacé(e) peuvent souvent être testées de manière optimale grâce à des tests API.

Scénarios de test complexes

De nombreuses organisations souhaitent que leur processus de test reflète fidèlement l'expérience réelle des utilisateurs. Pour ces entreprises, les scénarios de test complexes offrent le niveau de précision souhaité, bien qu'il faille souligner qu'une plus grande complexité nécessite plus de travail en amont pour l'exécuter.

Exemple : le traitement des commandes en ligne peut sembler être une opération simple. Cependant, en coulisses, de nombreux processus doivent être testés, tels que la facilité avec laquelle les articles peuvent être ajoutés au panier d'un acheteur, la rapidité avec laquelle des fonctions telles que l'application de remises sont intégrées et la fluidité avec laquelle ces achats peuvent être effectués.

Tests d’intégration

L'Integration testing est souvent effectué en même temps que le test unitaire en raison de ses avantages, tels que la détection précoce des problèmes et une couverture de test plus large. En plus de faciliter la correspondance des formats de données, il fournit des informations sur le fonctionnement et la performance des microservices.

Exemple : supposons qu'un système de gestion des commandes soit intégré à un module qui gère le traitement des paiements. L'intégration testing permet d'identifier les éventuels dysfonctionnements futurs entre les deux entités et fournit aux développeurs un plan d'action pour résoudre les problèmes d'intégration plus rapidement et à moindre coût.

Tests de régression

Dans un monde idéal, lorsqu'un test fonctionnel réussit, cela devrait toujours être le cas. Cependant, cela ne correspond pas à la réalité, où les logiciels sont souvent affectés par des développeurs qui peuvent, sans le savoir, introduire des erreurs avec de nouvelles modifications du code. Les tests de régression garantissent qu’une base de base stable est assurée.

Exemple : chaque fois que des modifications sont apportées au code, une forme ou une autre de test de régression est utilisée. Cela inclut toutes les mises à jour connexes, comme celles qui sont effectuées à la suite des correctifs, de l'introduction d'une nouvelle fonctionnalité ou d'une mise à jour logicielle.

Test de santé

Le test de cohérence est une méthode rapide et agile permettant de vérifier que les fonctionnalités existantes n'ont pas été altérées par l'ajout de modifications relativement mineures ou de corrections de bogues. Les tests d'intégrité sont généralement utilisés pour vérifier rapidement que les nouvelles fonctionnalités ne modifient pas les autres fonctionnalités du système.

Exemple : tout comme les tests de régression, les tests de cohérence vous permettent de « revenir en arrière » vers les fonctionnalités précédentes du système afin de vérifier les améliorations apportées aux performances, de confirmer le fonctionnement de base et de vous assurer que le système fonctionne comme prévu. Chaque fois que le code temporel est modifié, une forme de test de régression ou une autre est utilisée. Cela inclut toutes les mises à jour connexes, comme celles qui sont effectuées à la suite des correctifs, de l'introduction d'une nouvelle fonctionnalité ou d'une mise à jour logicielle.

Test de fumée

Le vieil adage dit que « il n'y a pas de fumée sans feu ». Ce proverbe semble avoir inspiré le nom « smoke testing » (test de fumée). Les tests de fumée sont effectués au début du processus de développement et, lorsqu’ils sont effectués, ils évaluent les fonctionnalités de bout en bout. Si la fonctionnalité échoue, les équipes QA apportent les corrections nécessaires.

Exemple : les tests de fumée peuvent être utilisés pour vérifier l'intégration continue et les pipelines continus en tant que contrôle final avant le déploiement de nouvelles versions logicielles (ou de modifications majeures du code).

Tests système

Parfois appelé test de bout en bout, le test système permet d'évaluer le fonctionnement global d'un système logiciel dans son ensemble. Il implique souvent l'analyse de plusieurs systèmes logiciels distincts qui peuvent ou non fonctionner à l'unisson au sein d'un système logiciel particulier.

Exemple : les scénarios de bout en bout permettent aux testeurs d’évaluer des workflows complets. Pour les opérations de vente au détail en ligne, cela pourrait englober l'ensemble de l'expérience d'achat vécue par le consommateur, depuis la commande initiale jusqu'à l'exécution complète de celle-ci.

Test unitaire

Les tests unitaires sont une forme de test dans un microcosme. Ici, nous ne testons pas un système complet, mais seulement une partie limitée du code. Une section de code est évaluée dans un environnement de test isolé, et si le test unitaire échoue (sur la base d'une comparaison entre les données de test et les objectifs fonctionnels), des tests supplémentaires peuvent être effectués à l'échelle du système.

Exemple : les éléments informatiques relativement basiques sont testés de manière efficace via des tests unitaires. Considérons une fonction simple qui convertit les températures Celsius en leurs équivalents Fahrenheit. L'environnement de test contient le code en question et les cas de test concernés.

Tests d’acceptation utilisateur

En tant qu'étape ultérieure des tests logiciels, les tests d'acceptation par les utilisateurs visent à intégrer et à tirer des enseignements des tests de performance réalisés par des personnes représentant le public cible du logiciel en cours de développement. Ces utilisateurs finaux apportent plus de réalisme au processus de test.

Exemple : un utilisateur d'un forfait logiciel passe au niveau de service supérieur, ce qui lui permet de débloquer de toutes nouvelles fonctionnalités. Les tests d'acceptation par les utilisateurs permettent de vérifier que ceux-ci pourront constater une augmentation de leur accès aux fonctionnalités, comme prévu.

Functional testing et non-functional testing

Comme son nom l'indique, le non-fuctional testing évalue les comportements d'une application qui ne sont généralement pas considérés comme essentiels pour garantir sa fonctionnalité. Néanmoins, offrir une expérience utilisateur bien organisée et intuitive est désormais considéré comme un élément essentiel du développement de logiciels. Ils peuvent révéler des problèmes potentiels sur le système, en particulier lorsque le logiciel est exploité à son maximum pour démontrer une plus grande évolutivité.

Tests de charge

Le test de charge est une forme essentielle de non-functional testing. En théorie, un système doit être capable de traiter des milliers de requêtes avec le même sentiment d’urgence que s’il transmet une seule requête. Cependant, cette logique n'est pas étayée par une expérience réaliste. Les tests de charge permettent de voir si les systèmes peuvent gérer des charges maximales et même des pics de workload extrêmes.

Tests de performance

Une autre forme de non-functional testing accorde une attention particulière à la performance. Il est critique pour la performance qu’un système réponde aux requêtes de manière fluide et rapide. La méthode de test dans le cadre des tests de performance évalue le temps d'attente des utilisateurs pour le traitement de leurs requêtes. Lorsqu'ils sont conçus de manière réfléchie, les tests de performance peuvent contribuer à minimiser la latence dès le début.

Tests de sécurité

Compte tenu de l'importance de la sécurité des données, il n'est pas surprenant qu'un type de test soit spécifiquement dédié à cette cause très actuelle. Les méthodologies de test de sécurité telles que le Dynamic Application Security Testing (DAST) et le Static Application Security Testing (SAST) aident les testeurs à détecter des vulnérabilités de sécurité. Les méthodes de test de sécurité de l’entreprise sont sélectionnées en fonction des menaces potentielles.

Tests d'utilisabilité

Un type de non-functional testing concerne entièrement la qualité de l'expérience utilisateur (UX). Le test d'utilisabilité est un processus de test manuel qu’il est préférable d’utiliser à petite échelle. Néanmoins, il convient de l'appliquer dans la mesure du possible, en particulier lors de l'exécution d'opérations telles que la localisation d'applications, qui peuvent s'avérer risquées en raison de leur complexité susceptible d'entraîner des erreurs humaines.

Outils de functional testing

Garder une trace précise de tous les outils de functional testing peut demander du travail, car la plupart d'entre eux prennent en charge différentes plateformes et différents types d'applications. Bien qu'il soit impossible de suivre le rythme effréné de ce marché en pleine expansion (on estime que plusieurs centaines, voire plusieurs milliers d'outils de functional testing ont été développés), voici quelques-uns qui se distinguent par leur popularité avérée et leur utilité reconnue.

  • Appium : la marketplace du functional testing compte de nombreux outils open source, parmi lesquels Appium occupe une position de leader. Appium prend en charge plusieurs langages de programmation. De plus, Appium vous permet d'automatiser les applications natives, mobile et Web et hybrides pour les plateformes iOS et Android.
  • Katalon Studio : la plateforme d'automatisation des tests Katalon Studio permet d'établir et d'évaluer les résultats générés par les tests de régression et les tests de bout en bout. Elle est dotée d'une fonction d'enregistrement et de lecture, ainsi que d'une coordination multiplateforme.
  • Micro Focus Unified Functional Testing (UFT) : l'UFT de Micro Focus est un autre outil de test commercial, celui-ci offrant aux testeurs une fenêtre claire et multiplateforme sur l'utilisation des services Web, des interfaces de programmation d'application et des interfaces utilisateur graphiques (GUI).
  • Playwright : Microsoft a développé ce cadre commercial pour l'automatisation des navigateurs Web. Il est connu pour renforcer sa fiabilité. Et bien que Playwright prenne en charge les fonctionnalités web contemporaines, il offre moins d'options pour traiter les langages de programmation.
  • Selenium: l'un des outils d'automatisation des tests les plus populaires est Selenium, un cadre open source. Cet outil basé sur un navigateur permet aux testeurs de rédiger et d'évaluer des scripts de test dans divers langages de programmation courants, notamment JavaScriptTM, NodeJS et Python.
Solutions connexes
IBM Enterprise Application Service for Java

Service entièrement géré et à locataire unique pour le développement et la livraison d’applications Java.

Découvrir les applications Java
Solutions DevOps

Utilisez les logiciels et outils DevOps pour créer, déployer et gérer des applications cloud natives sur de nombreux appareils et environnements.

Découvrir les solutions DevOps
Services de développement d’applications d’entreprise

Le développement d’applications cloud implique de les créer une fois, de les itérer rapidement et de les déployer n’importe où.

Services de développement d’applications
Passez à l’étape suivante

Les services de conseil en développement d’applications IBM Cloud proposent des conseils d’expert et des solutions innovantes pour rationaliser votre stratégie cloud. Faites équipe avec les experts en cloud et développement d’IBM pour moderniser, faire évoluer et accélérer vos applications, et obtenez des résultats transformateurs pour votre entreprise.

Découvrir les services de développement d’applications Commencez à créer sur IBM Cloud, gratuitement