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.
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.
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) :
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.
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" ».
Une manière de décrire des test cases est d'utiliser la syntaxe Gherkin :
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.
Quelle est la différence entre un use case et un test case ?