Module 3 : Considérations de génie logiciel Flashcards
étape modèle en cascade
spécifier besoin
analyse
conception
implémenter
intégrer
maintenir
processus de compilation
pré processeur
compilateur
éditeur de liens
Test unitaire ?
Pour s’assurer qu’un composant logiciel se comporte tel que prévu et spécifié.
Teste les cas normaux et les cas anormaux.
Utilise toujours de façon systématique
l’interface publique de la classe.
but test unitaire
Première ligne de défense contre les défauts du logiciel.
Permet de détecter toute anomalie le plus tôt possible
Mise en œuvre test unitaires
Doit être structuré.
Doit être répétable
Doit fournir un rapport d’exécution extrêmement
simple
Toutes les méthodes publiques de la classe doivent être testées.
Les tests pour chaque méthode doivent être indépendants les uns des autres
assertions
déclarations vérifiant si une condition est vraie
résultat d’une assertion
success (test réussi),
nonfatal failure (test échoué)
fatal failure (test échoué et arrête la fonction).
exemple de code de test
TEST(Pile,ConstructeurVide)
{
Pile unePile; ASSERT_EQ(0,unePile.getCapacite()); ASSERT_TRUE(unePile.estVide());
}
TEST(Pile,ConstructeurCapacite)
{
Pile unePile(25); ASSERT_EQ(25,unePile.getCapacite()); ASSERT_TRUE(unePile.estVide());
2 types d’assertions:
EXPECT_* : assertions non-fatales (continue après échec)
ASSERT_* : assertions fatales (arrête le programme)
oPrincipales macros:
ASSERT/EXPECT_TRUE/FALSE(condition)
ASSERT/EXPECT_EQ(v1, v2)/_NE()/_LT()/_LE()/_GT()/_GE()
comparaisons entre deux valeurs v1 et v2 (valeurs comparables)
Si 2 tests ou plus opèrent sur des données similaires
o les regrouper dans
un test fixture
Pour créer un fixture
Dériver la classe de ::testing::Test. Commencer le corps de la classe avec le mot-clé protected ou public pour que son contenu soit accessible par les sous-classes
Déclarer dans la classe tous les objets à utiliser
Si nécessaire, écrire un constructeur par défaut ou une fonction SetUp() pour préparer les objets pour chaque test (Attention! Veiller à bien écrire SetUp() avec un «u» majuscule)
Si nécessaire, écrire un destructeur ou une fonction TearDown() pour libérer la mémoire allouée dans SetUp()
Au besoin, définir les sous-routines partagées par les tests
oPour des tests utilisant un fixture, on écrira – au
lieu de –
oPour des tests utilisant un fixture, on écrira TEST_F() au
lieu de TEST()
On doit faire un test pour quelles méthodes?
Méthode publique, pourquoi pas les méthodes privées car c’est testé à travers les publiques: on garantit aux utilisateurs de la classe qui vont utiliser les méthode publique. Les méthodes publiques c’est l’interface avec l’utilisateur. Donc les tests unitaires, on se met à la place de l’utilisateur.
Quelle mécanique doit-on utiliser pour les tests?
Google test. Test unitaire pour éliminer les effets de bord d’un test à un autre. On teste une chose à la fois. Les tests doivent être indépendants