Tests Flashcards

1
Q

Pourquoi des tests ?

A

Constat - La réalité des projets – Dérive dans le temps
! 51% des projets ne respectent pas leurs dates de
livraison
! 16.2% des projets sont livrés dans les temps et dans leur
budget prévu

– Surcoût du projet
! 43% des projets dépassent leur budget initial
! 53% des projets coûtent 189% du budget initialement
estimé

– Taux d’anomalies trop important

– Exigences oubliées, fausses ou mal-comprises
! 18% des solutions ne correspondent pas aux besoins des
utilisateurs
! 70% des défauts logiciels proviennent de l’expression
des besoins et de leurs spécifications

– Turnover des équipes

! Les logiciels deviennent de plus en
plus complexes et importants.

! les volumes de données sont de
plus en plus grands…

! Important de tester avant de
distribuer son code.

! Pas de programme sans erreur
(bug)!

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

Classes d’erreurs
! Les erreurs peuvent être de divers ordres.

A

Ø de calcul
Ø de logique
Ø d’entrée / sortie
Ø de traitement des données
Ø dépassement de tableau
Ø d’interface
Ø communication entre les programmes
Ø de définition des données
Ø etc.

Ces classes d’erreurs représentent 90%
des cas décelés.

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

Tests
! Les tests existent depuis toujours
(mauvaise perception).

! Prise de conscience actuelle de la
part des sociétés et notamment
des directions informatiques
(risque de dysfonctionnement,
perte financière, retard…).

! Les tests rassurent et permettent
de palier aux erreurs humaines.

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

Tests existent
depuis toujours

A

! De 1960 à 1980, il s’agissait
d’une mise au point.

! De 1980 à 1990, les tests
cherchaient uniquement à
trouver des erreurs.

! Depuis 1990, les tests se
veulent préventifs.

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

Objectifs des tests
! Quoi ? Objet à contrôler / fourniture / livrable

A

– un logiciel ou système informatique produit
– Spécification

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

Objectifs des tests
! Pourquoi ? Des tests pour contrôler.

A

– Le bon fonctionnement d’un système informatique en
identifiant les défauts.
– Contrôle des nouvelles fonctionnalités.
– Intégration réussie avec l’existant.
– Vérification que les besoins des utilisateurs sont couverts.
– Satisfaction client

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

Objectifs des tests
! A l’aide de ? Un référentiel d’exigences

A

– Règles de gestion
– Architecture système

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

Objectifs des tests

A

! Trouver des anomalies qui n’ont pas été détectées
! Valider la conformité d’un livrable avec les exigences fournies
! Vérifier la conformité de l’implémentation des exigences fournies
! Vérifier la conformité d’un produit par rapport aux Règles de
gestion
! Vérifier la conformité d’un produit par rapport aux spécifications
techniques

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

Validation VS Vérification

A

! Est-ce que le logiciel fonctionne comme prévu ? – Les définitions des test sont souvent associées avec les termes
vérification et validation.

! La validation est le moyen de confirmer le respect
d’exigences déterminées pour une utilisation
spécifique prévue.
– Validation : Faisons-nous le travail attendu ?

! La Vérification est l’action de confirmer la satisfaction
des exigences spécifiques via l’étude et la mise à
disposition de preuves objectives.
– Vérification : Faisons-nous le travail correctement ?

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

Difficultés liées aux tests

A

! Impossible de réaliser un test exhaustif
! Qualité des tests dépend des données utilisées
! Impossible de supprimer l’erreur humaine
! Difficultés d’ordre psychologique, culturel
! Manque d’intérêt pour les tests
! Taille et complexité des programmes
! Différence entre environnement de
développement et de production
! Perte d’information naturelle

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

Cycle de vie VS Tests

A

! Les phases de tests font parties du processus qualité d’un projet

! Quelque soit le processus de développement mis en place
– Cycle en cascade
– Cycle en V
– Cycle iteratif
– Le cycle UP (Unified Process)
– Extreme Programming (XP)
– …

! Besoin d’apporter la preuve du résultat

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

Cycle de vie VS Tests

A

Expression des besoins
Spécifications fonctionnelles
Analyse
Conception
Implementation
Tests du systeme
Validation
Livraison

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

Cycle de vie VS Tests
! Les mouvements Agile et le Test-Driven Development
(TDD) ont encouragé de nombreux programmeurs à
écrire des tests unitaires automatisés

! TDD nous impose de commencer par écrire les tests
unitaires, avant le code de production

A

– Un cycle qui peut durer une trentaine de secondes.
– Les tests et le code sont écrits ensemble, en commençant par
les tests.
! De cette manière, nous écrivons des dizaines de tests par jour, des
centaines de tests par mois et des milliers de tests par an.
! ces tests couvriront virtuellement tout le code de production.

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

Les trois lois du TDD

A

! Première loi.
– Vous ne devez pas écrire un code de
production tant que vous n’avez pas
écrit un test unitaire d’échec.

! Deuxième loi.
– Vous devez uniquement écrire le test
unitaire suffisant pour échouer ;
l’impossibilité de compiler est un
échec.

! Troisième loi.
– Vous devez uniquement écrire le code
de production suffisant pour réussir le
test d’échec courant.

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

Types VS Techniques de tests

! Types de tests
– Catégories de tests effectués tout au long du cycle devie du logiciel.

A

! Tests unitaires
– Vérifier que l’objet fournit les services décrits

! Tests d’intégration
– vérification du bon enchaînement des fonctions et des programmes afin de valider
l’architecture technique du logiciel

! Tests de validation du système ou vérification
– Vérifier que les fonctions fournissent les bons résultats et sont conformes aux exigences essentiellement fonctionnelles.

! Recette (ou acceptation) utilisateur
– Contrôle par des utilisateurs du logiciel pour s’assurer que le produit répond à leur besoins.

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

Types VS Techniques de tests
! Techniques de tests

A

– Techniques utilisées durant les phases de tests (types de tests)
– Techniques fonctionnelles, structurelles , dynamiques, statiques,
flots de données, graphes cause-effet, …

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

Processus de test

A

Définir la stratégie et plan de test
Élaborer les scénarios de test
Spécifier les cas de tests
Exécuter les cas de tests
Analyser les résultats des cas de tests

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

Stratégie VS Plan de test
! La stratégie de test ne couvre que les vues générales sur la
manière d’aborder le processus de test. Les détails, comme
qui effectue les tests et la manière dont les étapes doivent
être effectuées, sont laissés au plan de test.

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

Stratégie VS Plan de test
– Organiser les phases de tests
! Qui?

A

– Equipe de développement
– Equipe spécifique
– Client

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

Stratégie VS Plan de test
Quand

A

– Planification des différentes tâches en fonction des phases du projet

21
Q

Stratégie VS Plan de test
Comment, test manuels?

A

– Utilisation d’outils de tests et de rédaction des tests.

22
Q

Stratégie VS Plan de test
– Définir les processus projets

A

! De validation
! De correction
! De génération d’évolutions

23
Q

Cas VS Scenario de test
! Pour 1 cas d’utilisation (ou User story) donné

A

– 1 scénario de test = 1 Scénario du Cas d’Utilisation (ou User story)

24
Q

Cas VS Scenario de test
! Scénario de test

A

– Ensemble de cas de test regroupés et ordonnancés suivant une
logique d’exécution
– Pour 1 scénario de test donné, il y a plusieurs cas de test qui
dépendent
– Des valorisations (données)
– Des conditions d’exécution

25
Q

Cas VS Scenario de test
! Cas de test

A

– Un ensemble de valeurs d’entrée, de pré-conditions d’exécution, de
résultats attendus et de post-conditions d’exécution, développées
pour un objectif ou une condition de tests particulier, tel
qu’exécuter un chemin particulier d’un programme ou vérifier le
respect d’une exigence spécifique

26
Q

Classification des tests
* Selon l’objectif

A

ü Scénario - vérifier que le comportement fonctionnel est bien celui
attendu

ü Non-régression - ce qui fonctionnait dans les version précédentes du
code fonctionne toujours dans la nouvelle version

ü Performance (bench) ou charge (load) - les temps de réponse à une
requête sont conformes aux attentes

ü Intégration/fonctionnels - le code s’intègre bien avec les autres
éléments du système.

27
Q

Classification des tests
Selon la cible

A

ü scénarios - tester un cas d’utilisation

ü unitaires - tester un composant du système

28
Q

Classification des tests
* Selon la technologie

A

ü Web - envoyer des requêtes Web simulant le comportement
d’utilisateur(s)

ü Web Service - envoyer des appels Web Service simulant le
comportement du système

ü Etc.

29
Q

Classification des tests
* Selon le mode d ’exécution

A

ü Le test Manuel - Les tests sont exécutés par le testeur qui vérifie
les traitements… et compare les résultats obtenus avec ceux
attendus.

    § Ces tests sont fastidieux et offrent une plus grande possibilité d’erreurs humaines. Ces tests sont très vite ingérables dans le cas d’applications de grandes tailles.

ü Le test Automatique - Le testeur est en partie déchargé des tests
dans la mesure où les tests sont réalisés par des outils (JUnit par
exemple dans le monde Java).

30
Q

Classification des tests
* Selon les modalités du test

A

ü Statiques - Les tests sont réalisés «par l’humain» (testeur), sans
machine, par lecture du code dans le but de trouver des erreurs
(revue de code…).

ü Dynamiques - On exécute le système de manière à tester
l’ensemble des caractéristiques. Chaque résultat est comparé
aux résultats attendus.

31
Q

Classification des tests.
* Selon les caractéristiques des tests

A

ü De Robustesse - Permet d’analyser le système dans le cas où ses ressources
sont saturées ou bien d’analyser les réponses du système aux sollicitations
proche ou hors des limites des domaines de définition des entrées.

ü De performance - Permet d’évaluer la capacité du programme à fonctionner
correctement vis-à-vis des critères de flux de données et de temps
d’exécution.

32
Q

Classification des tests.
* Selon les méthodes de tests

A

ü Structurels (Boîte blanche) - Les tests structurels reposent sur des analyses
du code source. Fondés sur la structure interne du composant. Conçus en
connaissant le code du composant. Écrits par les développeurs. Tests unitaires
et d’intégration.

ü Fonctionnels (Boîte noire) - Les tests fonctionnels reposent sur une
spécification du programme. Le code source du programme n’est pas utilisé.
Les tests fonctionnels permettent d’écrire les tests bien avant le « codage ».
Fondés sur l’interface (publique) du composant. Conçus sans connaître le code
du composant. Écrits tôt et indépendamment des développeurs. Tests de
système et d’acceptation

33
Q

Méthodes de tests

A

! Approche type « Boite Blanche »
! Approche type « Boite Noire »

34
Q

Méthodes de tests
! Approche type « Boite Blanche »

A

– On valide le code et on vérifie qu’il n’y a pas de problème
– On ne teste pas le fonctionnel mais tous les chemins possibles du
programme
! Contrôle du fonctionnement interne du composant
! Contrôle de l’exhaustivité des enchaînements
! Contrôle de l’exhaustivité des alternatives d’exécutions
! Contrôle de la collecte des données en entrée
! Contrôle exactitude des résultats d’exécution

35
Q

Méthodes de tests
! Approche type « Boite Noire »

A

– On vérifie que les sorties obtenues sont celles prévues pour les
données entrées
– Le fonctionnement interne n’est pas accessible
! Contrôle du comportement externe du composant
! Contrôle de l’intégration des enchaînements des composants entre eux
! Contrôle des alternatives d’exécution
! Contrôle exactitude des résultats d’exécution

36
Q

Techniques de tests

A

– Approche structurelle (boîte blanche)
– Approche fonctionnelle (boîte noire)

37
Q

Techniques de tests
– Approche fonctionnelle (boîte noire)

A
  • Approche fonctionnelle classique
  • Analyse « Partitionnelle »
  • Tests aux limites
  • Tests combinatoires
  • Tests syntaxiques
  • Tests aléatoires
  • Graphe cause effet
38
Q

Techniques de tests
– Approche structurelle (boîte blanche)

A
  • Tests structurels statiques
  • Tests structurels dynamiques
39
Q

Classification des tests
* Selon les niveaux de tests

A

ü Il s’agit de tests réalisés tout au long de la vie du logiciel (cycle de
vie).

§ Unitaires :
s’assurer que les composants logiciels pris
individuellement sont conformes à leurs spécifications et prêts à
être regroupés.

§ D’intégration :
s’assurer que les interfaces des composants sont
cohérentes entre elles et que le résultat de leur intégration permet
de réaliser les fonctionnalités prévues.

§ Système :
s’assurer que le système complet, matériel et logiciel,
correspond bien à la définition des besoins tels qu’ils avaient été
exprimés. On parle de validation, d’acceptation ou de recette.

§ De non régression :
vérifier que la correction des erreurs n’a pas
affecté les parties déjà développées et testées. Cela consiste à
systématiquement rejouer les tests déjà exécutés.

40
Q

Niveaux de tests
! Les tests unitaires

A

– Tests réalisés sur des fichiers ou des programmes
isolés de toutes relations avec d’autres
programmes

! Valider la qualité du code et les performances des
différents modules

41
Q

Niveaux de tests
! Les tests d’intégration

A

– Utiliser pour révéler les problèmes d’interface
entre les différents programmes

! Valider l’intégration des modules entre eux et dans
leur environnement d’exploitation définitif

42
Q

Niveaux de tests
! Les tests fonctionnels

A

– Vérifier qu’il n’y a pas d’anomalies dans les
fonctions réalisées par l’application

!Valider les spécifications techniques et les
exigences fonctionnelles

43
Q

Niveaux de tests
! Les tests Systèmes

A

– Tester le matériel et le logiciel
– Vérifier la définition des besoins
– Test de validation ou d’acceptation

44
Q

Niveaux de tests
! Les tests de non-régression

A

– Vérifier que les modifications apportées n’ont pas
perturbé l’application

45
Q

Principe 1
Un test exhaustif est impossible

A

! Car:
– infinité de valeurs
– combinaison de
situations

! Donc:
– bien choisir les tests
– décider quand s’arrêter

46
Q

Principe 2
objectif = empêcher les erreurs
de survenir

A

! Test ¹ phase finale quand tout le code est
écrit

! Test tout au long du processus
– spécification
– conception (découpe en sous-problèmes)
– implémentation

47
Q

Principe 3
Les tests doivent être planifiés

A

! … et conçus de manière systématique

! Pas inventés rapidement quand on essaye le programme

! Plan de tests
– définir l’objectif des tests (ce qu’on veut mesurer)
– l’approche suivie
– les tâches à accomplir et documents à produire
– quand s’arrêter de tester

! Les cas de tests doivent être décrits dans un document pour
pouvoir être inspectés et réutilisés

48
Q

Principe 4
Le testeur doit être
indépendant

A

! Pas tendance à voir ses propres erreurs

! Idéalement: ¹ de l’auteur

! Pratiquement:
– essayer d’être le moins biaisé possible
– “changer de chapeau”:
constructeur ® destructeur

49
Q

Autres principes de tests
Si possible faire tester par un autre développeur.

Ne jamais partir du principe qu’un test ne
trouvera pas d’erreurs.

Examiner et sauvegarder les rapports de tests.

A la moindre modification ne pas hésiter à refaire
les tests (test de non régression).

A