Académique Documents
Professionnel Documents
Culture Documents
–TP 1 –
TP 1 : Introduction
Etudiants concernés
Faculté/Institut Département Niveau Spécialité
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
Université Constantine 2 4
Introduction
Construire un logiciel
Université Constantine 2 5
développement piloté par les tests
Université Constantine 2 6
Introduction
développement piloté par les tests
Université Constantine 2 7
développement piloté par les tests
DPT
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
Université Constantine 2 14
Avantages des tests unitaires
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:
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