Mis à jour le 22/04/2025
Cédric BRASSEUR
Introduction : Importances des tests en entreprise
Fonctionnement et cible des tests
Les différents types de tests
Méthodologies de tests
Contenu et rédaction d'un cahier de recettes
T&R
Importance des tests et enjeux pour l'entreprise
Un test est un morceau de code écrit afin de tester un élément ou un ensemble d'éléments de votre code projet.
Ces derniers ont pour vocations d'êtres automatisés !
La recette est l'ensemble comprenant : La définition du test, les étapes à réaliser, le résultat attendu et la validation par un recetteur.
Une recette peut également être automatisée.
Tester, c'est s'assurer que l'on n'a pas raté quelque chose, mais c'est surtout s'assurer que tout fonctionne comme prévu pour l'intégralité de votre projet.
Primordial !
En plus, vous le faites
pour chaque projet, même manuellement
L'objectif premier de réaliser des tests sur son application est de limité d'envoyer des erreurs en production.
On va donc tester les développements réalisés à chaque changement et surtout avant chaque mise en production, ce qui rend l'application plus robuste mais ne la rend pas infaillible.
Déboguer, c'est réaliser des tests manuellement qui ne pourront plus êtres réexécutés à l'avenir... Quelle dommage !
D E B U G
Attention aux coûts de ces différents tests !
La pyramide des tests, définie par Martin Flower, explique le rapport en coûts et rapidité de développement selon la couverture des tests mis en place.
Peu de mise en place
nécessaire et tout développeur sait réaliser ce genre de tests
Peu de mise en place
nécessaire et tout développeur sait réaliser ce genre de tests
Peu de mise en place
nécessaire et tout développeur sait réaliser ce genre de tests
Mise en place d'outils et de communication entre les services nécessaire
Peu de mise en place
nécessaire et tout développeur sait réaliser ce genre de tests
Toute une architecture à
mettre en place, nécessite une infrastructure particulière
Les tests automatisés par la CI / CD permettent d'assurer une fiabilité de ce qui est produit
Le produit est testé en permanence, on s'assure donc qu'aucun développeur n'apporte de régression.
Même sur les fonctionnalités qu'il ne pensait pas impacter !
Et c'est surtout ce point qui vous permettra de justifier auprès des décideurs le coût élevé vu précédemment.
Investir sur les tests c'est investir sur un produit fiable, robuste et aisément maintenable.
MOA : Maîtrise d'ouvrage
A pour objectif de rédiger le cahier des charges fonctionnel, préciser le besoin, piloter le projet et parfois pour effectuer la recette fonctionnelle (si elle n'est pas automatisée à 100%)
MOE : Maîtrise d'oeuvre
Responsable de la conception technique et s'assure de la mise en place des tests, leur taux de couverture, ainsi que de leur automatisation.
C'est vous !
Testeurs & clients
Les testeurs, souvent associés à la MOA, ont fréquemment pour objectif de réaliser le cahier de recettes, contenant les scénarios fonctionnels à tester pour le bon fonctionnement de l'application (nous en reparlerons)
Aujourd'hui, ils sont souvent plus sollicités en début de projet uniquement pour bien définir les users stories qui feront offices de cas de tests et donc de cahier de recette. Car les recettes sont automatisées via des méthodologies de tests comme le BDD
(nous en reparlerons aussi)
Les clients finaux, quand à eux vont tester le produit final et s'assurer qu'il répond bien aux attentes du produit. Ils utilisent idéalement un cahier de recettes pour leurs feedbacks.
Dans l'idéal, il est demandé de viser 100% de couverture de tests, rien ne doit être laissé "au hasard". Bien que difficile en pratique, des méthodologie permettent de s'en approcher.
Chaque brique logicielle composant votre projet doit être testé unitairement.
Vous devez également tester fonctionnellement vos projets.
Idéalement, vous devez également réaliser des tests d'interfaces (et / ou d'acceptation) et des tests de montée en charges.
Le but étant de rendre notre application fiable, robuste, performante, maintenable et évolutive dans le temps.
Rien que ça !
Développement de tests
Un test se déroule selon plusieurs étapes...
Exécution des tests
Validation / Invalidation par ensemble
Points de contrôle avant déploiement
Mise à jour du cahier de recettes
Pour choisir quels outils utilisés pour réaliser nos tests, il faut une fois de plus se référer à la technologie et le contexte du projet.
Quelques exemples... (Mais il y'en a trop)
Je vous invite à chercher ceux qui peuvent correspondre à vos technologies habituelles ou d'entreprise.
Il existe de nombreux tests différents, en voici les principaux et ceux que l'on va voir ensemble
Autres types de tests : Tests de montée en charge, tests d'exploitabilité, vérification de disponibilité immédiate…
Un test unitaire est utilisé afin de pouvoir vérifier atomiquement que chaque élément de notre code. On va donc vérifier que le code produit bien le résultat attendu.
A savoir :
MSTest est un framework de tests que l'on va utiliser tout au long de notre formation.
Les choses à savoir :
MSTest est un framework de tests que l'on va utiliser tout au long de notre formation. Au cas où voici la liste des attributs MsTests :
Il est également possible de réaliser des assertions, visant à vérifier qu'un contenu correspond à ce qui est attendu, quelque soit la comparaison effectuée.
Exemples :
Si besoin de plus d'informations sur la réalisation de tests MSTest, visitez :
https://docs.microsoft.com/fr-fr/dotnet/core/testing/unit-testing-with-mstest
Lors de vos développements, vous allez certainement gérer ou créer des exceptions. Ces exceptions doivent également être testées afin de vous assurer de leur utilité.
Utilisation de Assert.ThrowException
Utilisation de Assert.ThrowsException
Délégué pour appeler la méthode qui doit générer une exception
Les différents cas d'utilisation de votre code peuvent donc être testé et doivent être testés afin de s'assurer que tout est maîtrisé.
Il existe des conventions à respecter pour vos tests
Il existe des conventions à respecter pour vos tests
Vous devez réaliser un projet de tests unitaires sur une calculatrice simple.
Cette calculatrice est une classe à part entière et elle contient les méthodes :
L'objectif est de réaliser cette classe et également de faire les 5 4 tests unitaires qui correspondent.
Tentez de faire des tests multiples avec des DataRow
Pensez, si vous y arrivez à faire un TestInitialize qui permettra d'éviter de dupliquer du code.
Il est possible de tester en ajoutant des paramètres d'entrées à vos méthodes de tests, ceci est souvent utile afin de pouvoir tester différentes valeurs initiales pour vos tests.
Ce test sera donc exécuté trois fois, avec trois ensemble de paramètres différents.
Attention, il n'est pas utile d'en abuser !
Mais ça peut s'avérer pratique pour tester plusieurs cas ou associer des données "cohérentes" aux tests.
Je vais vous envoyer un code du "célèbre" exercice FizzBuzz.
Vous allez devoir développer le célèbre FizzBuzz :
Vous allez devoir réfléchir aux différents tests à réaliser et les réaliser en .Net. Réalisez vos tests avec des DataRow.
Pensez à tous les chemins d'exécutions qu'il faut tester.
Envoyer FizzBuzz.zip
Réalisez un projet de tests unitaires simple.
L'objectif est assez simple, vous devez réaliser les tests permettant de valider une date par sous ensemble ("jours-mois-année"). Le format d'entré est un string à valider.
Donc au final on veut une méthode isDateValid(string date) avec les tests unitaires nécessaires pour chaque étape de validation ci-dessous. Simplifiez vous la tâche en laissant tout en public et en créant des petites fonctions qui effectuent chaque étapes de la validation
Testez :
Essayez de gérer les cas d'erreurs avec des exceptions !
Pour cet exercice, vous allez devoir implémenter un jeu dont les règles se trouvent ici
https://www.codewars.com/kata/5941c545f5c394fef900000c
Votre objectif est d'implémenter le jeu ainsi que tous les tests unitaires du projet
Concept issu de la POO permettant de limiter les conséquences des interactions entre les éléments de votre projet.
Il en existe 3 types :
La pratique la plus répandue aujourd'hui est de coupler l'injection par interface et l'injection par constructeur.
Démo Code
Des frameworks d'injection de dépendances existent afin d'éviter la dernière étape du paramètre optionnel et du ??.
NInject
Autofac
Spring.NET
StructureMap
Unity
...
Nous ne rentrerons pas dans le détail des Framework d'Injection de dépendances, mais en gros, ils servent à gérer "automatiquement" vos interfaces et leurs dérivées.
Petit exercice pour travailler les injections de dependances
Envoyer DI_Exercice.md
Utiliser les Mocks
Démo Code
Les mocks permettent concrètement de simuler une classe sans avoir à l'instancier elle et tout ce qui l'incombe (paramètres, retours de méthodes particuliers,...)
Les Mocks sont utilisés pour plusieurs raisons :
Quand utiliser les Mocks
En soit, on pourrait absolument tout Mocker. Mais c'est une mauvaise pratique qui mène a des tests très volumineux inutilement.
Donc... Quand est-ce qu'on Mock ?
On Mock afin de remplacer une dépendance externe, l'objectif étant d'isoler nos classes et pouvoir les tester séparément.
C'est tout !
Je rappelle que l'on réalise ici des tests unitaires, c'est pourquoi l'on veut pas tester les dépendances en même temps, sinon en arrive à un test d'intégration.
Petit exercice pour travailler l'utilisation des Mock
Envoyer MockingExercice.md
La réponse simple : On ne test pas de méthode privée.
L'idée étant de mettre en place l'encapsulation et de "cacher" la logique dans des méthodes privées (Et aussi, on veut factoriser le code et le rendre testable efficacement). Ce que l'on veut tester, c'est ce qui peut être appelé de l'exterieur donc les méthodes publiques.
Des exceptions ?
Ma suggestion :
[assembly: InternalsVisibleTo("YourUnitTestProjectName")]
Oui, j'ai mis un singe parce que c'est pas une bonne pratique de tester ses méthodes privées
Un test d'intégration permet de vérifier qu'il n'y a aucune régression sur l'existant suite aux modifications effectuées. (En termes de dépendances entre les éléments de votre appli)
A savoir :
Projet avec une base de données
Je vais vous envoyer un projet à tester sur lequel vous devez réaliser les tests d'intégration demandés.
Envoyer Integration_Tests_Exercice.md
Les tests d'interface vérifient que les développements sont cohérents et fonctionnent sur toutes les plateformes cibles (par exemple, dans le web on vérifie chaque navigateurs)
A savoir :
Selenium est un framework qui va nous permettre de réaliser nos tests d'interface, il permet par exemple d'ouvrir le navigateur, accéder à une URL, vérifier la présence d'un élément, cliquer sur un boutton, remplir un input,...
Une classe des plus utilisé de Selenium est IWebElement, elle permet de réaliser plusieurs opérations sur notre navigateur, ainsi que d'utiliser les éléments qu'elle permet d'identifier.
Les méthodes à connaître sont : FindElement(), FindElements(), Navigate(), Close(), Quit().
Sur un élément récupéré, vous avez des méthodes telles que Click(), SendKeys(), ...
La class By va nous permettre d'identifier de plusieurs façons nos éléments d'interface.
Honnêtement, nous n'allons quasiment qu'utiliser du By.Id() dans cette formation, mais il peut être intéressant pour vous de voir les expressions XPath.
Les packages Nuget
Pour utiliser Selenium, il nous faudra ajouter deux packages Nuget au projet :
GeckoDriver est le driver pour Firefox, il est le plus simple des driver à utiliser car il n'y a pas de soucis de version exacte à matcher.
Créer un WebDriver
La première étape est assez simple, il nous faut créer le WebDriver. Pour l'instant et pour cette étape, vous pouvez faire ça directement depuis votre Program.cs
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
IWebDriver driver = new FirefoxDriver(); // Ou new ChromeDriver() ou new SafariDriver(),...
Accéder à une page
driver.Navigate().GoToUrl("https://example.com");
Vérifier la présence d'un élément
Maintenant, nous pouvons utiliser le Driver pour réaliser différentes opérations relatives à notre interface.
IWebElement element = driver.FindElement(By.Id("my-element-id"));
if (element != null)
Console.WriteLine("L'élément est présent !");
else
Console.WriteLine("L'élément est introuvable.");
Cliquer sur un bouton
IWebElement button = driver.FindElement(By.Id("my-element-id"));
button.Click();
Remplir un input
IWebElement input = driver.FindElement(By.Id("my-element-id"));
input.Clear(); // optionnel, ça clear juste l'input
input.SendKeys("Valeur que je veux mettre dans mon input");
Tester une interface pour remplir des numéros de cartes bancaire
N'hésitez pas à me demander de l'aide
Les tests d'acception permettent de vérifier que les scénarios utilisateurs définis à l'expression de besoin respectent bien les étapes et le résultat attendu.
A savoir :
Behavior Driven Development
Les tests de performances font exactement ce que leur nom indique, on parle aussi de tests de charge, tests d'usine,...
A savoir :
Demo tests de performances avec tests sur la durée d'exécution d'un bout de code
Je vous laisse un peu de temps pour faire de même et me poser des questions si ça n'est pas clair
Choisissez un des sujet proposé (si possible un que vous n'avez pas déjà fait) et réalisez l'intégralité des tests unitaires, tests fonctionnels, tests de performances qui en découlent.
Pensez bien en tests atomiques pour les tests unitaires et en fonctionnalités pour les tests fonctionnels. Concernant les tests de performances, faites au mieux avec les moyens du bord.
Réalisez trois projets de tests différents, un pour les tests unitaires, un pour les tests fonctionnels, un pour les tests de performances
Certains outils permettent de tester les performances de vos applications :
Les tests sont une part importante des développements dans un projet et également une part importante de sa réussite.
L'estimation moyenne du pourcentage de temps (selon moi, j'ai cherché mais je n'ai pas trouvé d'étude) pris pour réaliser les tests sur un projet est compris entre 30% et 50% du temps !
D'où l'intérêt de la TDD, on fait des allers-retours entre les développements et les tests, les tests sont effectué au départ et les développements s'adaptent pour y répondre !
Nous allons faire une petite intégration à l'intégration continue avec Github Actions.
Vous devez tester une API en vérifiant que tous les endpoints fonctionnent bien comme il faut :
Vous pouvez faire ça sur :
Voir le fichier Exercice_Tests_Interface.md
Auparavant, lors des développement en cycle en V, une équipe était dédiée à la réalisation des tests et l'écriture du dossier de recettage. Ils avaient pour objectif de s'assurer du respect des fonctionnalités de l'application.
Ici aucune vérification de couverture de test n'est appliquée.
De manière plus classique et actuelle, les tests peuvent être réalisés à la suite des développements. Ceci est une pratique encore très répandue en France, malgré son manque d'efficacité et son manque de contrôle de taux de couverture des tests.
Définition, utilité et réalité
Nous allons entamer votre apprentissage du TDD, mais sachez que vous ne serez sûrement pas encore experts à la fin de cette formation, à vous d'être assidu et pratiquer quand vous en avez la possibilité
Le TDD est une pratique qui a commencé à être réellement utilisée en 1999. Peu répandu en France à ma connaissance et pourtant... C'est un point si important ! On en parler juste avant, trop d'entreprise demandent à la QA pour réaliser des tests.
NON ! C'est à nous de tester nos développements
Il y a trois grandes règles à respecter pour faire correctement du TDD
Les règles :
Les tests et le code sont écrits ensemble, en commençant par les tests.
Maintenir ses tests c'est maintenir son code
Tous les concepts et conseils vu dans la partie précédente sont à appliquer dans vos tests unitaires. C'est important de le comprendre car c'est également un des avantages de l'utilisation de la méthode TDD.
Pourquoi le TDD ?
Tout code doit être testé et en agile on doit être prêt à déployer toutes les 2 semaines (ou semaine). ça ne veut pas dire qu'on va forcément toujours délivrer tout ce qui est développé, mais on va déployer que des choses prêtes à être déployées et ce à un certain rythme (comparé à avant, ou on livrait tous les 3 mois)
Attention, la couverture de tests voulue est 100% mais c'est la valeur théorique quasi inatteignable
L'objectif des tests est de permettre n'importe quelle modification sans avoir peur de casser quelque chose.
Votre premier objectif est de tester chaque portion de code que vous développez
Les avantages de la méthodologie
Je vais faire un exemple en l'expliquant pas à pas devant vous.
Le but est de réaliser une stack de nombre en TDD.
Vous allez voir... Au début, il faut coder comme quelqu'un de stupide !
Méthode TDD sur un sujet simple : Calculatrice
Réaliser un projet simple contenant des tests unitaires pour :
Développez d'abord les tests unitaires, puis développez la classe (ou les si vous voulez) contenant vos méthodes prenant en paramètres deux nombres vérifiés pour en effectuer des opérations mathématiques.
Je conseil de réaliser un projet en .Net pour utiliser les tests MSTest (ou NUnit)
Objectifs BDD :
(Graphique non représentatif)
Depuis son arrivée en 2006 / 2007, la popularité de la méthodologie de développement en se basant sur le comportement (BDD) n'a de cesse d'augmenter.
Pourquoi ?
Vanguard Group Feedbacks
Voici la liste des avantages que j'ai pu en sortir :
J'irai même plus loin que ça, en disant que dans mon expérience, BDD permet de complètement retiré l'équipe de recettage à la fin de la chaîne en temps que testeurs QA.
Ils interviennent essentiellement lors de la phase de réalisation des scénarios.
Test d'acceptation : Réalisation d'un test visant à vérifier la conformité d'un produit par rapport aux spécifications définies.
Pendant très longtemps, ces tests étaient réalisées manuellement, soit par l'équipe de développement, soit par une équipe de recettage.
Automatisation :
Comme on l'a rapidement évoqué, le Behavior Driven Development a vu le jour afin de pouvoir directement démarrer des users stories utilisées en méthodes agiles afin de réaliser nos tests d'acceptation directement en tests d'interface, ou en tests unitaires.
User story:
As a visitor
I want to Login
So I can access to profil page
Acceptance Criteria :
Given visitor fill username and password
When visitor click on login button
Then user is connected and is on profil page
Feature : Login
Scenario : Login and go to profil page
Given visitor fill username and password
When visitor click on login button
Then user is connected and is on profil page
User story
Scenario
Une méthodologie basée sur le comportement
On démarre des user stories pour créer des scénarios, ces derniers vont définir des étapes permettant de réaliser le scénario.
On établit donc un projet qui répond exactement à la demande du client selon la définition des scénarios utilisateurs.
Behavior Driven Development prends les principes du TDD et des méthodes agiles.
Les besoins utilisateurs sont traduits en code est sont directement testables.
Incluant un recettage automatisé en intégration continue.
Explique ce qui défini qu'un système fonctionne correctement.
Ecris de manière à ce qu'ils soient toujours en Pass/Fail via une assertion.
Définis les conditions des critères d'acceptations
Définis les étapes du scénario et les sorties voulues (que ce soit en terme de page accédée, en terme de résultat attendu par une étape, etc...)
Ici chaque étape n'est pas forcément une assertion
Structuration de nos scénarios dans une langue compréhensible par un client
C'est un langage spécifique au domaine qui décris les comportements attendus par notre logiciel. Attention, ça n'est que la partie qui en décris le comportement. Il peut être écrit dans n'importe quel langue (français, anglais,...).
Il agit également en tant que documentation de l'application.
On démarre toujours avec un fichier FeatureFile.
Exemple de FeatureFile
Structuration de nos scénarios dans une langue compréhensible par un client
Chaque étape d'un scénario fait office d'un test unique (pour ne pas dire unitaire et confondre avec le test unitaire classique).
Plusieurs mots clés possibles : Given, When, Then,...
Fichier FeatureFile complet
En .Net, on va utiliser SpecFlow nous permettant de générer nos StepDefinitions découlant de notre fichier FeatureFile vu précédement.
Exemple complet
Tout d'abord SpecFlow utilise Cucumber pour interpréter le Gherkin
Les autres outils pour faire du BDD :
Cucumber est à la fois une automatisation des tests, des spécifications exécutables et de la documentation dite "vivante".
Comme vu précédemment, les fichier FeatureFile contiennent la définition des étapes en anglais.
SpecFlow / Cucumber permet de générer le fichier StepDefinition définissant le contenu de nos steps et donc de nos tests
Pour mieux appréhender le BDD, nous allons voir un exemple concret réalisé sur une ATDD
C:\Users\cdric\OneDrive\Bureau\Formations\FormationBehaviorDD\git\SeleniumWebDriver
Ce document a pour objectif de s'assurer du bon fonctionnement de l'intégralité du projet.
Il recense l'intégralité des tests effectués afin de faire office de guide dans la vérification de la conformité du produit.
Il contient généralement : le contexte du projet, les prérequis pour recetter ainsi que la liste complète des tests (unitaires et acceptations).
Avantages :
Chaque test doit être décris en donnant à minima les informations suivantes :
Le but de ce cahier de recette est donc d'être un guide pour la vérification de bonne conformité du produit. Si tous les tests du cahier de recettes passent au vert, nous assumons avoir vérifier le produit avant livraison.
L'équipe de recettage peut aussi réaliser les PV de recettes.
Les clients le peuvent également, mais généralement ils testent l'application sans respecter les étapes du cahier de recettes.
Vous allez prendre tout le temps qu'il faut pour réaliser un cahier de recette le plus complet possible concernant le projet fil rouge sur lequel vous travaillez.
L'objectif est que je vous fasse des retours sur ce que vous proposez et comme je dois vous mettre une note pour chaque module, je vais devoir associer une note pour votre travail du jour (mais tranquille hein, ça va le faire)
La politique de tests est l'ensemble des règles et le document concernant les normes des tests qui doivent être réalisés pour considérer la qualité d'un logiciel.
Elle reprend, entre autres :
Suite...
Durant cette formation plus avancée, nous devons aborder la suite de tests suivante :
(De nombreux ont déjà été couverts dans les parties précédentes)
Un test fonctionnel a pour objectif de valider un sous ensemble du logiciel (un fonctionnalité, un module,...) pour valider les spécifications fonctionnelles qui lui sont associées.
A savoir :
Les tests d'interface, ou tests de compatibilité vérifient que les développements sont cohérents et fonctionnent sur toutes les plateformes cibles (par exemple, dans le web on vérifie chaque navigateurs et même différentes versions de ces derniers)
A savoir :
L'utilisation d'un framework comme Selenium permet de réaliser des tests de compatibilité automatisés, nous avons déjà abordé cette partie lorsque nous avons parlé de Behavior Driven Development.
Je vous invite à essayer par vous même en utilisant la base fournie pour réaliser vos tests sur différents navigateurs.
Possibilité de revoir un peu tout ça si nécessaire + Envoyer la base de travail avec Selenium en .Net
Les tests de performances font exactement ce que leur nom indique, on parle aussi de tests de charge, tests d'usine, tests de résilience, tests de disponibilité immédiate,...
A savoir :
Certains outils permettent de tester les performances de vos applications :
Datadog / Kubernates / Docker
Utilisation de JMeter plus en détails (cours complet)
Ce sont des tests conçus afin de s'assurer de la simplicité d'utilisation du logiciel dans le but d'identifier les "obstacles" à l'utilisation de ce logiciel. Ces derniers assurent simplement la satisfaction des utilisateurs.
A savoir :
Ici, vous devez déjà connaître certains outils comme Google Analytics, Adobe Analytics, Matomo etc...
Ils permettent de connaître le nombre d'accès à une page, le nombre d'abandons sur une page en particulier, le nombre de retour à l'écran d'accueil etc... C'est pratique pour mesurer l'utilisabilité d'un produit et prendre des mesures nécessaires sur les aspects du projet qui ressortent de manière problématique.
Bon, vous n'êtes sûrement pas sans savoir que la CNIL a bloqué l'utilisation de Google Analytics.
C'est un sous ensemble des tests de performances que nous avons déjà abordé. Ils découlent très souvent des documents nommés PRA / PCA que vous devez déjà connaître.
A savoir :
Datadog / Kubernates / Docker
Les tests de sécurités sont abordés dans la formation concernant la sécurité, si besoin d'un rappel, voici un lien permettant d'y accéder :
Types d'analyses sécurité
A savoir :
Pas de présentation particulière ici car nous l'avons déjà vu ensemble normalement.
Vous pouvez utiliser SonarCloud ou SonarQube par exemple pour réaliser une analyse en SAST de votre projet.
Si vous voulez aller plus loin (contexte entreprise), vous pouvez utiliser Checkmarx afin de réalisé les 3 types d'analyses automatisées, mais il faut savoir que ça a un coût non négligeable pour un projet quelque soit son envergure.
Les tests de maintenabilité, comme le nom le précise bien permettent d'évaluer la maintenabilité, l'évolutivité, la gestion des bugs et des dépendances d'un logiciel déjà mis en production.
A savoir :
Nous avons déjà vu également les différents outils utilisables pour ce genre de tests.
Par exemple, l'analyse qualité proposée par SonarQube / SonarCloud correspond aux aspects automatisables.
De même pour la mise en place d'une intégration continue. Incluant donc la partie analyse syntaxique (Linting)
Cependant ils ne sont pas suffisant pour couvrir tous les aspects de la maintenabilité, il est nécessaire de compléter l'étude avec des actions manuels comme des audits prévus à cet effet
L'objectif de cet exercice est de vous faire avancer et vous aider à la mise en place d'une stratégie de tests pour votre projet de groupe
BON COURAGE !
(après c'est fini)
Evaluation mise en place de tests unitaires
Je vais vous envoyer un fichier .md avec les règles.
Ainsi qu'un zip des éléments sur lesquels vous allez devoir créer les différents tests unitaires.