Trending

#SoftwareCraftsmanship

Latest posts tagged with #SoftwareCraftsmanship on Bluesky

Latest Top
Trending

Posts tagged #SoftwareCraftsmanship

Thinking Beyond Syntax: The Art of Code
Thinking Beyond Syntax: The Art of Code YouTube video by Manning Publications

Thinking Beyond Syntax: The Art of Code โ€” AI can generate code, but humans give it intent, taste, and meaning.
๐Ÿ‘‰ hubs.la/Q042g7yP0
๐Ÿ“˜ Save 40%: WATCHBANAS40
www.youtube.com/watch?v=Fd_p...
#Java #SoftwareCraftsmanship #CleanCode #TheArtOfCode #ManningBooks #IA @manning.com

3 2 0 0
Video

Behind every line of code, thereโ€™s more than logic.
Thereโ€™s judgment, creativityโ€ฆ and a bit of craft โœจ
www.manning.com/books/the-ar...

#SoftwareCraftsmanship #CodeQuality #DevLife

2 1 0 0
Post image

Ravie dโ€™annoncer que je participerai ร  @mixitconf.org ๐ŸŽ‰
Merci๐Ÿ’™au comitรฉ de sรฉlection dโ€™avoir choisi mon talk
Il รฉtait une fois le code : du Clean Code au Narrative Code
Hรขte de partager et dโ€™รฉchanger autour du craft et de la qualitรฉ du code.

#MiXiT #SoftwareCraftsmanship #CleanCode #CodeQuality

3 1 0 0
Preview
The Art of Code - Sandrine Banas Software development is an inherently creative activity that takes technical skill as well as artistry and craftsmanship. This unique book shows you how to improve the performance of your applications...

First post here ๐Ÿ‘‹
Iโ€™m the author of The Art of Code (Manning), a book on modern software craftsmanship and human judgment in the age of AI. Happy to join the conversation and learn with you! ๐Ÿ’™
www.manning.com/books/the-ar...
#SoftwareCraftsmanship #SoftwareEngineering #Developers #HumanJudgment

4 1 0 0
Post image

#GeeCON is now open for CFP submissions for the 2026 edition, happening on May 14โ€“15! Step in, share your story, and inspire the community โ€” submit your talk proposal on #Java, #AI, #SoftwareEngineering, #Microservices, #Cloud, #SoftwareCraftsmanship, or #Agile. 2026.geecon.org/cfp/

6 3 0 0
Preview
The Timeless Habits of Effective Remote Teams In April 2020, just a few weeks into the COVID-19 pandemic, George and I revisited a presentation we had given initially around 2010 at the Houston TechFest. At that time, everyone was suddenly worโ€ฆ

15 years later, remote teamwork still runs on empathy, connection, and good habits โ€” not tools.
Just rewatched a 2020 convo George & I had about our old 2010 talk.
Still true in 2025.
๐Ÿง  Read & watch: lassala.net/2025/11/05/t...

#softwarecraftsmanship #teams #communication

0 0 0 0

"Every line of code represents an ethical and moral decision."
โ€”Robert C. Martin (โ€œUncle Bobโ€), from the chapter "Who Are We?" in We, Programmers: A Chronicle of Coders from Ada to AI
#CodeEthics #SoftwareCraftsmanship #UncleBob #WeProgrammers

1 0 0 0
Post image

Nebraska.Code() Breakout Sessions start Thursday July 24th and run through Friday July 25th!

nebraskacode.amegala.com

#CareerProgression #CloudComputing #DevOps #TechTalks #EmergingTechnology #PracticalAgile #FrontEndDevelopment #SoftwareCraftsmanship #AI #Nebraska #TechnologyConference

1 1 0 0
Post image

NEXT WEEK is Nebraska.Code()!
Join us for the largest software development conference in the Heartland.

nebraskacode.amegala.com

#softwareplanning #DevOps #development #deployment #CareerProgression #FrontEnd #CloudComputing #EmergingTech #Agile #SoftwareCraftsmanship #AI #Nebraska

2 1 0 0
Post image

THREE DAYS LEFT until Nebraska.Code()!

nebraskacode.amegala.com

#Frontend #OpenSource #EmergingTrends #PracticalAgile #DevOps #Security #Nebraska #CareerDevelopment #SoftwareCraftsmanship

2 1 0 0
Post image

ONE WEEK LEFT until Nebraska.Code()!

nebraskacode.amegala.com

#CareerProgression #CloudComputing #DevOps #EmergingTechnology #FrontEnd #PracticalAgile #SoftwareCraftsmanship #AI #Nebraska

3 1 0 0
Post image

Time is running out to register for Nebraska.Code!

nebraskacode.amegala.com

#CareerProgression #CloudComputing #DevOps #EmergingTechnology #FrontEnd #PracticalAgile #SoftwareCraftsmanship #AI #Nebraska

3 1 0 0
Post image

Jerry Nixon, Spencer Schneidenbach, Jonathan "J." Tower, and Mike Benkovich have Sessions on Software Craftsmanship at Nebraska.Code().

nebraskacode.amegala.com

#SoftwareCraftsmanship #DatabasePatterns #APIs #ASPNET #Identity #Nebraska #TechConference #softwaredevelopment #softwareengineering

2 0 0 0
Post image

Jeremy Clark, David Handlos, Arthur Doler, and Erissa Duvall have Sessions on Software Craftsmanship at Nebraska.Code().

nebraskacode.amegala.com

#Coding #CrisisCommunication #CodeArcheology #AccessibleGaming #GitHub #Aviture #SoftwareCraftsmanship #TechConf #Nebraska #FNBO #programming #developer

3 0 0 0
Post image

Matthew Watt, David Kerber, Lorenzo Gallegos, and Mitchel Sellers present on Software Craftsmanship at Nebraska.Code().

nebraskacode.amegala.com

#SoftwareCraftsmanship #FunctionalProgramming #TechStack #Secure #Coding #Code #TechConf #Nebraska #Software #Programming #Heartland #lincolnnebraska

1 0 0 0
Post image

Jeren Hicks, Tyler Morten, Jerry Nixon, and Caleb Larsen have Sessions on Software Craftsmanship at Nebraska.Code().

nebraskacode.amegala.com

#SoftwareCraftsmanship #Programming #Refactoring #Nebraska #TechConf #Lincoln #ContinuousLearning #Aviture #Microsoft #softwareengineering #softwaredev

2 0 0 0
Post image

Ben Ferguson, Scott Bock, and Brandon Suponchick present on Software Craftsmanship in July at Nebraska.Code().

nebraskacode.amegala.com

#SoftwareCraftsmanship #Grafana #Nebraska #Tech #RootCauseAnalysis #OpenTelemetry #softwaredevelopment #softwareengineering #software #DeveloperConference

1 0 0 0
Post image

Rhia Dixon, MBA, Cory House, and Chad Michel have Sessions on Software Craftsmanship at Nebraska.Code().

nebraskacode.amegala.com

#VML #Pluralsight #DontPanicLabs #SoftwareCraftsmanship #Refactoring #TechnologyConference #Nebraska #CoryHouse #RhiaDixon #ChadMichel #Software #DeveloperConference

2 0 0 0
Post image

Jeremy Clark, Kunle Adeleke, Pichaimani Rajesh Kumar, and Matt Williams have Full-Day Workshops this July at Nebraska.Code().

nebraskacode.amegala.com

#CSharp #RAGSolution #AWS #SustainableTech #TechnologyConference #Lincoln #TechWorkshops #Nebraska #SoftwareCraftsmanship #HandsOnLearning

4 0 0 0
Post image

Adrienne Braganza Tacke presents 'Looks GREAT To Me: Getting Past Bare Minimum Code Reviews' July 24th at Nebraska.Code().

nebraskacode.amegala.com

#CodeReviews #SoftwareCraftsmanship #TechnologyConference #Nebraska #Coding #softwaredevelopment #softwareengineering #DevConf #Coding #Metrics

2 0 0 0
Post image

Aaron Grothe, CISSP presents 'What About C/C++' July 24th at Nebraska.Code().

nebraskacode.amegala.com

#CSharp #TechnicalDebt #LegacyCode #CDialects #Cyclone #Trapc #TechConference #Nebraska #SoftwareCraftsmanship #lincolnnebraska #softwaredevelopment #DeveloperConference #developercommunity

2 1 0 0
Video

Alright, I got distracted by life for a bit. Happens. Especially these days it seems.

Getting back into it, now I've added these hover transitions for desktop users and tightened up styling once again.

How long can I go until I get rid of hello world? ๐Ÿ˜‚

#buildinpublic #softwarecraftsmanship

4 1 0 0
Post image

Matt Ruwe presents 'Uncovering Hidden Gems in .NET: Boost Your Development Toolbox' July 25th at Nebraska.Code().

nebraskacode.amegala.com

#DotNet #DevToolbox #Software #Nebraska #SoftwareCraftsmanship #TechConference #Kiewit #SoftwareDevelopment #Nebraska #July2025

2 0 0 0
Post image

APItime revient le 2 juillet ร  13h15 pour un รฉpisode dรฉdiรฉ aux bonnes pratiques Git et au Software Craftsmanship. 30 min de retours concrets avec Akhara & Maรฏdine Faye (Carrefour Banque).
๐Ÿ‘‰ Inscription : naoplay.fr/apitime

#APItime #Git #SoftwareCraftsmanship #DevOps

1 1 0 0
Post image

Brandon Suponchick presents 'Technically....Is That Even Technical Debt?' July 25th at Nebraska.Code().

nebraskacode.amegala.com

#TechnicalDebt #UpdatingLibraries #ChangingPatterns #FixingBugs #lincoln #TechnicalSustainment #ModernizationActivities #SoftwareCraftsmanship #Nebraska #TechConference

3 1 0 0
Preview
Mock Me If You Can : Guide de Survie des Tests Logiciels # ๐Ÿงช Mock Me If You Can : Guide de Survie des Tests Logiciels Ah, les tests. Ce mot magique qui peut transformer un commit innocent en un feu d'artifice rouge dans ton pipeline CI. Tu pensais avoir tout compris ? Dรฉtrompe-toi, camarade dรฉveloppeur chevronnรฉ. Voici un tour d'horizon **(un peu) technique** , **(lรฉgรจrement) sarcastique** et **(probablement) pertinent** des principaux types de tests logiciels : * โœ… Tests unitaires (_mockistes_ vs _classicists_) * ๐Ÿ”Œ Tests d'intรฉgration * ๐Ÿงช Tests end-to-end (E2E) * ๐Ÿ”ฅ Tests de charge _La fameuse pyramide des tests : moins tu montes, mieux tu dors._ ## ๐ŸŽฌ Bonus : Notre Talk "La Lรฉgende des Gardiens du Code" > ๐Ÿ—ฃ๏ธ **Tu prรฉfรจres regarder plutรดt que lire ?** On t'a couvert ! Le **06 juin 2024** , avec mon acolyte **Jeremy Bernard** , on a donnรฉ un talk au **DevQuest** sur ce sujet brรปlant : les types de tests et la CI/CD qui va avec. ### ๐ŸŽฅ Le Talk en Vidรฉo ๐Ÿ“บ **Regarder "La Lรฉgende des Gardiens du Code" sur YouTube** _(Lien disponible prochainement !)_ ### ๐Ÿ“Š Les Slides de la Confรฉrence ๐Ÿ’พ **Tรฉlรฉcharger le PowerPoint de la confรฉrence** _Spoiler alert : On y raconte comment les tests sont les vrais gardiens de votre code... et pourquoi sans eux, c'est l'anarchie totale en production ! ๐Ÿ”ฅ_ ## ๐Ÿงฉ Tests Unitaires : Mockistes vs Classicists โ€” Le Match de Boxe > "Un bon test unitaire isole. Un test unitaire parfait n'existe pas." > > โ€” Un dรฉveloppeur qui a perdu 3 jours ร  dรฉbugger un mock ### ๐ŸฅŠ Camp 1 : Les Mockistes (a.k.a. London School) Tu veux tout contrรดler ? Tu adores faire semblant ? Bienvenue chez les **mockistes**. Ici, chaque dรฉpendance est simulรฉe. Tu ne veux pas tester si `fetchData()` accรจde ร  une vraie BDD, tu veux juste qu'il _croie_ qu'elle existe. #### โœ… Avantages * Hyper rapide * Super prรฉcis : tu sais exactement ce qui est cassรฉ * Isolation complรจte du code testรฉ #### โŒ Inconvรฉnients * Fragile comme un test PCR dans une boรฎte chaude * Teste souvent l'implรฉmentation plus que le comportement * Maintenance รฉlevรฉe des mocks ### ๐Ÿง˜โ€โ™‚๏ธ Camp 2 : Les Classicists (a.k.a. Chicago School) Tu prรฉfรจres tester sans te casser la tรชte ร  tout mocker ? Tu es **classicist**. Tu laisses les vraies dรฉpendances s'exรฉcuter dans leur contexte logique. #### โœ… Avantages * Teste des comportements rรฉels * Moins de maintenance liรฉe aux mocks #### โŒ Inconvรฉnients * Moins rapide * Plus sujet aux tests flakies * Risque de mauvaise sรฉparation des responsabilitรฉs ### ๐Ÿคฏ Le Vrai Dilemme ? * Les **mockistes** valident les _interactions_ * Les **classicists** valident les _rรฉsultats_ ๐Ÿ‘‰ **Choisis ton camp, mais reste cohรฉrent.** ## ๐Ÿ”Œ Tests d'Intรฉgration : Lร  oรน les Bugs naissent > "ร‡a marche en local, mais en prod c'est l'apocalypse ? Tu fais pas de tests d'intรฉgration, hein ?" Le test d'intรฉgration, c'est le cafรฉ serrรฉ du TDD. Il ne teste pas chaque grain, mais la machine complรจte. ### โœ… Avantages * Rรฉvรจle les vrais bugs (ceux qui pรจtent en prod) * Valide les comportements transverses : transactions, configs, etc. ### โŒ Inconvรฉnients * Lents, trรจs lents * Fragiles si dรฉpendances instables * Requiert souvent un environnement spรฉcifique ou des outils comme **Testcontainers** , **WireMock** , etc. # ๐Ÿ”ง Schรฉma 1: Test d'Intรฉgration Multi-Couches > _"Quand toutes les couches doivent jouer ensemble... sans se disputer"_ > โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ–ฅ๏ธ COUCHE UI (Frontend) โœ… UI rรฉpond โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ€ข Formulaire de commande โ”‚ โ”‚ โ€ข Saisie produit: "Licorne en peluche" โ”‚ โ”‚ โ€ข Quantitรฉ: 42 (pourquoi pas ?) โ”‚ โ”‚ โ”‚ โ”‚ form.submit() // Pray it works ๐Ÿ™ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โฌ‡๏ธ Test vรฉrifie la transmission โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โš™๏ธ COUCHE API (Backend) โœ… API traite โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ€ข Endpoint REST /orders โ”‚ โ”‚ โ€ข Validation des donnรฉes โ”‚ โ”‚ โ€ข Calcul du prix (licornes = โ‚ฌโ‚ฌโ‚ฌ) โ”‚ โ”‚ โ”‚ โ”‚ POST /api/orders โ”‚ โ”‚ status: 201 โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โฌ‡๏ธ Test vรฉrifie la persistance โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ—„๏ธ COUCHE BASE DE DONNร‰ES โœ… DB persiste โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ€ข Tables: products, orders, customers โ”‚ โ”‚ โ€ข Transaction ACID โ”‚ โ”‚ โ€ข Contraintes respectรฉes โ”‚ โ”‚ โ”‚ โ”‚ INSERT INTO orders -- Magic happens here โœจ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โฌ‡๏ธ Test vรฉrifie l'appel externe โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ’ณ SERVICES EXTERNES โœ… Paiement OK โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ€ข Service de paiement Stripe โ”‚ โ”‚ โ€ข Tokenisation carte โ”‚ โ”‚ โ€ข Dรฉbit de 1337.42โ‚ฌ โ”‚ โ”‚ โ”‚ โ”‚ stripe.charge() // ๐Ÿ’ธ Bye bye money โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ## ๐ŸŽ‰ Rรฉsultat du Test d'Intรฉgration โœ“ Formulaire โ†’ API : PASS โœ“ API โ†’ Base de donnรฉes : PASS โœ“ API โ†’ Service paiement : PASS โœ“ Cohรฉrence des donnรฉes : PASS ๐Ÿค“ "Un test d'intรฉgration, c'est comme un chef d'orchestre : il faut que tous les musiciens jouent la mรชme partition... sinon รงa donne du jazz expรฉrimental !" ## ๐Ÿงช Tests End-to-End (E2E) : Le Grand Frisson de l'Automatisation > "Si le bouton ne clique pas, le client ne paie pas." Les tests E2E sont lร  pour simuler un vrai utilisateur. Tu veux tester tout le flow : login, achat, logout ? C'est ici. ### ๐Ÿ› ๏ธ Outils populaires : * Playwright * Cypress * Selenium (๐Ÿ˜ฌ) ### โœ… Avantages * Simule le parcours utilisateur complet * Dรฉtecte les rรฉgressions UI ou frontend/backend ### โŒ Inconvรฉnients * Lents. Trรจs lents. * Fragiles. Trรจs fragiles. * Maintenance รฉlevรฉe (un QA engineer peut y passer sa vie) # ๐Ÿค– Schรฉma 2: E2E Testing vs Human Testing > _"Mรชme parcours, mรชme vรฉrifications, mais qui gagne ?"_ ## L'Affrontement ร‰pique โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โš”๏ธ VS โš”๏ธ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ‘จโ€๐Ÿ’ป L'HUMAIN TESTEUR โ”‚ โ”‚ ๐Ÿค– LE TEST E2E โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿง‘โ€๐Ÿ’ผ โ”‚ โ”‚ ๐Ÿค– โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ’ญ "Bon, on va tester โ”‚ โ”‚ ๐Ÿ’ญ "BEEP BOOP. Exรฉcution โ”‚ โ”‚ cette app... encore... โ”‚ โ”‚ du scรฉnario 1337..." โ”‚ โ”‚ pour la 47รจme fois..." โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ACTIONS: โ”‚ โ”‚ CODE: โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ 1. ๐Ÿ–ฑ๏ธ Ouvre le navigateur โ”‚ โ”‚ cy.visit('localhost:3000') โ”‚ โ”‚ *soupir* Firefox ou โ”‚ โ”‚ โ”‚ โ”‚ Chrome aujourd'hui ? โ”‚ โ”‚ cy.get('[data-testid=form]')โ”‚ โ”‚ โ”‚ โ”‚ .should('be.visible') โ”‚ โ”‚ 2. โŒจ๏ธ Tape l'URL โ”‚ โ”‚ โ”‚ โ”‚ localhost:3000... enfin โ”‚ โ”‚ cy.get('#email') โ”‚ โ”‚ j'espรจre que c'est รงa โ”‚ โ”‚ .type('test@example.com') โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ 3. โณ Attend le chargement โ”‚ โ”‚ cy.get('button[type=submit]')โ”‚ โ”‚ Hmm... c'est long lร ... โ”‚ โ”‚ .click() โ”‚ โ”‚ รงa marche ? โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ cy.contains('Success!') โ”‚ โ”‚ 4. ๐Ÿ‘€ Regarde l'interface โ”‚ โ”‚ .should('be.visible') โ”‚ โ”‚ "Tiens, ce bouton a โ”‚ โ”‚ โ”‚ โ”‚ bougรฉ de 2px..." โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โšก Temps d'exรฉcution: 0.3s โ”‚ โ”‚ 5. ๐Ÿ“ Remplit le formulaire โ”‚ โ”‚ ๐ŸŽฏ Prรฉcision: 100% โ”‚ โ”‚ Email: test@test.com โ”‚ โ”‚ ๐Ÿ”„ Rรฉpรฉtable: โˆž fois โ”‚ โ”‚ (encore et toujours) โ”‚ โ”‚ ๐Ÿ“Š Rapports: Automatiques โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ 6. ๐Ÿ“ค Clique sur Submit โ”‚ โ”‚ โ”‚ โ”‚ *croise les doigts* โ”‚ โ”‚ ๐Ÿ’ญ "BEEP BOOP. Test terminรฉโ”‚ โ”‚ โ”‚ โ”‚ Prรชt pour les 999 โ”‚ โ”‚ 7. โœ… Vรฉrifie le rรฉsultat โ”‚ โ”‚ autres scรฉnarios..." โ”‚ โ”‚ "Success!" - Ouf, รงa โ”‚ โ”‚ โ”‚ โ”‚ marche... cette fois โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ’ญ "Bon, maintenant il faut โ”‚ โ”‚ โ”‚ โ”‚ que je teste avec un โ”‚ โ”‚ โ”‚ โ”‚ autre email... et sur โ”‚ โ”‚ โ”‚ โ”‚ mobile... et Safari๐Ÿ˜ต" โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ## ๐Ÿ† Verdict du Match Critรจre | ๐Ÿ‘จโ€๐Ÿ’ป Humain | ๐Ÿค– Robot | Gagnant ---|---|---|--- **Vitesse** | 3 minutes | 0.3 secondes | ๐Ÿค– >>> ๐Ÿ‘จโ€๐Ÿ’ป **Prรฉcision** | "Oups, cliquรฉ ร  cรดtรฉ" | Chirurgicale | ๐Ÿค– > ๐Ÿ‘จโ€๐Ÿ’ป **Rรฉpรฉtabilitรฉ** | "Pas un lundi matin..." | 24h/24, 7j/7 | ๐Ÿค– >>> ๐Ÿ‘จโ€๐Ÿ’ป **Crรฉativitรฉ** | "Et si je clique lร  ?" | Suit le script | ๐Ÿ‘จโ€๐Ÿ’ป >>> ๐Ÿค– **Dรฉtection de bugs bizarres** | "En diagonale รงa plante" | Ne sort jamais du script | ๐Ÿ‘จโ€๐Ÿ’ป >>> ๐Ÿค– ## ๐Ÿค La Vรฉritรฉ > **L'E2E teste comme un humain trรจs disciplinรฉ qui n'aurait jamais de lundi matin...** > > **Mais qui ne trouvera jamais le bug bizarre qui arrive seulement "quand on fait รงa en diagonale" ๐Ÿคทโ€โ™‚๏ธ** ## ๐Ÿ”ฅ Tests de Charge : T'as Pas Crashรฉ, Donc T'as Gagnรฉ > "Tu peux scaler ton app ร  1 million d'utilisateurs ? Moi non plus. Mais j'ai un test qui dit que _peut-รชtre_." Tu veux savoir ce que devient ton API sous pression ? Tu fais des **tests de charge**. ### ๐Ÿ› ๏ธ Outil testรฉ: * Gatling ### โœ… Avantages * Identifie les goulets d'รฉtranglement * Fournit des metrics (latence, taux d'erreur, throughput) * Essentiel en prรฉprod sur les services critiques ### โŒ Inconvรฉnients * Difficiles ร  calibrer et interprรฉter * Peuvent donner un faux sentiment de sรฉcuritรฉ * Nรฉcessitent une vraie stratรฉgie d'analyse ## โš–๏ธ Rรฉsumรฉ Comparatif Type de test | Vitesse ๐Ÿš€ | Fiabilitรฉ ๐Ÿ›ก๏ธ | Portรฉe ๐ŸŽฏ | Complexitรฉ ๐Ÿง  ---|---|---|---|--- Unitaire (mock) | Ultra rapide | Moyenne | Petite | Moyenne Unitaire (classic) | Rapide | Bonne | Moyenne | Basse ร  moyenne Intรฉgration | Moyenne | Moyenne | Moyenne ร  large | Moyenne ร  haute End-to-End (E2E) | Lente | Moyenne | Large | Haute Charge | Variable | Bonne (si bien fait) | Large | Haute ## ๐Ÿ‘‹ Conclusion : Teste intelligemment, pas aveuglรฉment Les tests ne sont pas lร  pour faire joli sur un dashboard. Ils sont lร  pour **te sauver le c*l ร  2h du matin** quand la prod tombe. โœ… Reste pragmatique โœ… N'overengineere pas tes tests โœ… Utilise le bon test pour le bon usage Et surtout : **Si tu commites sans tests, assume quand tout pรจte. ๐Ÿ˜ˆ** ๐Ÿ“Œ Tu veux plus d'articles techniques ? Suis-moi ici sur dev.to, ou viens troller (gentiment) en commentaires. **#DevOps #TDD #Testing #SoftwareCraftsmanship #TestezVosProds**
0 0 0 0
Preview
Mock Me If You Can : Guide de Survie des Tests Logiciels # ๐Ÿงช Mock Me If You Can : Guide de Survie des Tests Logiciels Ah, les tests. Ce mot magique qui peut transformer un commit innocent en un feu d'artifice rouge dans ton pipeline CI. Tu pensais avoir tout compris ? Dรฉtrompe-toi, camarade dรฉveloppeur chevronnรฉ. Voici un tour d'horizon **(un peu) technique** , **(lรฉgรจrement) sarcastique** et **(probablement) pertinent** des principaux types de tests logiciels : * โœ… Tests unitaires (_mockistes_ vs _classicists_) * ๐Ÿ”Œ Tests d'intรฉgration * ๐Ÿงช Tests end-to-end (E2E) * ๐Ÿ”ฅ Tests de charge _La fameuse pyramide des tests : moins tu montes, mieux tu dors._ ## ๐ŸŽฌ Bonus : Notre Talk "La Lรฉgende des Gardiens du Code" > ๐Ÿ—ฃ๏ธ **Tu prรฉfรจres regarder plutรดt que lire ?** On t'a couvert ! Le **06 juin 2024** , avec mon acolyte **Jeremy Bernard** , on a donnรฉ un talk au **DevQuest** sur ce sujet brรปlant : les types de tests et la CI/CD qui va avec. ### ๐ŸŽฅ Le Talk en Vidรฉo ๐Ÿ“บ **Regarder "La Lรฉgende des Gardiens du Code" sur YouTube** _(Lien disponible prochainement !)_ ### ๐Ÿ“Š Les Slides de la Confรฉrence ๐Ÿ’พ **Tรฉlรฉcharger le PowerPoint de la confรฉrence** _Spoiler alert : On y raconte comment les tests sont les vrais gardiens de votre code... et pourquoi sans eux, c'est l'anarchie totale en production ! ๐Ÿ”ฅ_ ## ๐Ÿงฉ Tests Unitaires : Mockistes vs Classicists โ€” Le Match de Boxe > "Un bon test unitaire isole. Un test unitaire parfait n'existe pas." > > โ€” Un dรฉveloppeur qui a perdu 3 jours ร  dรฉbugger un mock ### ๐ŸฅŠ Camp 1 : Les Mockistes (a.k.a. London School) Tu veux tout contrรดler ? Tu adores faire semblant ? Bienvenue chez les **mockistes**. Ici, chaque dรฉpendance est simulรฉe. Tu ne veux pas tester si `fetchData()` accรจde ร  une vraie BDD, tu veux juste qu'il _croie_ qu'elle existe. #### โœ… Avantages * Hyper rapide * Super prรฉcis : tu sais exactement ce qui est cassรฉ * Isolation complรจte du code testรฉ #### โŒ Inconvรฉnients * Fragile comme un test PCR dans une boรฎte chaude * Teste souvent l'implรฉmentation plus que le comportement * Maintenance รฉlevรฉe des mocks ### ๐Ÿง˜โ€โ™‚๏ธ Camp 2 : Les Classicists (a.k.a. Chicago School) Tu prรฉfรจres tester sans te casser la tรชte ร  tout mocker ? Tu es **classicist**. Tu laisses les vraies dรฉpendances s'exรฉcuter dans leur contexte logique. #### โœ… Avantages * Teste des comportements rรฉels * Moins de maintenance liรฉe aux mocks #### โŒ Inconvรฉnients * Moins rapide * Plus sujet aux tests flakies * Risque de mauvaise sรฉparation des responsabilitรฉs ### ๐Ÿคฏ Le Vrai Dilemme ? * Les **mockistes** valident les _interactions_ * Les **classicists** valident les _rรฉsultats_ ๐Ÿ‘‰ **Choisis ton camp, mais reste cohรฉrent.** ## ๐Ÿ”Œ Tests d'Intรฉgration : Lร  oรน les Bugs naissent > "ร‡a marche en local, mais en prod c'est l'apocalypse ? Tu fais pas de tests d'intรฉgration, hein ?" Le test d'intรฉgration, c'est le cafรฉ serrรฉ du TDD. Il ne teste pas chaque grain, mais la machine complรจte. ### โœ… Avantages * Rรฉvรจle les vrais bugs (ceux qui pรจtent en prod) * Valide les comportements transverses : transactions, configs, etc. ### โŒ Inconvรฉnients * Lents, trรจs lents * Fragiles si dรฉpendances instables * Requiert souvent un environnement spรฉcifique ou des outils comme **Testcontainers** , **WireMock** , etc. # ๐Ÿ”ง Schรฉma 1: Test d'Intรฉgration Multi-Couches > _"Quand toutes les couches doivent jouer ensemble... sans se disputer"_ > โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ–ฅ๏ธ COUCHE UI (Frontend) โœ… UI rรฉpond โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ€ข Formulaire de commande โ”‚ โ”‚ โ€ข Saisie produit: "Licorne en peluche" โ”‚ โ”‚ โ€ข Quantitรฉ: 42 (pourquoi pas ?) โ”‚ โ”‚ โ”‚ โ”‚ form.submit() // Pray it works ๐Ÿ™ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โฌ‡๏ธ Test vรฉrifie la transmission โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โš™๏ธ COUCHE API (Backend) โœ… API traite โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ€ข Endpoint REST /orders โ”‚ โ”‚ โ€ข Validation des donnรฉes โ”‚ โ”‚ โ€ข Calcul du prix (licornes = โ‚ฌโ‚ฌโ‚ฌ) โ”‚ โ”‚ โ”‚ โ”‚ POST /api/orders โ”‚ โ”‚ status: 201 โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โฌ‡๏ธ Test vรฉrifie la persistance โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ—„๏ธ COUCHE BASE DE DONNร‰ES โœ… DB persiste โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ€ข Tables: products, orders, customers โ”‚ โ”‚ โ€ข Transaction ACID โ”‚ โ”‚ โ€ข Contraintes respectรฉes โ”‚ โ”‚ โ”‚ โ”‚ INSERT INTO orders -- Magic happens here โœจ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โฌ‡๏ธ Test vรฉrifie l'appel externe โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ’ณ SERVICES EXTERNES โœ… Paiement OK โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ€ข Service de paiement Stripe โ”‚ โ”‚ โ€ข Tokenisation carte โ”‚ โ”‚ โ€ข Dรฉbit de 1337.42โ‚ฌ โ”‚ โ”‚ โ”‚ โ”‚ stripe.charge() // ๐Ÿ’ธ Bye bye money โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ## ๐ŸŽ‰ Rรฉsultat du Test d'Intรฉgration โœ“ Formulaire โ†’ API : PASS โœ“ API โ†’ Base de donnรฉes : PASS โœ“ API โ†’ Service paiement : PASS โœ“ Cohรฉrence des donnรฉes : PASS ๐Ÿค“ "Un test d'intรฉgration, c'est comme un chef d'orchestre : il faut que tous les musiciens jouent la mรชme partition... sinon รงa donne du jazz expรฉrimental !" ## ๐Ÿงช Tests End-to-End (E2E) : Le Grand Frisson de l'Automatisation > "Si le bouton ne clique pas, le client ne paie pas." Les tests E2E sont lร  pour simuler un vrai utilisateur. Tu veux tester tout le flow : login, achat, logout ? C'est ici. ### ๐Ÿ› ๏ธ Outils populaires : * Playwright * Cypress * Selenium (๐Ÿ˜ฌ) ### โœ… Avantages * Simule le parcours utilisateur complet * Dรฉtecte les rรฉgressions UI ou frontend/backend ### โŒ Inconvรฉnients * Lents. Trรจs lents. * Fragiles. Trรจs fragiles. * Maintenance รฉlevรฉe (un QA engineer peut y passer sa vie) # ๐Ÿค– Schรฉma 2: E2E Testing vs Human Testing > _"Mรชme parcours, mรชme vรฉrifications, mais qui gagne ?"_ ## L'Affrontement ร‰pique โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โš”๏ธ VS โš”๏ธ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ‘จโ€๐Ÿ’ป L'HUMAIN TESTEUR โ”‚ โ”‚ ๐Ÿค– LE TEST E2E โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿง‘โ€๐Ÿ’ผ โ”‚ โ”‚ ๐Ÿค– โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ’ญ "Bon, on va tester โ”‚ โ”‚ ๐Ÿ’ญ "BEEP BOOP. Exรฉcution โ”‚ โ”‚ cette app... encore... โ”‚ โ”‚ du scรฉnario 1337..." โ”‚ โ”‚ pour la 47รจme fois..." โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ACTIONS: โ”‚ โ”‚ CODE: โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ 1. ๐Ÿ–ฑ๏ธ Ouvre le navigateur โ”‚ โ”‚ cy.visit('localhost:3000') โ”‚ โ”‚ *soupir* Firefox ou โ”‚ โ”‚ โ”‚ โ”‚ Chrome aujourd'hui ? โ”‚ โ”‚ cy.get('[data-testid=form]')โ”‚ โ”‚ โ”‚ โ”‚ .should('be.visible') โ”‚ โ”‚ 2. โŒจ๏ธ Tape l'URL โ”‚ โ”‚ โ”‚ โ”‚ localhost:3000... enfin โ”‚ โ”‚ cy.get('#email') โ”‚ โ”‚ j'espรจre que c'est รงa โ”‚ โ”‚ .type('test@example.com') โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ 3. โณ Attend le chargement โ”‚ โ”‚ cy.get('button[type=submit]')โ”‚ โ”‚ Hmm... c'est long lร ... โ”‚ โ”‚ .click() โ”‚ โ”‚ รงa marche ? โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ cy.contains('Success!') โ”‚ โ”‚ 4. ๐Ÿ‘€ Regarde l'interface โ”‚ โ”‚ .should('be.visible') โ”‚ โ”‚ "Tiens, ce bouton a โ”‚ โ”‚ โ”‚ โ”‚ bougรฉ de 2px..." โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โšก Temps d'exรฉcution: 0.3s โ”‚ โ”‚ 5. ๐Ÿ“ Remplit le formulaire โ”‚ โ”‚ ๐ŸŽฏ Prรฉcision: 100% โ”‚ โ”‚ Email: test@test.com โ”‚ โ”‚ ๐Ÿ”„ Rรฉpรฉtable: โˆž fois โ”‚ โ”‚ (encore et toujours) โ”‚ โ”‚ ๐Ÿ“Š Rapports: Automatiques โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ 6. ๐Ÿ“ค Clique sur Submit โ”‚ โ”‚ โ”‚ โ”‚ *croise les doigts* โ”‚ โ”‚ ๐Ÿ’ญ "BEEP BOOP. Test terminรฉโ”‚ โ”‚ โ”‚ โ”‚ Prรชt pour les 999 โ”‚ โ”‚ 7. โœ… Vรฉrifie le rรฉsultat โ”‚ โ”‚ autres scรฉnarios..." โ”‚ โ”‚ "Success!" - Ouf, รงa โ”‚ โ”‚ โ”‚ โ”‚ marche... cette fois โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ’ญ "Bon, maintenant il faut โ”‚ โ”‚ โ”‚ โ”‚ que je teste avec un โ”‚ โ”‚ โ”‚ โ”‚ autre email... et sur โ”‚ โ”‚ โ”‚ โ”‚ mobile... et Safari๐Ÿ˜ต" โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ## ๐Ÿ† Verdict du Match Critรจre | ๐Ÿ‘จโ€๐Ÿ’ป Humain | ๐Ÿค– Robot | Gagnant ---|---|---|--- **Vitesse** | 3 minutes | 0.3 secondes | ๐Ÿค– >>> ๐Ÿ‘จโ€๐Ÿ’ป **Prรฉcision** | "Oups, cliquรฉ ร  cรดtรฉ" | Chirurgicale | ๐Ÿค– > ๐Ÿ‘จโ€๐Ÿ’ป **Rรฉpรฉtabilitรฉ** | "Pas un lundi matin..." | 24h/24, 7j/7 | ๐Ÿค– >>> ๐Ÿ‘จโ€๐Ÿ’ป **Crรฉativitรฉ** | "Et si je clique lร  ?" | Suit le script | ๐Ÿ‘จโ€๐Ÿ’ป >>> ๐Ÿค– **Dรฉtection de bugs bizarres** | "En diagonale รงa plante" | Ne sort jamais du script | ๐Ÿ‘จโ€๐Ÿ’ป >>> ๐Ÿค– ## ๐Ÿค La Vรฉritรฉ > **L'E2E teste comme un humain trรจs disciplinรฉ qui n'aurait jamais de lundi matin...** > > **Mais qui ne trouvera jamais le bug bizarre qui arrive seulement "quand on fait รงa en diagonale" ๐Ÿคทโ€โ™‚๏ธ** ## ๐Ÿ”ฅ Tests de Charge : T'as Pas Crashรฉ, Donc T'as Gagnรฉ > "Tu peux scaler ton app ร  1 million d'utilisateurs ? Moi non plus. Mais j'ai un test qui dit que _peut-รชtre_." Tu veux savoir ce que devient ton API sous pression ? Tu fais des **tests de charge**. ### ๐Ÿ› ๏ธ Outil testรฉ: * Gatling ### โœ… Avantages * Identifie les goulets d'รฉtranglement * Fournit des metrics (latence, taux d'erreur, throughput) * Essentiel en prรฉprod sur les services critiques ### โŒ Inconvรฉnients * Difficiles ร  calibrer et interprรฉter * Peuvent donner un faux sentiment de sรฉcuritรฉ * Nรฉcessitent une vraie stratรฉgie d'analyse ## โš–๏ธ Rรฉsumรฉ Comparatif Type de test | Vitesse ๐Ÿš€ | Fiabilitรฉ ๐Ÿ›ก๏ธ | Portรฉe ๐ŸŽฏ | Complexitรฉ ๐Ÿง  ---|---|---|---|--- Unitaire (mock) | Ultra rapide | Moyenne | Petite | Moyenne Unitaire (classic) | Rapide | Bonne | Moyenne | Basse ร  moyenne Intรฉgration | Moyenne | Moyenne | Moyenne ร  large | Moyenne ร  haute End-to-End (E2E) | Lente | Moyenne | Large | Haute Charge | Variable | Bonne (si bien fait) | Large | Haute ## ๐Ÿ‘‹ Conclusion : Teste intelligemment, pas aveuglรฉment Les tests ne sont pas lร  pour faire joli sur un dashboard. Ils sont lร  pour **te sauver le c*l ร  2h du matin** quand la prod tombe. โœ… Reste pragmatique โœ… N'overengineere pas tes tests โœ… Utilise le bon test pour le bon usage Et surtout : **Si tu commites sans tests, assume quand tout pรจte. ๐Ÿ˜ˆ** ๐Ÿ“Œ Tu veux plus d'articles techniques ? Suis-moi ici sur dev.to, ou viens troller (gentiment) en commentaires. **#DevOps #TDD #Testing #SoftwareCraftsmanship #TestezVosProds**
0 0 0 0
Post image

Brian Zimmer is 'Roadmapping with Critical Thought' July 25th at Nebraska.Code().

nebraskacode.amegala.com

#Roadmapping #TechConf #SoftwareCraftsmanship #Nebraska #DontPanicLabs #Technology #TechCommunity #HeartlandDev #DeveloperConference #Programming #Nebraska #criticalthinking

2 1 0 0
Post image

Anne Ruskamp presents 'Project Recovery: Navigating the Bumps and Getting Back on Track' July 25th at Nebraska.Code().

nebraskacode.amegala.com

#SoftwareCraftsmanship #ProjectManagement #ProjectRecovery #PracticalAgile #TechnologyConference #Nebraska #DontPanicLabs #Agile #womenintechnology

3 1 0 0
Post image

David Handlos presents 'Performance Testing In Practice' July 25th at Nebraska.Code().

nebraskacode.amegala.com

#performancetesting #unittesting #softwarecraftsmanship #Nebraska #softwaremetrics #UXTesting #TechnologyConference #softwaretesting #softwaretester #TechTalk

0 0 0 0