Vous êtes sur la page 1sur 24

Test et Qualité du logiciel

–TP 1 –
TP 1 : Introduction

Etudiants concernés
Faculté/Institut Département Niveau Spécialité

Nouvelles technologies TLSI Master ILSI

Université Constantine 2 2023/2024. Semestre 2


Résumé

Prérequis
langage java
connaissance en programmation
connaissance programmation orientée objet

Objectif du cours
L’objectif est d’apprendre le développement piloté par les tests et
d’écrire un ensemble de cas d'échec avant d'écrire le code de
production lui-même. Si c’est fait correctement, à la fin de cette
matière, les étudiants devraient être en mesure de développer des
systèmes logiciels suivant une approche orientée objet et peuvent
écrire des logiciels qui répondent aux attentes des clients et présentent
moins de défauts.

Université Constantine 2 2
Introduction

Université Constantine 2 3
Introduction
Construire un logiciel

Les programmeurs apprennent très vite que l'écriture de


logiciels est difficile et sujette aux erreurs.
Les projets de logiciels échouent parce que les équipes sont
incapables de faire face à la complexité des logiciels.
En conséquence, le projet ne respecte pas les délais, coûte
beaucoup plus cher que prévu et n'apporte pas la valeur
commerciale escomptée.
La courte durée de vie de la programmation de logiciels
permet d'observer de multiples processus de développement
de logiciels et de découverte. Nous avons appris que, comme
tout autre processus évolutif, les logiciels évoluent au fil du
temps. Nous devons donc nous adapter au changement
plutôt que de nous en tenir à un plan strict.

Université Constantine 2 4
Introduction
Construire un logiciel

Le développement est un processus de collaboration ;


beaucoup d’individus travaillent sur différentes parties du
logiciel pour construire quelque chose qui répond aux
besoins des clients.
Différents individus jouent différents rôles de manière
itérative pour déterminer l’avenir d’un produit.
Les organisations adoptent le processus de développement
logiciel agile pour les aider à faire face aux exigences
commerciales en constante évolution. Comme on dit, « la
seule constante est le changement ».

Université Constantine 2 5
développement piloté par les tests

Université Constantine 2 6
Introduction
développement piloté par les tests

Le développement piloté par les tests (DPT) est l'une des


pratiques du développement agile que beaucoup de
développeurs utilisent sous une forme ou une autre.

Le principe de la DPT est le suivant:


écrire un cas d'échec avant d'écrire le code de production lui-même
(code du logiciel).
Si c’est fait correctement, cela peut vous aider à développer des
logiciels
qui répondent aux attentes des clients.
qui présentent moins de défauts.

Université Constantine 2 7
développement piloté par les tests
DPT

Il faut travailler selon des cycles de développement courts et progressifs, ce


qui nous permet d'obtenir un retour d'information rapide sur nos progrès. Le
DPT nous oblige à écrire un test d'échec avant d'écrire le code de production.

Le processus complet se présente comme suit :


1. Ajouter un test pour la nouvelle fonctionnalité ou le nouveau
comportement.
2. Le voir échouer.
3. Écrire suffisamment de code pour que le test réussisse.
4. Assurez-vous que tous les tests précédents réussissent également.
5. Reformulez le code.
6. Répétez jusqu'à ce que vous ayez terminé.

Université Constantine 2 8
développement piloté par les tests
DPT

• Le DPT nous donne un retour d'information rapide qui nous indique que
nous allons dans la bonne direction.
• Le DPT nous aide à atteindre deux objectifs importants :
✓ Détecter les erreurs de régression.
✓ Rendre la conception du système simple.

Université Constantine 2 9
Niveaux de test

Université Constantine 2 10
Niveaux de test
Tests unitaires, Test d'intégration et Test d'acceptation

Avec le DPT , vous avez des tests de différents niveaux. Votre test doit être
composé de tests de chacun des niveaux suivants. Chacun de ces niveaux
se concentre sur un aspect différent du code et fournit un retour
d'information différent.
• Tests unitaires : vous testez des composants logiciels individuels pour
vérifier si l'unité individuelle fait la bonne chose en isolation.
• Test d'intégration : vous testez plusieurs unités ensemble pour vérifier
s'ils fonctionnent correctement en tant qu'unité.
• Test d'acceptation : vous testez le système complet pour vérifier s'il
fonctionne selon les attentes des utilisateurs. On parle souvent de tests
fonctionnels.

Université Constantine 2 11
Niveaux de test

Lent $$$$
Le schéma suivant illustre une
pyramide de tests. Elle montre Acceptation
que vous devriez avoir beaucoup
plus de tests unitaires que de
tests fonctionnels ou
d'intégration. Intégration
Ce TP se portera principalement
sur les tests unitaires , mais vous
devriez également vous Unité
familiariser avec les deux autres
types de tests. Rapide $

Université Constantine 2 12
Avantages des tests unitaires

Université Constantine 2 13
Avantages des tests unitaires

• Les tests unitaires ne sont plus un exercice de post-développement. Il


est tout aussi important que l'écriture du code du logiciel et doit être
fait en amont.
• Il améliore la productivité de l'équipe en lui fournissant des bases
solides.

Université Constantine 2 14
Avantages des tests unitaires

• voici quelques avantages qu’offrent les tests unitaires:


✓ Détermine les spécifications
✓ Détection précoce des erreurs
✓ Soutiens la maintenance
✓ Améliore la conception
✓ Production de la documentation sur les produits

Université Constantine 2 15
Caractéristiques des tests unitaires

• Les tests doivent être rédigés avec la même attention et la même clarté
que le code du logiciel. Nous devons remanier les cas de tests afin qu’ils
restent simples et corrects.
• Les tests de haute qualité sont la clé du succès. C’est une chose d’avoir
des tests, et une autre d’avoir des tests de haute qualité. Ils doivent
présenter plusieurs caractéristiques pour rester utiles tout au long de
leur vie. Ils doivent être:

Lisibles, rapides, indépendants et isolés, corrects et répétables.

Université Constantine 2 16
JUnit

Université Constantine 2 17
Introduction de JUnit

JUnit, développé par Kent Beck et Erich Gamma, est l'un des tests unitaires
les plus populaires pour les développeurs Java. Il était à l'origine basé sur
SUnit, un cadre de test unitaire écrit en Smalltalk (développé par Kent
Beck). La première version de JUnit a été publiée en 1997. Elle est devenue
depuis , la norme de facto, adoptée dans de nombreuses langues et par de
nombreux outils. Il existe plusieurs versions de JUnit, mais dans ce TP on se
base toujours sur la dernière version.

Université Constantine 2 18
Junit 5

JUnit 5 est une réécriture complète de JUnit en Java 8. Vous avez besoin de
Java 8 pour utiliser JUnit 5. Il est entièrement repensé, en surmontant les
erreurs et les limitations des versions précédentes de JUnit. Cela ne signifie
pas que les tests écrits dans JUnit 3 et JUnit 4 ne fonctionneront pas avec
JUnit 5. L'équipe JUnit a fait en sorte que JUnit 5 soit rétrocompatible, de
sorte que vous pouvez également effectuer vos anciens tests JUnit avec ce
logiciel. JUnit 5 est compatible avec JUnit 3.8 et les versions supérieures. Il
est composé de trois sous-projets. Chacun d’eux comporte plusieurs
modules, que nous examinerons plus tard.

Université Constantine 2 19
Sous-projets de JUnit 5
JUnit 5 est composé de trois sous-projets. Chacun de ces sous-projets comporte plusieurs
modules:

Plate-forme JUnit
Il fournit une base pour le lancement de cadres de test JVM (Java Virtual Machine). Cela
comprend une API TestEngine qui peut être utilisée pour développer un cadre de test pour
l'exécution de la Platform JUnit. Il fournit également une ConsoleLauncher qui permet de
construire des outils comme Gradle et Maven.

JUnit Jupiter
Il fournit le nouveau modèle de programmation pour les tests d'écriture. De plus, le nouveau
mécanisme d'extension fait partie de ce sous-projet. Il met en œuvre l'API TestEngine définie
par JUnit Platform afin que les tests JUnit 5 puissent être exécutés.

JUnit Vintage
Il s'agit d'une implémentation de TestEngine pour l'exécution des tests JUnit 3 et JUnit 4.

Université Constantine 2 20
Niveaux de test

L'architecture de JUnit 5
ressemble à celle du schéma
suivant. JUnit 5 a remplacé le
concept de runners par l'engine.
Ainsi, au milieu, il y a une API de
l'engine qui est implémentée à la
fois pour l'API de JUnit 4 et de
JUnit 5.
Cela vous permet d'exécuter des
tests écrits en utilisant
différentes versions de JUnit. Des
outils comme Gradle, IntelliJ ou
Eclipse utilisent l'API du lanceur
(launcher).
Vos tests dans ce TP dépendront
de l'API de JUnit 5

Université Constantine 2 21
Déroulement du TP en ligne

Université Constantine 2 22
Quelques liens utiles

Télécharger Eclipse:
https://www.eclipse.org/downloads/download.php?file=/oomph/epp/
2020-09/R/eclipse-inst-jre-win64.exe&mirror_id=1090
Java 8:
https://www.oracle.com/java/technologies/javase/javase-jdk8-
downloads.html

Université Constantine 2 23
Références

Gulati, S., & Sharma, R. (2017). Java Unit Testing with JUnit 5. Delhi.
Abalmasova, D. Y. USING OF JUNIT FRAMEWORK FOR AUTOMATION UNIT
TESTING IN THE CONTEXT OF TEST-DRIVEN DEVELOPMENT. Zbiór
artykułów naukowych recenzowanych., 23.
Venkatesan, P. K., Gade Rozario, R., & Fiaidhi, J. (2020). Junit framework
for unit testing. pdf.

Université Constantine 2 24

Vous aimerez peut-être aussi