Webinaire en vedette : MISRA C++ 2023 : tout ce que vous devez savoir | Voir le séminaire

Comment rédiger des scénarios de test pour un logiciel: exemples et didacticiel

Portrait de William McMullin, architecte de solutions chez Parasoft
27 mai 2021
10 min lire

La rédaction de cas de test est primordiale pour le développement de logiciels. Les cas de test aident les testeurs de logiciels à comprendre les exigences et la portée de leur test. Lisez la suite pour apprendre à écrire des cas de test appropriés avec les outils de test automatisés de Parasoft.

Comment écrire des cas de test peut ne pas sembler être une partie si importante du développement. Mais pour qu'un testeur de logiciels puisse effectuer au mieux son travail, il a besoin d'un ensemble clair d'étapes à suivre et d'une définition claire de ce qui est testé.

Tout le monde de NASA et GE à sociétés au niveau de l'entreprise peuvent bénéficier d'équipes fonctionnant à leur meilleur. Ecrire d'excellents cas de test n'est qu'un moyen supplémentaire d'améliorer l'efficacité et l'efficience de l'équipe et Parasoft consiste à donner aux équipes les moyens de le faire.

Dans ce blog, nous couvrons les sujets suivants liés à la rédaction d'un cas de test:

  1. Qu'est-ce qu'un cas de test?
  2. Script de test vs scénario de test
  3. Différents types de cas de test
  4. Comment écrire des cas de test logiciel
  5. Format de cas de test standard
  6. Bonnes pratiques de rédaction de cas de test
  7. Suite de tests vs plan de test
  8. Outils d'écriture de cas de test
Découvrez comment vous pouvez créer des cas de test utiles et réutilisables pour faciliter les tests fonctionnels d'API grâce à l'automatisation des tests améliorée par l'IA.

Qu'est-ce qu'un scénario de test dans un logiciel?

Un scénario de test est exactement ce à quoi cela ressemble : un scénario de test mesurant la fonctionnalité à travers un ensemble d'actions ou de conditions pour vérifier le résultat attendu. Ils s'appliquent à n'importe quelle application logicielle, peuvent utiliser des tests manuels ou un test automatisé, et peut utiliser des outils de gestion de cas de test.

Un élément clé à retenir lors de l'écriture de cas de test est qu'ils sont destinés à tester une variable ou une tâche de base, par exemple si un code de réduction s'applique ou non au bon produit sur une page Web de commerce électronique. Cela permet à un testeur de logiciel plus de flexibilité dans la façon de tester le code et les fonctionnalités.

Optimisation des tests unitaires et de régression pour les systèmes embarqués

Script de test et scénario de test

La différence entre les cas de test et les scripts de test doit également être clarifiée. Un script de test est un programme court destiné à tester certaines fonctionnalités. Un cas de test est un document avec des étapes à suivre comme prévu à l'avance.

Considérez les cas de test comme un voyage méticuleusement planifié et les scripts de test ressemblent davantage à un voyage rapide à l'épicerie.

Graphique répertoriant différents types d'objectifs de cas de test: la colonne de gauche montre la fonctionnalité, l'unité, les performances, la base de données; la colonne de droite montre l'interface utilisateur, l'intégration, la sécurité, la convivialité

Différents types de cas de test

Les cas de test peuvent mesurer de nombreux aspects différents du code. Les étapes impliquées peuvent également être destinées à induire un résultat d'échec par opposition à un résultat attendu positif tel que lorsqu'un utilisateur entre le mauvais mot de passe sur un écran de connexion.

Voici quelques exemples de cas de test courants:

Tableau présentant des exemples de cas de test courants pour la fonctionnalité, la sécurité et la convivialité

Les cas de test peuvent être appliqués à n'importe quel nombre de fonctionnalités trouvées dans un logiciel donné. Certains des plus populaires incluent:

Un exemple de cas de test populaire

Les cas de test sont utiles dans une variété de scénarios logiciels. Tout, de la banque aux logiciels personnels, nécessite une application de cas de test. Par exemple, si l'objectif est de disposer de données sensibles chiffrées, le logiciel doit disposer de fonctionnalités qui fonctionnent comme prévu.

Mais les tests fonctionnels ne sont qu'un aspect de l'écriture d'un cas de test. Les tests logiciels doivent remettre en question tous les aspects du code, des performances à la compatibilité en passant par la sécurité. C'est pourquoi les logiciels de cryptage personnels doivent être testés de manière si approfondie, en particulier en ce qui concerne des choses comme les API Web.

infographie montrant deux personnes écrivant un cas de test au milieu du code et des images liées à l'ordinateur

Comment rédiger des cas de test de logiciels

L'écriture de cas de test varie en fonction de ce que le cas de test mesure ou teste. C'est également une situation où le partage des ressources de test entre les équipes de développement et de test peut accélérer les tests logiciels. Mais tout commence par savoir comment rédiger un cas de test de manière efficace et efficiente.

Les cas de test ont quelques parties intégrales qui devraient toujours être présentes dans les champs. Cependant, chaque cas de test peut être divisé en 8 étapes de base.

Étape 1: ID de cas de test

Les cas de test doivent tous porter des identifiants uniques pour les représenter. Dans la plupart des cas, suivre une convention pour cet ID de dénomination aide à l'organisation, à la clarté et à la compréhension.

Étape 2: Description du test

Cette description doit détailler quelle unité, caractéristique ou fonction est testée ou ce qui est vérifié.

Étape 3: Hypothèses et conditions préalables

Cela implique toutes les conditions à remplir avant l'exécution du scénario de test. Un exemple consisterait à exiger un compte Outlook valide pour une connexion.

Étape 4: Données de test

Cela concerne les variables et leurs valeurs dans le cas de test. Dans l'exemple d'une connexion par e-mail, il s'agirait du nom d'utilisateur et du mot de passe du compte.

Étape 5: Étapes à exécuter

Il doit s'agir d'étapes facilement répétables, exécutées du point de vue de l'utilisateur final. Par exemple, un scénario de test pour la connexion à un serveur de messagerie peut inclure les étapes suivantes:

  1. Ouvrez la page Web du serveur de messagerie.
  2. Saisissez votre nom d'utilisateur.
  3. Entrer le mot de passe.
  4. Cliquez sur le bouton «Entrée» ou «Connexion».

Étape 6: résultat attendu

Cela indique le résultat attendu après l'exécution de l'étape du scénario de test. En entrant les bonnes informations de connexion, le résultat attendu serait une connexion réussie.

Étape 7: Résultat réel et post-conditions

Par rapport au résultat attendu, nous pouvons déterminer le statut du cas de test. Dans le cas de la connexion par e-mail, l'utilisateur serait connecté avec succès ou non. La post-condition est ce qui se produit à la suite de l'exécution de l'étape, comme la redirection vers la boîte de réception de l'e-mail.

Étape 8: Succès / échec

La détermination de l'état de réussite / échec dépend de la façon dont le résultat attendu et le résultat réel se comparent.

Même résultat = Réussir
Différents résultats = échec

Accélérez les tests logiciels en partageant les ressources de test entre les équipes de développement et de test

Format de cas de test unitaire standard

Chaque partie d'un test unitaire bien écrit définira plusieurs aspects essentiels, notamment :

  1. Fonctions effectuées par le test
  2. Données utilisées dans le test
  3. Résultat attendu de l'exécution du test
  4. S'assurer que le test a été exécuté indépendamment des autres parties de la base de code

Il est important de savoir que le format standard des tests bien écrits est composé des parties suivantes:

  • Nom significatif de la méthode de test
  • Données contrôlées ou simulacres à utiliser pour les tests
  • Méthode ou unité sous test (la partie du code que nous testons)
  • Appliquer une assertion
  • Exécution du test unitaire de manière isolée

capture d'écran du code pour un cas de test unitaire bien écrit

Existe-t-il un modèle de scénario de test?

Comme mentionné, il existe un format de cas de test standard. Cependant, le modèle de cas de test varierait probablement d'une entreprise à l'autre et même d'une équipe à l'autre. Au lieu de cela, un modèle de scénario de test est le document avec une liste de scénarios de test et de scénarios de test ultérieurs.

Exemple de cas de test de qualité

Bien que les cas de test varient en fonction du type de test et du domaine global de test, la construction d'un cas de test de qualité se résume aux quelques éléments fiables ci-dessus. N'oubliez pas: le nom de la méthode de test doit inclure la méthode ou l'unité testée et quel est le résultat attendu.

Il convient également de noter que chaque unité doit être testée isolément. Dans ce cas, «isolement» signifie garder les tests ciblés autant que possible afin d'exécuter uniquement la partie de l'application que nous testons.

Cet exemple provient d'un cas de test lié à la banque:

Capture d'écran du code pour un cas de test bancaire

Avec ce nom de méthode, nous savons qu'il s'agit d'un test unitaire qui est:

  • Test de la méthode 'isOverDrawn ()'.
  • La balance utilisée pour les données contrôlées était de 500.
  • Le résultat attendu est vrai.

Un nom de méthode significatif permet à quiconque examine les résultats de comprendre ce que le test unitaire a testé. De plus, il signale les données à tester, le résultat attendu et ce qui a été testé.

Si le test échoue, il est essentiel de connaître le résultat attendu pour faciliter le dépannage et s'assurer qu'aucune régression n'est introduite.

Données de cas de test

Les données utilisées doivent être suffisantes pour exécuter le test. Pour les tests unitaires, nous voulons simplifier au maximum le test de l'unité la plus basique de notre application. Les données peuvent être aussi simples que de créer une chaîne ou une variable objet pour laquelle vous pouvez contrôler les données. Ou un framework fictif peut être utilisé pour le test si une dépendance n'est pas disponible ou si vous avez besoin que cette dépendance soit dans un état spécifique.

Avoir juste assez pour tester cette partie si cela est suffisant. Vous N'AVEZ PAS besoin de configurer chaque élément de l'application pour que le test s'exécute.

Tout cela affecte le comportement du test unitaire puisqu'il s'agit des données utilisées pour l'exécution du test unitaire. En tant que tel, cette partie des tests unitaires est la plus longue car elle nécessite une certaine compréhension du code que vous testez pour savoir quelles données utiliser pour les tests.

Restez simple en n'utilisant que les parties nécessaires au code testé. Les simulacres sont très utiles dans cette phase car ils vous permettent de contrôler le comportement des méthodes de ces objets lors de l'interaction avec votre test.

Par exemple, compte tenu des données suivantes:

Capture d'écran du code montrant comment contrôler le comportement des objets

Nous avons évité la «vraie classe de client» en utilisant une simulation pour la «classe de client» pour tester l'isolement. Nous ne voulons pas introduire ni configurer un autre objet pour ce test car il ajoute une autre couche de maintenabilité pour cet objet, et cela n'affecte pas le résultat de la méthode testée.

La variable suivante à créer est le «solde initial» - quelque chose de connu en raison de la connaissance du code. La ligne suivante montre l'objet Account en cours de création avec la maquette et le solde initial pour préparer la méthode que nous testons avec les données que nous venons d'utiliser.

Ainsi, dans cet exemple, l'objet compte est configuré avec le client fictif car nous ne nous soucions pas des données de l'objet client et nous avons passé un solde initial que nous pouvons contrôler pour notre test.

La ligne suivante définit l'entrée car la méthode testée nécessite l'utilisation d'un nombre. Nous avons défini le «solde» à utiliser dans la méthode que nous testons. Ensuite, la méthode est exécutée avec le résultat de la méthode stockée dans notre variable pour que nous puissions l'utiliser plus tard.

Appliquer une assertion

Une fois que le test peut se terminer avec succès (car il s'exécute du début à la fin sans exceptions ni erreurs), il est temps d'appliquer une assertion au test unitaire. Sans cette assertion, le test unitaire n'a pas de sens car il n'y a rien que vous appliquez pour vous assurer qu'il fonctionne comme prévu.

La collecte de la couverture de quelles lignes ont été exécutées indique ce qui a été exécuté, mais elle ne fournit pas suffisamment de détails pour déterminer ce qui suit:

  • Si le code se comporte comme prévu.
  • Si le code répond aux objectifs de qualité.
  • Si les données renvoyées sont les données attendues.

Une assertion peut être aussi basique que:

Capture d'écran du code montrant une assertion

Tant que le test unitaire contient une assertion qui vérifie la méthode sous le résultat du test, il s'agit d'un test unitaire significatif.

Capture d'écran du code pour un test unitaire significatif avec une assertion

En appliquant le format standard du test unitaire, une équipe peut facilement maintenir, lire et / ou mettre à jour les tests avec plus de facilité pour voir facilement où plus de tests peuvent être appliqués au reste de l'application.

infographie montrant une équipe au travail autour d'un méga grand écran. Guy à gauche sur smartphone, gars assis sur le dessus du moniteur travaillant sur un ordinateur portable, fille sur une échelle dessinant un diagramme à barres sur le moniteur avec un crayon surdimensionné, gars debout devant le moniteur parlant dans un mégaphone, fille à droite du moniteur prenant des notes.

Quelles sont les meilleures pratiques pour rédiger des scénarios de test de qualité?

La façon d'écrire des tests et des cas de test efficaces peut être rationalisée au fil du temps. Certains les meilleures pratiques inclure l'utilisation de titres forts, des descriptions fortes et le maintien d'un langage concis et clair.

Mais vous voudrez également inclure les conditions préalables, les hypothèses et les résultats attendus. Toutes ces informations sont pertinentes pour le testeur de logiciel - en particulier pour déterminer si le scénario de test doit être un «succès» ou un «échec» à la place.

Voici une aide-mémoire pour créer des cas de test qui fonctionnent bien:

  • Gardez les choses simples et transparentes.
  • Rendre les cas de test réutilisables.
  • Gardez les ID de cas de test uniques.
  • L’examen par les pairs est important.
  • Les cas de test doivent avoir à l'esprit l'utilisateur final ou les exigences définies.
  • Précisez les résultats attendus et les hypothèses.

Graphique montrant un plan de test comprenant les suites de tests A, B et C

Simple, unique, spécifique, ouvert aux commentaires et axé sur la réutilisabilité: c'est la voie d'un bon cas de test. Pour un aperçu plus visuel de la rédaction d'un cas de test de qualité, consultez le webinaire de Parasoft sur le sujet.

Suite de tests et plan de test

L'autre aspect d'un cas de test concerne les suites de tests et les plans de test. Celles-ci diffèrent sur des points essentiels et sont toutes deux essentielles pour un développement précis des cas de test.

Améliorer les tests unitaires pour Java avec l'automatisation

Qu'est-ce qu'une suite de tests?

Une suite de tests entre en jeu pour les cas de test en ce qui concerne le code source, la collection de dépendances ou la suite de tests à effectuer sur le code. Les suites de tests vous permettent de catégoriser les cas de test de manière à correspondre à tous les besoins d'analyse ou de planification.

Cela signifie que les fonctionnalités logicielles de base peuvent avoir leur propre suite de tests tandis qu'une autre suite de tests est destinée à un type de test spécifique tel que la fumée ou la sécurité. Considérez les suites de tests comme une bibliothèque sur laquelle organiser vos cas de test.

Qu'est-ce qu'un plan de test?

En revanche, un plan de test ressemble plus au parapluie qui couvre toutes les suites de tests. Si les scénarios de test sont des livres et les suites de tests sont des étagères, alors les plans de test sont la pièce qui contient l'étagère.

En règle générale, les plans de test sont mis en place en termes de tests manuels, de tests automatisés et d'un format général expliquant comment procéder aux tests. Ils testeront le logiciel de la base à l'aide de suites de tests et de cas de test avant d'implémenter des modifications ou d'ajouter de nouvelles fonctionnalités.

Infographie montrant un gars en chemise orange et pantalon noir assis et travaillant à un bureau avec un moniteur.

Meilleurs outils d'écriture de cas de test

Parasoft développe généralement ses outils et ses suites avec la théorie «George Jetson» à l'esprit. C'est-à-dire que nous voulons que nos clients puissent «appuyer sur un bouton» et que tout soit pris en charge. Bien que ce ne soit pas totalement réaliste, les outils axés sur l'automatisation sont les meilleurs à utiliser pour écrire des cas de test.

Non seulement ils peuvent aider à l'automatisation, mais ils peuvent également aider dès le début du développement. Après tout, il est trop facile de s'enliser dans de petits détails ou des fonctionnalités. On pourrait oublier que le logiciel doit simplement fonctionner en premier. C'est là qu'intervient un outil de test unitaire Java comme Parasoft Jtest.

Cet outil permet aux débutants et aux experts d'améliorer plus rapidement leurs compétences en tests unitaires, ainsi que l'expérience des tests unitaires. Après avoir établi une fondation, il exécute les tests unitaires puis guide l'utilisateur pour s'assurer que les tests sont significatifs. Lorsque vous pouvez comprendre le genre de choses à rechercher dans un test, la rédaction du cas de test devient moins intimidante.

Simplifiez les tests d'API et améliorez la qualité des logiciels. Découvrez l'automatisation des tests améliorée avec l'IA et le ML en action !

 

Article connexe + ressources