Sie sind auf Seite 1von 25

Mini Projet « Système de commande Temps Réel »

Sujet: Etude de l’outil de test unitaire


« Google Test »

Réalisé par :
BENMANSOUR KAOUTHAR Encadré par:
CHANAOUI ILYASS
HABACHI MAROUANE
MHAMDI MOHAMMED Mr. NAJOUI
PLAN

PARTIE PARTIE
A B
MISE EN Insertion de
SITUATION bibliothèque

INTRODUCTION TEST
FIXTURES

DOMAINES
D’APPLICATIO Exécution
N des tests

LES NORMES Génération


ET STANDARD d’un rapport
SUPPORTEES XML Google
PAR GOOGLE Test
TEST

Exemple
LES complet
FONCTIONALITES
Une présentation détaillée
de l’outils et de ces
fonctionnalités

PARTIE A
Mise en situation

• Le test unitaire est un processus de vérification d’une unique unité de logiciel, elle-même définie
comme étant la plus petite partie non divisible d’un code source. Par exemple, dans le cadre d’un
développement en langage C, il est communément admis que l’unité de logiciel est une fonction de
code. Ainsi, le test unitaire revient à tester une seule et unique fonction de code source à la fois,
isolément des autres fonctions du projet.
• Le but du test unitaire est de confronter une fonction de code aux exigences de conception
correspondantes, et donc de s’assurer qu’elle fonctionne correctement en toutes circonstances. Les
tests unitaires jouent un rôle clé dans l’amélioration de la qualité des logiciels, en permettant de
détecter les erreurs rapidement (particulièrement lorsqu’ils sont effectués durant le développement),
notamment dans le cadre de la méthode Test Driven Development), de diminuer les erreurs en phase
de maintenance (les tests unitaires faisant par la suite office de tests de non-régression), d’améliorer la
documentation du code source (la lecture de tests unitaires étant souvent très instructive pour
comprendre le fonctionnement d’une fonction de code).
Mise en situation
INTRODUCTION

Il existe de nombreux frameworks de tests unitaires pour les programmes C et


C++. Google C++ Testing Framework en est un particulièrement simple et
efficace.
Google C++ Testing Framework plus généralement appelé Google Test est une
bibliothèque de tests unitaires pour le langage C++ basé sur l’architecture
xUnit. Cette bibliothèque permet de faire des tests unitaires sur du code source
C ou C++ avec un minimum de modifications dans les sources.
Pour construire Google Test et les tests qui l'utilisent, vous devez indiquer à
votre système de construction où trouver ses en-têtes et ses fichiers sources. La
manière exacte de le faire dépend du système de compilation que vous utilisez,
et est généralement simple.
LES DOMAINES
D’APPLICATION

• Projets Chromium ( le navigateur Chrome et Chrome OS).

• Le compilateur LLVM.

• Protocol Buffers (format d'échange de données de Google).

• Bibliothèque de vision par ordinateur OpenCV

• Gromacs;logiciel de simulation de la dynamique moléculaire


LES NORMES ET STANDARD SUPPORTEES PAR

GOOGLE TEST
• les tests unitaires, bonne pratique d’Assurance Qualité
Logiciel, sont exigés dans de nombreuses normes de
Sureté de Fonctionnement Logiciel comme
• la DO-178,
• l’IEC 61508,
• l’IEC 62304,
• l’ISO 26262,
• l’EN 50128,
LES
FONCTIONNALITEES

• GTest Runner est un testeur automatique basé sur Qt5 et une interface utilisateur
graphique avec de puissantes fonctionnalités pour les plates-formes Windows et Linux.

• L'interface utilisateur de Google Test est un programme de test qui exécute votre binaire
de test, vous permet de suivre sa progression via une barre de progression et affiche une
liste des échecs de test. En cliquant sur l'un d'entre eux, le texte de l'échec s'affiche.
L'interface utilisateur de Google Test est écrite en C#.

• GTest TAP Listener est un auditeur d'événements pour Google Test qui met en œuvre le
protocole TAP pour la sortie des résultats des tests.
LES FONCTIONNALITEES

• gtest-parallel est un testeur qui effectue des tests à partir du binaire en parallèle pour
fournir une accélération significative.

• GoogleTest Adapter est une extension VS Code permettant de visualiser les tests
Google dans une arborescence, et d'exécuter/débugger les tests.

• C++ TestMate est une extension VS Code permettant d'afficher Google Tests dans une
arborescence, et d'exécuter/déboguer vos tests.

• Cornichon est un petit analyseur DSL Gherkin qui génère du code pour Google Test.
EXEMPLE
D’APPLICATION

PARTIE B
L’ENVIRONNENT GOOGLE TEST EST GÉNÉRALEMENT DIVISE EN 3
PARTIE :
 LE CODE
 LA CASE DE TEST
 LA BIBLIOTHÈQUE DE GOOGLE TEST
Etape 1: Insertion de bibliothèque

POUR UTILISER GOOGLE TEST, IL FAUT LE COMPILER EN UNE


BIBLIOTHÈQUE QUI SERA LIÉE AVEC LE PROGRAMME DE TEST.
UN TEST SE PRÉSENTE COMME CECI:
Etape 1: Insertion de bibliothèque

VOICI QUELQUES AFFIRMATIONS QUE


L’ON PEUT TESTER:

CES AFFIRMATIONS PERMETTENT DE


VÉRIFIER LES VALEURS OBTENUES DANS
UNE FONCTION OU UNE MÉTHODE.
Etape 2: TEST FIXTURES

• Un programme de test peut contenir plusieurs test cases qui


eux-mêmes contiennent un ou plusieurs tests.
• Les test cases permettent de structurer les tests.
• Quand plusieurs tests dans un test case ont besoin de partager
des objets ou des fonctions, on peut utiliser une classe test
fixture.
• Les tests fixtures permettent d’utiliser la même configuration
pour plusieurs tests.
Etape 2: TEST FIXTURES

Pour cela on défini une classe qui contiendra les éléments


nécessaires aux tests.
Par exemple:

 On peut définir un constructeur et un


destructeur.
 La fonction SetUp() permet de préparer les
objets pour chaque test.
 La fonction TearDown() permet de relâcher les
ressources éventuellement allouées dans la
fonction SetUp().
Etape 2: TEST FIXTURES

Dans le cadre de l’utilisation d’un test fixture, on va utiliser TEST_F() à la place de TEST() pour pouvoir accéder aux objets
qu’on a construit précédemment.
Par exemple:
Etape 3: Exécution des tests

 Pour exécuter les tests:


il suffit d’initialiser GOOGLTEST
avec ::testing::InitGoogleTest(&argc, argv).
 Puis pour lancer les tests
d’utiliser RUN_ALL_TESTS().
Etape 4: Génération d’un rapport XML Google Test

L’un des atouts de Google Test est de permettre


de générer un rapport XML.
==) Pour pouvoir générer un rapport XML, il
faut mettre la variable
d’environnement GTEST_OUTPUT à la
valeur xml:\chemin\vers\Rapport_XML.xml.
Etape 5: EXEMPLE COMPLET

This header file declares Add.cc defines the function


a function Add which declared in Add.h
will be tested in our test
file.
Etape 5: EXEMPLE COMPLET

This file defines a test with the macro, TEST. T here are two
names inside of the parentheses which specify the name for the
series of tests, AddTest, and the specific test name,
TwoAndTwo.

This is the output to the console when the test passes or fails
(see below). An assertion is used to check equality between 4
and the call of the function Add with arguments (2, 2).

Then, main initializes the testing environment and runs all tests.
Etape 5: EXEMPLE COMPLET

Compilation
g++ -I(path to googletest)/include/ -I(.h directory) -c Test.cc Add.cc
./a.out
g++ -pthread *.o libgtest.a
Google testing uses pthreading and
-pthread must be passed as a flag
when linking. For more information
on compiling, check out our other
post here.
Etape 5: EXEMPLE COMPLET

If we change the source code to reflect a


test that fails, we get a different output.

This very verbose output makes it easy to understand which


function caused the failure and what to do to fix it.
CONCLUSION

Ce Travail nous a permis de :


Connaitre d’autres outils utilisés par les industriels pour
la validation et tests de leurs systèmes de commande
temps réel.
Développer les compétences sur ces outils via
l’exemples concrets traitée au-dessus.
THANK YOU

Das könnte Ihnen auch gefallen