![Page 1: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/1.jpg)
Test logiciel et Mocks
Test logiciel et Mocks
Clémentine Nebut
LIRMM / Université de Montpellier
8 Novembre 2016
![Page 2: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/2.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
1 Courte introduction au test logicielC'est quoi le test ?
Dé�nitionLe test et les autres procédés de V&V
Quels tests pour quelles erreurs ?Les techniquesLes types classiques de test
Processus, vocabulaire et di�cultés
2 Doublures de test, Mockito et PowerMockLes doublures de testMockitoPowerMock
![Page 3: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/3.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Sommaire
1 Courte introduction au test logicielC'est quoi le test ?
Dé�nitionLe test et les autres procédés de V&V
Quels tests pour quelles erreurs ?Les techniquesLes types classiques de test
Processus, vocabulaire et di�cultés
2 Doublures de test, Mockito et PowerMockLes doublures de testMockitoPowerMock
![Page 4: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/4.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
C'est quoi le test ?
Sommaire
1 Courte introduction au test logicielC'est quoi le test ?
Dé�nitionLe test et les autres procédés de V&V
Quels tests pour quelles erreurs ?Les techniquesLes types classiques de test
Processus, vocabulaire et di�cultés
2 Doublures de test, Mockito et PowerMockLes doublures de testMockitoPowerMock
![Page 5: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/5.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
C'est quoi le test ?
Le test
Principe
Essayer pour voir si ça marche ...
![Page 6: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/6.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
C'est quoi le test ?
Essayer ...
Mais au fait comment ça marche ?
Démarrage du programme ?Interface graphique ? Textuelle ?
Quelles entrées ?
Données requises ?
Qu'est-il possible de faire ?
Si on veut tout essayer, il faut savoir ce qu'il y a à essayer !Quels enchaînements nécessaires pour essayer unefonctionnalité ?
![Page 7: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/7.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
C'est quoi le test ?
... pour voir ...
Que peut-on voir ?
une couleur dans une interface graphique ?un a�chage dans une fenêtre ?la valeur d'une variable ?le résultat d'un calcul intermédiaire ?
Notion d'observabilité
![Page 8: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/8.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
C'est quoi le test ?
... si ça marche.
Comment sait-on que ça marche ?
au fait, il doit faire quoi ce programme ?
notion de spéci�cations
à partir de ce que l'on peut voir, déterminer si ça marche
et si on ne voit pas ce que l'on veut ?
Et si ça ne marche pas ?
Diagnostique
Et si ça a l'air de marcher ...
est-on sûr que ça marche vraiment ?
notion de con�ance 6=certitude
et si c'étaient les tests qui étaient mauvais ou insu�sants ?
qualité des tests, critère d'arrêt
![Page 9: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/9.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
C'est quoi le test ?
Vers une dé�nition ...
Dé�nition de Myers, 1979
Testing is the process of executing a program with the intent of�nding errors. [G. Myers. The Art of Software Testing. 1979]
Reste à savoir ce qu'on teste et ce qu'est une erreur ...
![Page 10: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/10.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
C'est quoi le test ?
Qu'est ce qu'on teste ?(quelles propriétés)
Di�érentes propriétés à tester
satisfaction des fonctionnalités requises
qualité de service (temps de réponse, utilisation mémoire, ...)
robustesse
sûreté de fonctionnement
utilisabilité
On teste vis à vis d'une spéci�cation !
Pour déterminer si on a détecté un problème, toutes les propriétésdoivent être spéci�ées
![Page 11: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/11.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
C'est quoi le test ?
Le verdict ...
![Page 12: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/12.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
C'est quoi le test ?
Des alternatives ?
Le test et les méthodes formelles
On fait des spéci�cations formelles (au fait, c'est quoi ?), puis :
on dérive automatiquement le codeou on écrit un code et on le prouve correct
![Page 13: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/13.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
C'est quoi le test ?
Des alternatives ?
Le test et les méthodes formelles
Mais des problèmes de fond ...
adéquation entre les spéci�cations et le cahier des charges ?on prouve des propriétés, on ne prouve pas dans l'absolu ... Etsi on a oublié des propriétés à prouver ?
Et des problèmes plus terre à terre ...
formation d'experts en méthodes formellescoût de mise en placeet quand on modi�e le cahier des charges, il faut tout refairepas de méthodes, d'outils de développement adaptés auxméthodes formelles
![Page 14: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/14.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
C'est quoi le test ?
Test et V&V
V&V = Véri�cation et Validation
Le test est une technique particulière de V&V
Si le test est indispensable dans la quasi-totalité des projets, iln'est pas l'unique procédé de V&V à mettre en ÷uvre. Parexemple :
revues techniquesanalyseurs statiques
![Page 15: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/15.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Quels tests pour quelles erreurs ?
Sommaire
1 Courte introduction au test logicielC'est quoi le test ?
Dé�nitionLe test et les autres procédés de V&V
Quels tests pour quelles erreurs ?Les techniquesLes types classiques de test
Processus, vocabulaire et di�cultés
2 Doublures de test, Mockito et PowerMockLes doublures de testMockitoPowerMock
![Page 16: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/16.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Quels tests pour quelles erreurs ?
Di�érents tests
Plusieurs niveaux (échelles)
Unitaire
Intégration
Système
Acceptation (ou recette)
Di�érents niveaux d'accessibilité
Test boîte noire (souvent fonctionnel)
Test boîte blanche (souvent structurel)
Test boîte grise ?
Plusieurs types classiques
test fonctionnel
test de non-régression
test de montée en charge
![Page 17: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/17.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Quels tests pour quelles erreurs ?
Boîte blanche et boîte noire
![Page 18: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/18.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Quels tests pour quelles erreurs ?
Le test fonctionnel
Technique en général boîte noire
On se base sur un modèle du programme issu des spéci�cations
informelles (ex. description en langage naturel)semi-formelles (ex. modèles UML)formelles (machines B, IOLTS, ...)
![Page 19: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/19.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Quels tests pour quelles erreurs ?
Le test structurel
Technique boîte blanche
On se base sur un modèle du code source du programme
Le modèle est une représentation de la structureOn utilise beaucoup la théorie des graphes pour couvrir lemodèle notamment
![Page 20: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/20.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Quels tests pour quelles erreurs ?
Techniques et échelles
![Page 21: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/21.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Quels tests pour quelles erreurs ?
Complémentarité fonctionnel / structurel
function sum (x,y : integer) : integer;
begin
if (x = 600) and (y = 500) then sum := x-y
else sum := x+y;
end
Une technique fonctionnelle a peu de chances de trouverl'erreur
Une technique structurelle trouvera facilement la donnée detest (x=600, y=500)
![Page 22: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/22.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Quels tests pour quelles erreurs ?
Complémentarité fonctionnel / structurel
prod(int i, inj)
int k;
if (i==2)}{
k:=i<<1;//décalage à gauche, multiplication par 2
else
faire i fois l'addition de j
return k;
Spéci�cation : renvoie le produit de i par j
Fonctionnel
On choisit (i=0,j=0)->0 et (i=10, j=100)->1000 ��> OK
Structurel
On choisit au moins une donnée qui passe par le cas i=2 :(i=2,j=0)->1 ��> NOK
![Page 23: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/23.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Quels tests pour quelles erreurs ?
Complémentarité fonctionnel / structurel
prod(int i, inj)
int k;
if (i==2)}{
k:=i<<1;//décalage à gauche, multiplication par 2
else
faire i fois l'addition de j
return k;
Spéci�cation : renvoie le produit de i par j
Fonctionnel
On choisit (i=0,j=0)->0 et (i=10, j=100)->1000 ��> OK
Structurel
On choisit au moins une donnée qui passe par le cas i=2 :(i=2,j=0)->1 ��> NOK
![Page 24: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/24.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Quels tests pour quelles erreurs ?
Complémentarité fonctionnel / structurel
prod(int i, inj)
int k;
if (i==2)}{
k:=i<<1;//décalage à gauche, multiplication par 2
else
faire i fois l'addition de j
return k;
Spéci�cation : renvoie le produit de i par j
Fonctionnel
On choisit (i=0,j=0)->0 et (i=10, j=100)->1000 ��> OK
Structurel
On choisit au moins une donnée qui passe par le cas i=2 :(i=2,j=0)->1 ��> NOK
![Page 25: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/25.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Quels tests pour quelles erreurs ?
Le test fonctionnel
On cherche à savoir
si toutes les fonctionalités requises sont présentes ...... et correctes
![Page 26: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/26.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Quels tests pour quelles erreurs ?
Le test de robustesse
On cherche à savoir si le système est robuste
Par exemple,
on entre des entrées invalideson ferme violemment le programmeon jette l'ordinateur par la fenêtre (test militaire)
Et on regarde comment le programme se comporte ...
![Page 27: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/27.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Quels tests pour quelles erreurs ?
Le test de non-régression
On cherche à savoir si on n'a pas perdu des propriétés en coursde route ...
après un ajout de fonctionnalitéaprès la correction d'une erreuraprès une optimisation
En général, on relance les tests qui passaient précédemment
d'où l'intérêt de les avoir stockéset d'avoir automatisé l'exécution !
![Page 28: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/28.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Processus, vocabulaire et di�cultés
Sommaire
1 Courte introduction au test logicielC'est quoi le test ?
Dé�nitionLe test et les autres procédés de V&V
Quels tests pour quelles erreurs ?Les techniquesLes types classiques de test
Processus, vocabulaire et di�cultés
2 Doublures de test, Mockito et PowerMockLes doublures de testMockitoPowerMock
![Page 29: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/29.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Processus, vocabulaire et di�cultés
[label=proc]Processus
![Page 30: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/30.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Processus, vocabulaire et di�cultés
Vocabulaire
Oracle
Aussi appelé fonction d'oracle
Permet de déterminer si le test a réussi ou échoué
ie si le résultat obtenu est celui attendu
Critère d'arrêt
Permet de déterminer si on a �ni de tester
![Page 31: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/31.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Processus, vocabulaire et di�cultés
Les di�cultés
La génération des données de test
Comment les choisir ? Sur quels critères ?
Si on en choisit trop, c'est long / cher !
Il existe des techniques de génération automatique
L'oracle
Comment savoir si ce qu'on a obtenu est correct ?
faire le calcul à la main ?utiliser un autre programme ?en théorie : utiliser la spéci�cation ...en pratique : utiliser les propriétés du programme, versionsantérieure
![Page 32: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/32.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Processus, vocabulaire et di�cultés
Les di�cultés
Le critère d'arrêt
Comment savoir quand il n'est plus nécessaire de tester ?
on ne trouve plus d'erreurs depuis 5 minutes ?on n'a plus de temps ?on a passé 10h à tester ?on a exécuté une fois chaque intruction ?on a fait au moins 3 tours dans chacune des boucles ?
![Page 33: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/33.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Processus, vocabulaire et di�cultés
Bonnes pratiques
Conserver les tests, ne jamais les jeter !
Automatiser au maximum :
la génération de testl'exécutionl'oracle
![Page 34: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/34.jpg)
Test logiciel et Mocks
Courte introduction au test logiciel
Processus, vocabulaire et di�cultés
Les outils
Générateurs de test
pas toujours avec oracle, à partir de di�érentes formes despéci�cation
Les pilotes de test
permettent d'automatiser le lancement des tests, de créer desrapports de test
Frameworks xUnit
Outils de gestion de doublures de test
Outils de mesure de couverture du code
Outils de monitoring
![Page 35: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/35.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Sommaire
1 Courte introduction au test logicielC'est quoi le test ?
Dé�nitionLe test et les autres procédés de V&V
Quels tests pour quelles erreurs ?Les techniquesLes types classiques de test
Processus, vocabulaire et di�cultés
2 Doublures de test, Mockito et PowerMockLes doublures de testMockitoPowerMock
![Page 36: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/36.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Les doublures de test
Sommaire
1 Courte introduction au test logicielC'est quoi le test ?
Dé�nitionLe test et les autres procédés de V&V
Quels tests pour quelles erreurs ?Les techniquesLes types classiques de test
Processus, vocabulaire et di�cultés
2 Doublures de test, Mockito et PowerMockLes doublures de testMockitoPowerMock
![Page 37: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/37.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Les doublures de test
Qu'est-ce qu'une doublure de test ?
La dé�nition d'objets factices se substituant lors du test auxobjets réels
Des objets qui remplacent des objets réels pour faciliter le test(des objets) de leur environnement
Ces objets peuvent être écrits à la main (leur classe) ougénérés.
![Page 38: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/38.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Les doublures de test
Pourquoi des doublures de test ?
L'environnement du SUT est complexe ou coûteux à mettre enplace (environnement matériel, base de données, ...).
Mise en place de situations exceptionnelles di�ciles àdéclencher (out of memory, ...).
L'environnement du SUT n'est pas encore disponible ou�abilisé.
Le SUT appelle du code lent.
Le SUT fait appel à des méthodes non déterministes (fonctionde l'heure, de nombres générés aléatoirement, ...)
![Page 39: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/39.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Les doublures de test
Types de doublures
Dummy
Stub
Fake
Spy
Mock
Pas de dé�nition consensuelle ... Dans la suite, dé�nitionsprincipalement inspirées de celles de Martin Fowler.
![Page 40: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/40.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Les doublures de test
Dummy
Objets vides qui n'ont pas de fonctionalités implémentées
Les dummies sont �transmis� mais jamais réellement utilisés.
En général ils sont utilisés pour remplir des listes deparamètres.
![Page 41: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/41.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Les doublures de test
Fake
Le fake implémente de manière simpliste le comportementattendu d'une classe.
Le fake est plus générique que le stub : il n'est pas spéc��quea un test.
Le fake met en place des raccourcis qui le rendent inutilisableen production
![Page 42: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/42.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Les doublures de test
Spy
Un spy est une doublure capable de véri�er l'utilisation qui enest faite.
Par exemple : appel au moins une fois de telle méthode avectel paramètre.
![Page 43: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/43.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Les doublures de test
Bouchons de test (stubs)
Un bouchon de test est une classe utilisée pour en simuler uneautre.
Il fournit des réponses pré-dé�nies aux appels réalisés lors dutest.
Le bouchon de test est écrit grâce à la connaissance de laclasse à simuler (boîte blanche).
![Page 44: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/44.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Les doublures de test
Doublure et simulacre de test (mocks)
Les mocks sont des objets pré-programmés avec despré-suppositions qui forment la spéci�cation des appels qu'ilssont censés recevoir.
Le testeur con�gure le simulacre de manière à lui donner lecomportement souhaité.
Le code du test met en place le simulacre, le con�gure, puisl'utilise pour paramétrer le SUT.
Le mock permet de réaliser une véri�cation comportementale.Par exemple que telle méthode a bien été appelée.
Le mock est proche d'un stub espion.
![Page 45: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/45.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Mockito
Sommaire
1 Courte introduction au test logicielC'est quoi le test ?
Dé�nitionLe test et les autres procédés de V&V
Quels tests pour quelles erreurs ?Les techniquesLes types classiques de test
Processus, vocabulaire et di�cultés
2 Doublures de test, Mockito et PowerMockLes doublures de testMockitoPowerMock
![Page 46: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/46.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Mockito
Mockito
Outil permettant de générer des doublures
Le testeur peut donner au mock facilement le comportementrecherché.
Le testeur peut facilement faire une véri�cationcomportementale après exécution (le côté espion du mock)
![Page 47: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/47.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Mockito
Principe général
Création d'un mock : méthode mock ou annotation @mock,nécessite la classe ou l'interface à mocker
Mockito, crée moi un mock pour cette classe ou cette interface
Description du comportement du mock : méthode when
Mockito, quand le mock recevra tel appel, alors il faut fairececi
Véri�cations comportementales : méthode vérify
Mockito, véri�e que telle méthode a bien été appelée au moinsune fois avec tel paramètre
Pour spéci�er le comportement le véri�er : des matchers
![Page 48: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/48.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Mockito
Création d'un mock
1 impo r t s t a t i c org . mock i to . Mockito . ∗ ;2 . . .3 C mock1 =mock (C . c l a s s ) ; // C e s t une c l a s s e ou une i n t e r f a c e4 C mock2=mock (C . c l a s s , "nom" ) ;5 @Mock C mock3 ;6 @Mock(name="nom2" ) C mock4 ;
Par défaut :
pour les numériques :0
pour les booléens : false
pour les collections : collections vides
![Page 49: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/49.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Mockito
Spéci�cation du comportement du mock
Cas d'une méthode avec retour ; valeur unique
1 i n t e r f a c e I { i n t m() ; }2 . . .3 @Mock I mock ;4 when (mock .m( ) ) . thenReturn (42) ;
Cas d'une méthode avec retour ; valeurs successives
1 i n t e r f a c e I { i n t m() ; }2 . . .3 @Mock I mock ;4 when (mock .m( ) ) . thenReturn (42 , 43 , 44) ;
![Page 50: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/50.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Mockito
Spéci�cation du comportement du mock
Cas d'une méthode avec paramètres
1 i n t e r f a c e I { i n t m( i n t i ) ; }2 . . .3 @Mock I mock ;4 when (mock .m(1) ) . thenReturn (42) ;5 when (mock .m(42) ) . thenReturn (1 ) ;
Cas d'une méthode avec retour ; avec levée d'exception
1 i n t e r f a c e I { i n t m() th rows E ;}2 . . .3 @Mock I mock ;4 when (mock .m( ) ) . thenThrow ( new E( ) ) ;
![Page 51: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/51.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Mockito
Spéci�cation du comportement du mock
Cas d'une méthode avec paramètres ; combinaison de then
1 i n t e r f a c e I { i n t m( i n t i ) th rows E ;}2 . . .3 @Mock I mock ;4 when (mock .m(1) ) . thenReturn (42) . thenthrow ( new E( ) ) ;5 when (mock .m(42) ) . thenReturn (1 ) . thenReturn (99) ;
Cas d'une méthode sans retour ; levée d'exception
1 i n t e r f a c e I { v o i d m( i n t i ) th rows E ;}2 . . .3 @Mock I mock ;4 doThrow (New E( ) . when (mock .m(1) ) ;
![Page 52: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/52.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Mockito
Véri�cation du comportement : verify
Une méthode est appelée 3 fois
1 v e r i f y (mock1 , t imes (3 ) ) .m( ) ;
Une méthode est appelée au moins/au plus 3 fois
1 v e r i f y (mock1 , atLeastOnce ( ) ) .m( ) ;2 v e r i f y (mock1 , atMost (3 ) ) .m( ) ;
Une méthode n'est jamais appelée
1 v e r i f y (mock1 , neve r ( ) ) .m( ) ;
![Page 53: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/53.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Mockito
Véri�cation du comportement : verify
Ordre d'appel
1 InOrde r o r d r e =inOrde r (mock1 , mock2 ) ;2 o r d r e . v e r i f y (mock1 ) .m( ) ;3 o r d r e . v e r i f y (mock2 ) .m( ) ;
![Page 54: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/54.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Mockito
Mock et spy
On peut espionner un objet réel ...
... et éventuellement en altérer le comportement
Par exemple pour juste mocker une méthode
Avec un spy, le comportement par défaut est celui de la classede l'objet espionné
Spy
1 L i n k edL i s t <St r i ng> l=new L i n k edL i s t <St r i ng >() ;2 L i n k edL i s t <St r i ng> spy=spy ( l i s t ) ;3 spy . add ( ` ` a j o u t 1 ' ' ) ;4 spy . add ( ` ` a j o u t 2 ' ' ) ;5 v e r i f y ( spy ) . add ( " a j ou t 1 " ) ;6 when ( spy . i sEmpty ( ) ) . thenReturn ( f a l s e ) ;7 a s s e r t F a l s e ( spy . i sEmpty ( ) ) ;
![Page 55: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/55.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Mockito
Limites et remarques
Limites
On ne peut pas mocker les méthodes privée, �nal et ou static(cfPowerMock)
On ne peut pas mocker les méthodes equals et hashcode(utilisées en interne par Mockito)
On ne peut pas mocker les classes �nal ou anonymes
Remarques
Un comportement non utilisé du mock ne provoque pasd'erreur
Verify : si la véri�cation échoue, le test échoue.
![Page 56: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/56.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
Mockito
Argument matchers
Permettent une spéci�cation de paramètres �exible dans leswhen
Ne plus utiliser Matchers (deprecated pour cause de con�it denommage avec hamcrest)
1 p u b l i c i n t e r f a c e I { p u b l i c i n t m( i n t i ) ; }2 @Mock I mock ;3 when (mock .m( any I n t ( ) ) ) . thenReturn (42) ;4 a s s e r t E q u a l s (mock .m(12) , 42) ;
autres argument matchers : eq, contains, ...
limitation : si on utilise des argument matchers, tous lesarguments doivent être des argument matchers.
![Page 57: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/57.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
PowerMock
Sommaire
1 Courte introduction au test logicielC'est quoi le test ?
Dé�nitionLe test et les autres procédés de V&V
Quels tests pour quelles erreurs ?Les techniquesLes types classiques de test
Processus, vocabulaire et di�cultés
2 Doublures de test, Mockito et PowerMockLes doublures de testMockitoPowerMock
![Page 58: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/58.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
PowerMock
PowerMock
Framework de test permettant de contourner les limitationsclassiques des frameworks de mock comme Mockito.
Avec PowerMock, on peut :
mocker des méthodes privées, statiques, et/ou �nalmocker des classes �nal...
�Please note that PowerMock is mainly intended for peoplewith expert knowledge in unit testing. Putting it in the handsof junior developers may cause more harm than good.�
![Page 59: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/59.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
PowerMock
Préparation de la classe de test et de la classe mockée
1 package tpmocks ;2 impo r t org . j u n i t . A s s e r t ;3 impo r t org . j u n i t . Test ;4 impo r t org . j u n i t . r unne r . RunWith ;5 impo r t org . mock i to . Mockito ;6 impo r t org . powermock . a p i . mock i to . PowerMockito ;7 impo r t org . powermock . co r e . c l a s s l o a d e r . a nno t a t i o n s . Prepa reForTes t ;8 impo r t org . powermock . modules . j u n i t 4 . PowerMockRunner ;910 @RunWith ( PowerMockRunner . c l a s s )11 @PrepareForTest ({A . c l a s s })12 p u b l i c c l a s s MesTestsPowerMockSurA { . . . }
![Page 60: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/60.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
PowerMock
Mock d'une méthode �nale
1 p u b l i c c l a s s A{ f i n a l S t r i n g j e S u i s F i n a l ( ) { r e t u r n "AF" ; } . . . }2 . . .3 @Test4 p u b l i c v o i d mockFina lTest ( ) {5 A mock = PowerMockito . mock (A . c l a s s ) ;6 f i n a l S t r i n g r e su l tMock = " v a l e u r mockee" ;7 Mockito . when (mock . j e S u i s F i n a l ( ) ) . thenReturn ( r e su l tMock ) ;8 // on v e r i f i e que l a methode f i n a l a b i e n e t e mockee9 As s e r t . a s s e r t E q u a l s (mock . j e S u i s F i n a l ( ) , r e su l tMock ) ;
![Page 61: estT logiciel et Mocksdony/enseig/IL/testEtMock.pdf · estT logiciel et Mo cks Courte intro duction au test logiciel 1 Courte introduction au test logiciel C'est quoi le test? Dé](https://reader035.vdocuments.mx/reader035/viewer/2022071215/604611fcea7149605f651843/html5/thumbnails/61.jpg)
Test logiciel et Mocks
Doublures de test, Mockito et PowerMock
PowerMock
Mock d'une méthode statique
1 p u b l i c c l a s s A{ s t a t i c S t r i n g j e S u i s S t a t i q u e ( ) { r e t u r n "AS" ; } . . . }2 . . .3 @Test4 p u b l i c v o i d mockStat i cTes t ( ) {5 PowerMockito . mockStat i c (A . c l a s s ) ;6 S t r i n g r e su l tMock = " v a l e u r mockee" ;7 Mockito . when (A . j e S u i s S t a t i q u e ( ) ) . thenReturn ( r e su l tMock ) ;8 // on v e r i f i e que l a methode s t a t i q u e a b i en e t e mockee9 As s e r t . a s s e r t E q u a l s (A . j e S u i s S t a t i q u e ( ) , r e su l tMock ) ;10 }