- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette vidéo, je vais répondre à la question que vous vous posez tous,pourquoi doit-on tester notre code ?C'est vraiment quelque chose qui n'est pas forcément évident.
00:00:09 :Quand on commence à écrire du code, généralement, il fonctionne très bienet on se dit qu'on n'a donc pas besoin de créer des tests unitaires,qu'on l'a testé nous-mêmes et que ça fonctionne.
00:00:17 :Donc, quel est l'intérêt de créer des testsqui vont faire ce que l'on fait déjà très bien nous-mêmes ?Eh bien, l'intérêt, c'est quand vous commencez à avoir des programmesqui sont très conséquents.
00:00:26 :Puisque quand on a un petit programme comme celui que je vais vous montrer icipour illustrer mon propos, on peut très bien, effectivement,faire des tests de notre côté, vérifier si ça fonctionneet, généralement, ça fonctionne, on met ça en production et ça suffit.
00:00:39 :Le problème, c'est quand on commence à avoir des dizaines de fichiersqui contiennent des dizaines de fonctions, de classes,là, c'est trop long à chaque fois de faire les tests nous-mêmes.
00:00:47 :On ne peut pas, à chaque fois qu'on va faire une modificationet qu'on pousse notre code en production,tester l'intégralité de notre script.Donc, l'intérêt principal des tests unitaires,c'est d'effectuer tous ces tests que l'on pourrait faire manuellement à notre place.
00:01:01 :Et de ce fait, on va pouvoir, avant de déployer notre code en production,s'assurer qu'il fonctionne toujours comme on le souhaitait.Donc, c'est bien important de comprendre que les tests ne garantissent pasà 100% que votre script va fonctionner à coup sûr.
00:01:15 :Encore une fois, je précise que les tests, ce n'est qu'une façond'automatiser ce que vous pourriez faire vous-même de votre côté.Et donc, de votre côté, si vous ne testez pas tous les cas de figure,il y a certains cas de figure qui pourraient faire planter votre scriptque vous n'aviez pas identifié.
00:01:29 :Donc, les tests ne garantissent pas un script absolument infaillible.C'est juste que les tests unitaires vont nous permettre d'automatiser ces tests.Et donc, comme je vous disais là encore une fois,si on a beaucoup d'éléments à tester, ça va être vraiment beaucoup plus pratiqueet on va ainsi détecter les erreurs beaucoup plus tôt.
00:01:46 :Donc, pour vous montrer tout ça, j'ai ici une petite classe qui est assez basiquequi me permet de créer des comptes en banque avec un identifiant, une balanceet je peux ensuite déposer et récupérer de l'argent depuis ce compte en banque.
00:01:59 :Donc, actuellement, je pourrais effectivement tester mon code à l'intérieur d'un fichier,créer deux comptes en banque avec des identifiants, avec une balance,donc une balance ici positive et une balance négative.
00:02:10 :Et si je lance ce fichier dans PyCharm, ça fonctionne, on n'a aucune erreur.Donc, notre script fonctionne et on pourrait refaire ces tests à chaque fois manuellementet ce script là pourrait très bien être un script utilisé en production.
00:02:22 :Maintenant, imaginons que quelqu'un se joigne à votre équipeet se dise que finalement, ce n'est pas forcément une très bonne idéede pouvoir créer des comptes en banque avec une balance qui soit négative.
00:02:32 :Donc ici, il se dit, moi je vais rajouter quelque chose dans ce code làpuisque je ne veux pas qu'on puisse créer un compte avec une balance négative.
00:02:38 :Donc, il va faire un petit test ici, il va vérifier est-ce que Balance est plus petit que 0et si c'est le cas, il va lever une Error Value Error en disantla balance du compte ne peut être négative, comme ceci.
00:02:50 :Et donc là, si on relance notre script, imaginons qu'on n'ait pas les testset que personne n'ait testé le code qu'on avait ici qui est en production.
00:02:57 :On pousse ce code-ci en production qui est un code très importantqui gère les comptes en banque de nos clients et on lance le scriptet là, ça plante puisque quelqu'un a rajouté cette Value Error,donc cette erreur qui est levée quand on a une balance négative.
00:03:10 :Et donc là, vous voyez que sans les tests et sans tester nous-mêmes notre code,on a une erreur qui a été poussée en production.Si par contre, on a un fichier de test, ça nous permet de repérer ces erreursavant de pousser notre code en production.
00:03:23 :Donc, on aura l'occasion de revenir bien plus en détail sur tout ce que vous voyez ici.Pour l'instant, je vais juste vous montrer à quoi peut ressembler un testet à quel point il va pouvoir nous permettre de détecter ces erreurs en amont.
00:03:34 :Donc, je vais enlever ici ces deux lignes de code.On va revenir à notre code principal qui nous permet de créer des comptesavec des balances qui sont négatives.
00:03:42 :Donc, je reviens dans mon fichier de test et là, j'ai créé donc les deux testsavec une balance positive, une balance négative.Et je teste ici les deux cas de figure.
00:03:50 :Donc, le cas de figure avec mon compte 0,1 qui a une balance de 100et mon compte 0,2 qui a une balance de moins 100.
00:03:56 :Donc, ils correspondent à ces deux comptes en banque.Donc, je vais lancer mon test en cliquant sur la flèche ici.Et là, on a bien les deux tests qui passent puisque les résultatsqu'on a mis dans notre test sont correctement exécutés.
00:04:06 :On s'attendait à avoir un compte avec 100 euros.On a bien 100 euros et ici avec moins 100 euros et on a bien moins 100 euros.
00:04:12 :Donc, nos tests fonctionnent.Maintenant, on revient ici.Quelqu'un a fait cette modification dans le script.Et là, avant de déployer notre code en production pour s'assurerqu'il fonctionne toujours comme prévu.
00:04:23 :Donc, avec ces tests ici qui prévoyaient uniquementqu'on pouvait en fait créer un compte avec une balance positive ou négative.C'est les seuls cas de figure ici qu'on a testés.
00:04:31 :Est-ce que quand on crée un compte avec 100 euros, on a bien 100 euros au final ?Et quand on crée un compte avec moins 100 euros, on a bien moins 100 euros.
00:04:38 :Donc là, ça illustre bien ce que je vous disais tout à l'heure.C'est que nos tests ici, ils font juste vérifier ces deux cas de figure.
00:04:43 :Et donc, le fait d'avoir des tests ne garantit pas que votre code soit infaillible.On pourrait avoir plein de choses qui plantent dans ce cas de figure.
00:04:50 :On pourrait mettre ici dans la balance, par exemple, des chaînes de caractère,des boulets 1, donc des éléments comme ça,qui potentiellement, après, feraient planter notre script sur le deposit et le withdraw.
00:04:59 :Donc là encore, les tests ne garantissent pas que vos scripts seront infaillibles,mais ils vont juste garantir que ce que vous avez testéva toujours fonctionner de la bonne façon.
00:05:07 :Donc là, maintenant que j'ai modifié cette classe,je vais relancer mon test ici.Et là, cette fois-ci, on va avoir une erreur,puisque le test avec le compte en banque de moins 100 ne retourne pas à moins 100,mais retourne une erreur, value error.
00:05:19 :Et c'est ce que va nous dire notre test ici.Il va dire, voilà, on a une erreur, parce que là, on a une value error,alors que nous, on s'attendait à avoir une balance de moins 100.
00:05:27 :Donc là, ça nous permet, avant de déployer le code en production,de venir vérifier pourquoi ce test n'a pas fonctionné,de se dire, ah bah oui, c'est normal.
00:05:34 :Le test ici s'attend à ce qu'on ait moins 100,alors que ici, si j'essaie de créer un compte avec une balance négative,je vais avoir une erreur, value error.
00:05:42 :Donc là, il faudrait modifier mon test, et dans ce cas-ci, par exemple, vérifier.Donc là encore, on aura l'occasion de revenir bien plus en détailsur tout ça dans la suite de la formation.
00:05:50 :Mais là, je pourrais donc vérifier que cette fois-ci, en fait,quand je crée un compte avec une balance de moins 100,eh bien, le test ne va pas fonctionner,et on va avoir une erreur de type value error.
00:06:00 :Donc là, je relance le test.Et cette fois-ci, ça fonctionne.On a modifié nos tests en fonction de ce qu'on avait modifiédans notre fichier, et nos tests fonctionnent.
00:06:09 :Donc là, c'est vraiment une décision à prendre.Ça va vous devoir, en fonction du résultat du test,ce que vous souhaitez faire.Est-ce que vous souhaitez modifier vos testset continuer avec cette implémentation ?
00:06:18 :Vous dire que, effectivement, maintenant,on considère qu'on ne peut pas créer des comptes en banqueavec des valeurs négatives ?Ou alors, vous vous dites que, eh bien non, ces deux lignes de code,je n'avais pas envie qu'elles soient dans mon script.
00:06:28 :Vous allez dire à votre employé qui les a rajoutéesqu'on peut créer des comptes en banque avec des balances négatives.Vous enlevez ces deux lignes de code.
00:06:35 :Vous remettez votre test comme il était auparavant.On n'y touche pas, on laisse notre test comme ça.Et là, on a correctement enlevéce qui causait une erreur dans notre test.
00:06:43 :Et on a identifié ce qui causait l'erreuravant de déployer notre code en production.Voilà un petit exemple.Comme je vous dis, c'est assez simple.
00:06:51 :On aurait pu détecter cette erreur assez facilementen faisant des tests à la main.Mais comme je vous dis, l'intérêt, c'est vraimentquand vous avez des milliers de lignes de codeet que vous ne pouvez pas tout tester,de définir les erreurs potentielles de votre scriptavec les tests unitaires.
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.