Quelques définitions à connaître avant de commencer à s'intéresser aux tests et à la recette

Cette page présente des concepts fondamentaux, comme la notion de use case ou de test case, qu'il est primordial de connaître avant même de s'intéresser aux tests et à la recette.

Avant de commencer à parler de qualité logicielle, de tests unitaires ou d'intégration, de tests fonctionnels ou technique, etc. il est primordial de connaître quelques concepts informatiques particulièrement fondamentaux, dont nous parlerons tout au long de ce cours.

Use case (cas d'utilisation)

La notion de use case (cas d'utilisation en français) est fondamentale en informatique.

Définition Un use case est la spécification d'une fonctionnalité, une action réalisée par un acteur (humain ou logiciel) et qui mène à un résultat.

L'utilisation des cas d'utilisation est très répandue en informatique, notamment pour l'écriture de spécifications fonctionnelles, pour la description de test cases, etc. UML fournit notamment un formalisme spécialement conçu pour décrire des cas d'utilisation : les diagrammes de cas d'utilisation.

UML use case : cas d'utilisation
Un exemple de cas d'utilisation, décrit en UML

Une autre manière de décrire un cas d'utilisation est de le spécifier à la façon d'une user-story, comme le préconisent certaines méthodes agiles (Scrum) :

AS A
Customer
I WANT TO
Be able to log into the site
SO THAT
I can use premium features.

L'ensemble des fonctionnalités d'un système informatique peut être décrit à l'aide de cas d'utilisation.

Test case (cas de test)

Définition Un test case est l'instanciation d'un use case dans un contexte défini.

Les test cases (cas de test) permettent de concrétiser un use case, sur des données concrètes, réelles. Par exemple, si on considère un cas d’utilisation « Log in », un cas de test pourrait être « Log in on landing page with username="Pascal" and password="My password" ».

Important Il n'y a pas de test case sans use case ! Un cas de test découle toujours d'un cas d'utilisation.

La syntaxe Gherkin

Une manière de décrire des test cases est d'utiliser la syntaxe Gherkin :

GIVEN
I browse the login page
WHEN
I fill the « User » field with my username
AND
I fill the « Password » field with my password
AND
I click on the « Submit » button
THEN
I access a welcome page where my name is mentionned.

Ce format a le mérite de forcer ses utilisateurs à identifier clairement des pré-requis au test (section GIVEN), de préciser les actions à réaliser (section WHEN) et enfin de préciser les résultats attendus (section THEN). Nous l'utiliserons tout au long du cours.

Testez vos connaissances

Quelle est la différence entre un use case et un test case ?
  • Il n'y en a pas, les deux servent à tester.
  • Un test case est une instance de use case, autrement dit un use case que l'on applique dans un contexte donné.
  • Les use cases sont forcément décrits en UML, ce qui n'est pas le cas des test cases.

La relation entre use case et test case est importante, et il faut bien la comprendre. Vous devez imaginer un test case comme l'instanciation (au sens programmation objet) d'un use case !

Pourquoi est-il fondamental d'écrire des cas d'utilisation ?
  • Les cas d'utilisation sont la base de toute documentation fonctionnelle.
  • Ce n'est pas fondamental d'écrire des cas d’utilisation.
  • Sans cas d'utilisation, il est incohérent d'écrire des cas de test : un cas de test découle forcément d'un cas d'utilisation.
  • Les cas d'utilisation ont plusieurs vocation : formaliser le besoin de l'utilisation, constituer une base documentaire fonctionnelle, permettre l'écriture de cas de tests…
Quel est l'intérêt de formaliser ses test cases avec un langage comme Gherkin ?
  • C'est un formalisme qui ressemble à UML, donc il facilite l'intégration.
  • Gherkin fournit un cadre de structuration des test cases.
  • Cela pousse les personnes qui écrivent des test cases à se concentrer sur les éléments importants (pré-requis, actions à réaliser, résultats attendus).