Module 3 : Considérations de génie logiciel Flashcards

1
Q

étape modèle en cascade

A

spécifier besoin
analyse
conception
implémenter
intégrer
maintenir

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

processus de compilation

A

pré processeur
compilateur
éditeur de liens

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Test unitaire ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

but test unitaire

A

Première ligne de défense contre les défauts du logiciel.
Permet de détecter toute anomalie le plus tôt possible

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Mise en œuvre test unitaires

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

assertions

A

déclarations vérifiant si une condition est vraie

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

résultat d’une assertion

A

success (test réussi),
nonfatal failure (test échoué)
fatal failure (test échoué et arrête la fonction).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

exemple de code de test

A

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());

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

2 types d’assertions:

A

EXPECT_* : assertions non-fatales (continue après échec)
ASSERT_* : assertions fatales (arrête le programme)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

oPrincipales macros:

A

ASSERT/EXPECT_TRUE/FALSE(condition)
ASSERT/EXPECT_EQ(v1, v2)/_NE()/_LT()/_LE()/_GT()/_GE()
comparaisons entre deux valeurs v1 et v2 (valeurs comparables)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Si 2 tests ou plus opèrent sur des données similaires
o les regrouper dans

A

un test fixture

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Pour créer un fixture

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

oPour des tests utilisant un fixture, on écrira – au
lieu de –

A

oPour des tests utilisant un fixture, on écrira TEST_F() au
lieu de TEST()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

On doit faire un test pour quelles méthodes?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Quelle mécanique doit-on utiliser pour les tests?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Quel genre de rapport sera fourni à la fin du test?

A

Rapport simpliste de pass/fail.

17
Q

Un contrat protège les deux parties

A

Protège le client (dans ce cas ci vous-mêmes)
oSpécifie quelles sont ses obligations.
oEn retour, est assuré d’un certain résultat.

Protège le fournisseur (sous-contractant)
oSpécifie le minimum requis (de la part du client):
le fournisseur ne peut être tenu responsable d’avoir manqué à des engagements ne figurant pas dans le contrat.

18
Q

spécification d’un contrat

A

Spécification d’une interface
peut être vue comme un contrat entre un client (l’utilisateur du
composant/classe) et un fournisseur (le composant/classe).

Le contrat dit ce qui doit être rencontré par le client
pour pouvoir appeler une opération de l’interface :
précondition.

Le contrat dit aussi ce qui doit être réalisé par le fournisseur
de fait, ce qui est garanti au client
pour rencontrer ce qui est prévu par l’opération
postcondition.

19
Q

Mécanismes pour exprimer ces conditions

A

assertions
préconditions
postconditions :
assertions s’appliquant à des méthodes en particulier,

invariants de classe :
assertions s’appliquant à toutes les méthodes d’une classe en tout temps.

20
Q

préconditions

A

conditions devant être remplies avant
d’exécuter une méthode.
Si le contrat n’est pas rempli, la méthode n’a pas à s’exécuter. [Erreur de programmation]

21
Q

postconditions :

A

conditions devant être remplies après
l’exécution d’une méthode.
Si le contrat n’est pas rempli, la méthode ne doit
pas retourner. [Erreur de programmation]

22
Q

Une spécification plus complète d’une opération offerte par un composant deviendrait

A

ole nom de l’opération
ole nombre, le type et l’ordre des paramètres
oles préconditions oles postconditions ole type de retour

23
Q

invariant

A

oreprésente l’ensemble des conditions logiques devant être respectées pour assurer un comportement correct d’une classe.

24
Q

Les invariants doivent donc être respectés (et testés) :

A

à la fin de tous les constructeurs.
o à la fin de toutes les méthodes non constantes,
i.e. les méthodes qui modifient l’objet

25
Q

règle absolue des précondition et postconditions

A

osoit on a la condition dans la précondition,
osoit on l’a dans le corps de la méthode,
jamais dans les deux.

26
Q

Les bénéfices des contrats

A

Les spécifications des services sont claires;

Les contrats offrent un moyen explicite pour documenter et transférer ces spécifications directement dans le code;

Spécifications dans le code
On peut les tester = on peut garantir la fiabilité du code.

L’utilisation des contrats est vitale pour la réutilisation
de composants.

27
Q

Les MACROs pour le contrat

A

“fonction” définie par un #define.

Remplacement textuel, fait par le préprocesseur.

Dans le fichier ContratException.h,

Définition de ces classes

+ définition des MACROs suivantes:
PRECONDITION(test);
POSTCONDITION(test);
ASSERTION(test);
INVARIANT(test);
INVARIANTS();

28
Q

Implantation du contrat au niveau d’une méthode

A

Utilisation des MACROs:

oPRECONDITION(«test_logique»);
pour valider les données en entrée.

oPOSTCONDITION(«test_logique»);
pour valider le bon fonctionnement de la méthode avant le retour de celle-ci.

oASSERTION(«test_logique»);
pour valider un état quelconque au milieu de l’algorithmique