Une conférence de 2h30 (aka université) faites à Devoxx France en 2021 avec Maxime Gellé. On y fait un tour d'horizon des tests logiciels: TDD, Test unitaire vs Test d'integration, l'apport de l'archi hexagonale, Contract testing, property based testing, UI testing ... mais aussi comment "tester en production" !
Dans nos accompagnements techniques, nous observons régulièrement des problèmes de Legacy Code aussi appelé Code Patrimonial. Notamment lorsque des équipes font un virage agile et on leur demande soudainement de faire des tests unitaires automatisés. Pas si facile que cela.
Dans cette présentation, nous verrons les points suivants:
- Description de quelques techniques pour nous aider à tester le Legacy Code
- Comment avoir le droit de travailler sur du code pour le rendre plus facile à travailler
- Quelques pratiques et outils afin de s'en prémunir autant que possible au jour le jour.
Cette présentation a été donnée aux dates suivantes:
- 10 Novembre 2016 - Beer And Learn (Québec)
- 16 Novembre 2016 - Agile Tour Montréal
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAssociation Agile Nantes
Les tests unitaires automatisés sont indispensables à l'agilité. Le TDD est le meilleur moyen d'écrire
ces tests et d'avoir du code testable, mais sa pratique va au-delà, notamment dans l'aide à la
conception du code. Un peu de théorie et beaucoup de démo live pour vous montrer cette pratique.
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...Cyrille Grandval
De nos jours de plus en plus d'entreprises ne jurent que par les tests unitaires. Faire du test, faire du test, faire du test ! “Une application n'est pérenne que si elle est testée et elle est testée si plus de 80% du code est couvert.”
Cela devient même un élément décisif du recruteur en entretien :
- Votre collaborateur a l'air vraiment bien mais... Il a déjà fait des tests unitaires ? Il a plus de deux ans d'expérience là dessus ?
- Juste sur deux projets, par contre il possède la bonne philosophie.
- Ah oui mais non il faut qu'il en ait fait 2 ans, c'est un minimum. On cherche des experts nous !
Problématique : "Je veux minimum 80% de couverture de code !!!" Qui n'a pas entendu cette phrase dans la bouche d'un chef de projet ou d'un lead dev trop consciencieux sans doute.
Dans certains projets un test unitaire est bon si il couvre au moins 80% de la fonctionnalité à tester, c'est tout ce qui est demandé et c'est cela qu'il faut avoir. Il est avant tout essentiel de s'interroger sur la notion de couverture de code dans un test unitaire : La couverture de code est-elle un but ? un facteur qualité ? une représentation visuelle d'un test ? Ou est-ce cet horrible fantôme qui vient hanter une application ?
Pour faire simple : un test qui couvre 100% du code à tester est-il forcement fiable ?
Conférence PHPTour Lyon 2014 - Tests unitaires - Je veux mes 80% de couverture de code !!!! http://afup.org/pages/phptourlyon2014/sessions.php#1094
Strategie de test à agile tour bordeauxNicolas Fédou
Une stratégie de tests, on sait tous que c’est nécessaire, mais sans forcément savoir à quoi ça ressemble.
Une stratégie de tests est la façon de s’organiser pour montrer qu’une application est de qualité suffisante pour aller en production. Il ne s’agit donc pas d’un inventaire de tests manuels ou automatisés, mais d’un raisonnement avec des choix et des renoncements.
Dans cette présentation nous verrons comment une stratégie de tests vise à optimiser la confiance et les preuves de qualité dans le cadre du développement d’un produit agile.
Rédigé en Mars 2013
Comment automatiser les tests ?
Les différents types de tests automatisés : TU, BDD/TDD, GUI, TDC, Test de vie …
Méthodes d’automatisation
Capture/replay
Projet de développement
Techniques d’automatisation
Data driven
Keyword driven
DSTL
Composants technique pour l’automatisation
Oracle
Bouchon
Techniques de comparaison
Reporting
Dans nos accompagnements techniques, nous observons régulièrement des problèmes de Legacy Code aussi appelé Code Patrimonial. Notamment lorsque des équipes font un virage agile et on leur demande soudainement de faire des tests unitaires automatisés. Pas si facile que cela.
Dans cette présentation, nous verrons les points suivants:
- Description de quelques techniques pour nous aider à tester le Legacy Code
- Comment avoir le droit de travailler sur du code pour le rendre plus facile à travailler
- Quelques pratiques et outils afin de s'en prémunir autant que possible au jour le jour.
Cette présentation a été donnée aux dates suivantes:
- 10 Novembre 2016 - Beer And Learn (Québec)
- 16 Novembre 2016 - Agile Tour Montréal
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAssociation Agile Nantes
Les tests unitaires automatisés sont indispensables à l'agilité. Le TDD est le meilleur moyen d'écrire
ces tests et d'avoir du code testable, mais sa pratique va au-delà, notamment dans l'aide à la
conception du code. Un peu de théorie et beaucoup de démo live pour vous montrer cette pratique.
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...Cyrille Grandval
De nos jours de plus en plus d'entreprises ne jurent que par les tests unitaires. Faire du test, faire du test, faire du test ! “Une application n'est pérenne que si elle est testée et elle est testée si plus de 80% du code est couvert.”
Cela devient même un élément décisif du recruteur en entretien :
- Votre collaborateur a l'air vraiment bien mais... Il a déjà fait des tests unitaires ? Il a plus de deux ans d'expérience là dessus ?
- Juste sur deux projets, par contre il possède la bonne philosophie.
- Ah oui mais non il faut qu'il en ait fait 2 ans, c'est un minimum. On cherche des experts nous !
Problématique : "Je veux minimum 80% de couverture de code !!!" Qui n'a pas entendu cette phrase dans la bouche d'un chef de projet ou d'un lead dev trop consciencieux sans doute.
Dans certains projets un test unitaire est bon si il couvre au moins 80% de la fonctionnalité à tester, c'est tout ce qui est demandé et c'est cela qu'il faut avoir. Il est avant tout essentiel de s'interroger sur la notion de couverture de code dans un test unitaire : La couverture de code est-elle un but ? un facteur qualité ? une représentation visuelle d'un test ? Ou est-ce cet horrible fantôme qui vient hanter une application ?
Pour faire simple : un test qui couvre 100% du code à tester est-il forcement fiable ?
Conférence PHPTour Lyon 2014 - Tests unitaires - Je veux mes 80% de couverture de code !!!! http://afup.org/pages/phptourlyon2014/sessions.php#1094
Strategie de test à agile tour bordeauxNicolas Fédou
Une stratégie de tests, on sait tous que c’est nécessaire, mais sans forcément savoir à quoi ça ressemble.
Une stratégie de tests est la façon de s’organiser pour montrer qu’une application est de qualité suffisante pour aller en production. Il ne s’agit donc pas d’un inventaire de tests manuels ou automatisés, mais d’un raisonnement avec des choix et des renoncements.
Dans cette présentation nous verrons comment une stratégie de tests vise à optimiser la confiance et les preuves de qualité dans le cadre du développement d’un produit agile.
Rédigé en Mars 2013
Comment automatiser les tests ?
Les différents types de tests automatisés : TU, BDD/TDD, GUI, TDC, Test de vie …
Méthodes d’automatisation
Capture/replay
Projet de développement
Techniques d’automatisation
Data driven
Keyword driven
DSTL
Composants technique pour l’automatisation
Oracle
Bouchon
Techniques de comparaison
Reporting
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013Xavier NOPRE
Diaporama de ma présentation "Agilistes : n'oubliez pas la technique" le 25/04/2013 à Mix-IT 2013. N'hésitez pas à me faire des retours et me contacter !
Test unitaires - refactoring - clean codeHadrien Blanc
Tests unitaire, refactoring, test-driven development, TDD, clean code, design pattern, bonnes pratiques en équipe.
Un tour rapide sur où placer les tests unitaires et le développement dirigé par les tests, dans les bonnes pratiques de développement logiciel.
Le Test Driven Infrastructure, c'est un peu le TDD pour les projets DevOps. Il va vous permettre de tester votre infrastructure unitairement, de bout en bout et à chaque changement.
L’université de la performance vous fera découvrir comment concevoir la plus grosse fonctionnalité implicite d’une application: Sa performance.
Pour cela nous vous proposerons une démarche en trois étapes: - Connaître les différents types de tests de charge et savoir quand les utiliser - Mettre en place un test de charge et des outils nécessaires pour le monitoring - Savoir identifier et optimiser les différents goulets d’étranglement de l’application
Le tout mis en pratique sur une application réelle.
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileDenis Voituron
Les projets Agiles imposent leurs propres défis aux équipes de test. Un projet Agile est souvent basé sur de multiples itérations, exploite un périmètre de développement incertain, travaille avec une documentation minimaliste. Rapidement, les Tests Unitaires se font sentir pour garantir des évolutions logicielles en douceur.
Lors de cette session, nous présenterons les concepts de base des tests unitaires, quelles en sont les implications et quels sont les sujets applicatifs à tester. Dans la seconde partie de cette session, nous présenterons, par des démonstrations en direct dans Microsoft Visual Studio, les 5 bonnes pratiques des Tests Unitaires intégrés dans un cycle de vie Agile.
Exemples sur https://github.com/dvoituron/SampleUnitTests
Le test, qu'il soit unitaire ou fonctionnel, est à la mode dans le monde du développement logiciel, suite entre autre à la mise en œuvre croissante des méthodes agiles et notamment de l'intégration continue ou des méthodes de développement telles que le TDD, le BDD ou la programmation par contrat. Récemment, ce phénomène a encore été amplifié au sein de la communauté PHP par l'apparition aux côtés de l'incontournable PHPUnit d'outils plus originaux tels que Behat, Praspel ou atoum qui permettent au développeur de rédiger des tests plus simplement. Pourtant, nous constatons tous les jours que le test conserve une grande part de mystère pour la plupart des développeurs, Bien souvent, ces derniers ne savent pas quoi tester, et encore moins comment écrire un test efficace ou mettre en place une politique de test pertinente. Certains s'interrogent par exemple sur la pertinence de leurs tests, se demandent s'il faut absolument tout tester, d'autres s'il est possible de tester la création d'un fichier, voir même s'il est intéressant de le faire, tandis que d'autres se demandent où se situe la frontière entre le test unitaire et le test fonctionnel ou s'il est nécessaire de tester toutes les méthodes d'une classe, alors que d'autres encore ne savent tout simplement pas par où commencer. Durant cette conférence, nous allons tenter, à l'aide de nos expériences respectives de créateur de framework de tests et de doctorat en informatique spécialisé dans le test, de répondre aux questions récurrentes que se pose une personne confrontée à la mise en place d'une politique de qualité logicielle en général et à l'écriture d'un test logiciel en particulier. À l'issue de cette foire aux questions didactique et interactive, vous devriez être capable d'aborder le test, indépendamment de sa nature, de manière plus sereine et efficace et produire ainsi un logiciel de la qualité que vous désirez.
[Agile Testing Day] Test Driven Development (TDD)Cellenza
Soyons honnête : nous aimerions tous tester nos plateformes, nos codes, mais personne ne le fait vraiment bien. Heureusement, ce n’est pas une fatalité, et il n’est jamais trop tard pour tester ! La vraie question est : comment tester ? Derrière toute stratégie de tests efficace, il y a une connaissance de tous les types de tests disponibles, de leurs coûts et de leurs utilités. Tout au long de cette journée, nous allons vous détailler les différents types de tests, du test unitaire au test de charge, afin que vous puissiez évaluer la pertinence de chacun dans votre propre contexte.
The document discusses principles of craftsmanship in software development, including clean code, test-driven development, domain-driven design, and refactoring. It emphasizes writing code with quality, simplicity, shared ownership, and professionalism. It provides examples of unit testing principles like FAST and describes techniques like the TDD loop and code katas/dojos. It also explains SOLID principles for object-oriented design such as single responsibility, open/closed, Liskov substitution, and others. Finally, it discusses refactoring code smells and techniques for improving code quality through refactoring.
Retour d'expérience sur le passage d'une architecture monolithique à une architecture en microservice, les problèmes rencontrés et ce qu'il aurait fallu savoir et mettre en place avant de se lancer :)
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013Xavier NOPRE
Diaporama de ma présentation "Agilistes : n'oubliez pas la technique" le 25/04/2013 à Mix-IT 2013. N'hésitez pas à me faire des retours et me contacter !
Test unitaires - refactoring - clean codeHadrien Blanc
Tests unitaire, refactoring, test-driven development, TDD, clean code, design pattern, bonnes pratiques en équipe.
Un tour rapide sur où placer les tests unitaires et le développement dirigé par les tests, dans les bonnes pratiques de développement logiciel.
Le Test Driven Infrastructure, c'est un peu le TDD pour les projets DevOps. Il va vous permettre de tester votre infrastructure unitairement, de bout en bout et à chaque changement.
L’université de la performance vous fera découvrir comment concevoir la plus grosse fonctionnalité implicite d’une application: Sa performance.
Pour cela nous vous proposerons une démarche en trois étapes: - Connaître les différents types de tests de charge et savoir quand les utiliser - Mettre en place un test de charge et des outils nécessaires pour le monitoring - Savoir identifier et optimiser les différents goulets d’étranglement de l’application
Le tout mis en pratique sur une application réelle.
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileDenis Voituron
Les projets Agiles imposent leurs propres défis aux équipes de test. Un projet Agile est souvent basé sur de multiples itérations, exploite un périmètre de développement incertain, travaille avec une documentation minimaliste. Rapidement, les Tests Unitaires se font sentir pour garantir des évolutions logicielles en douceur.
Lors de cette session, nous présenterons les concepts de base des tests unitaires, quelles en sont les implications et quels sont les sujets applicatifs à tester. Dans la seconde partie de cette session, nous présenterons, par des démonstrations en direct dans Microsoft Visual Studio, les 5 bonnes pratiques des Tests Unitaires intégrés dans un cycle de vie Agile.
Exemples sur https://github.com/dvoituron/SampleUnitTests
Le test, qu'il soit unitaire ou fonctionnel, est à la mode dans le monde du développement logiciel, suite entre autre à la mise en œuvre croissante des méthodes agiles et notamment de l'intégration continue ou des méthodes de développement telles que le TDD, le BDD ou la programmation par contrat. Récemment, ce phénomène a encore été amplifié au sein de la communauté PHP par l'apparition aux côtés de l'incontournable PHPUnit d'outils plus originaux tels que Behat, Praspel ou atoum qui permettent au développeur de rédiger des tests plus simplement. Pourtant, nous constatons tous les jours que le test conserve une grande part de mystère pour la plupart des développeurs, Bien souvent, ces derniers ne savent pas quoi tester, et encore moins comment écrire un test efficace ou mettre en place une politique de test pertinente. Certains s'interrogent par exemple sur la pertinence de leurs tests, se demandent s'il faut absolument tout tester, d'autres s'il est possible de tester la création d'un fichier, voir même s'il est intéressant de le faire, tandis que d'autres se demandent où se situe la frontière entre le test unitaire et le test fonctionnel ou s'il est nécessaire de tester toutes les méthodes d'une classe, alors que d'autres encore ne savent tout simplement pas par où commencer. Durant cette conférence, nous allons tenter, à l'aide de nos expériences respectives de créateur de framework de tests et de doctorat en informatique spécialisé dans le test, de répondre aux questions récurrentes que se pose une personne confrontée à la mise en place d'une politique de qualité logicielle en général et à l'écriture d'un test logiciel en particulier. À l'issue de cette foire aux questions didactique et interactive, vous devriez être capable d'aborder le test, indépendamment de sa nature, de manière plus sereine et efficace et produire ainsi un logiciel de la qualité que vous désirez.
[Agile Testing Day] Test Driven Development (TDD)Cellenza
Soyons honnête : nous aimerions tous tester nos plateformes, nos codes, mais personne ne le fait vraiment bien. Heureusement, ce n’est pas une fatalité, et il n’est jamais trop tard pour tester ! La vraie question est : comment tester ? Derrière toute stratégie de tests efficace, il y a une connaissance de tous les types de tests disponibles, de leurs coûts et de leurs utilités. Tout au long de cette journée, nous allons vous détailler les différents types de tests, du test unitaire au test de charge, afin que vous puissiez évaluer la pertinence de chacun dans votre propre contexte.
The document discusses principles of craftsmanship in software development, including clean code, test-driven development, domain-driven design, and refactoring. It emphasizes writing code with quality, simplicity, shared ownership, and professionalism. It provides examples of unit testing principles like FAST and describes techniques like the TDD loop and code katas/dojos. It also explains SOLID principles for object-oriented design such as single responsibility, open/closed, Liskov substitution, and others. Finally, it discusses refactoring code smells and techniques for improving code quality through refactoring.
Retour d'expérience sur le passage d'une architecture monolithique à une architecture en microservice, les problèmes rencontrés et ce qu'il aurait fallu savoir et mettre en place avant de se lancer :)
This document discusses transitioning from a Scrum framework to a Kanban/flow approach. It defines flow as a pull system that focuses on regular delivery of value at a sustainable pace by optimizing work from beginning to end. Key aspects of flow/Kanban discussed include visualizing the workflow, limiting work-in-progress, making policies explicit, and improving collaboratively using data. Metrics like deployment frequency, change failure rate, mean time to recovery, and lead time are emphasized for achieving "escape velocity." Continuous delivery is also discussed as enabling easy deployments at any time through practices like infrastructure as code, robust continuous integration, and blue-green deployments. Adopting a flow approach requires professionals skilled in test-
The document discusses guerrilla domain-driven design (DDD) and provides advice for implementing it. It recommends finding hidden domain experts like those who maintain legacy systems or interact with users, focusing conversations on them to uncover the core domain. If the domain is not clear, teams should define it themselves. It also suggests saying no when needed and changing organizational culture to fully implement DDD from the domain outwards.
Docker allows for the use of lightweight containers that share the host operating system kernel. Containers isolate applications from one another and provide a way to package applications with their dependencies. Containers use resource isolation features and union file systems for efficiency. Docker images are built from layers and can be distributed. The Docker ecosystem includes tools for the container lifecycle, networking, storage, and distribution of images.
Pub: j'en fait un BBL pour approfondir les concepts.
les principes du design, au sens "utilisabilité", défini par Donald Norman dans son livre "The Design of Everyday Things" et comment ceux-ci s'appliquent à notre code de tous les jours. Comprendre les principes d'affordance, d'association, de contrainte ou encore de visibilité sont un excellent moyen de faire du "Clean Code". Ainsi le développeur qui vous succède - et c'est souvent vous même après quelques mois - est capable de facilement le reprendre en main. On comprendra aussi mieux les conseils d'"Uncle Bob" ;)
Présentation autour de la Spirale Dynamique et des nouvelles formes d'organisation pour répondre aux changements et à la complexité du monde du travail.
Slides du BBL Lean Startup que je propose. Une partie du BBL est une mise en pratique autour du Lean Canvas et donc n'est pas visible dans les slides :)
Construisons des organisations adaptées au 21ème siècleyannick grenzinger
Cette présentation s'inspire de la spirale dynamique pour construire des organisations robustes, performantes, humaines et surtout adaptées à la complexité du 21ème siècle.
Deux choses importantes:
- je joue cette présentation en BBL. Contactez moi sur yannick.grenzinger sur gmail.
- c'est un travail en permanente construction donc cette version peut être un brouillon de la prochaine étape :)
Les slides de la présentation faite à Devoxx France 2015 et Lean Kanban 2015 avec @kawabytes.
On essaye de répondre à ces questions: Pourquoi est-il difficile d’estimer la charge d’un projet ? Pourquoi développeurs et métiers ne se comprennent pas ? Pourquoi expliquer un problème à un canard en caoutchouc permet de trouver la solution ?
L’objectif est de sensibiliser les développeurs à la psychologie et au science cognitive grâce à la thèse de la pensée à deux vitesses, aux biais cognitifs et leurs impacts sur notre faculté de jugement.
Pourquoi est-il difficile d’estimer la charge d’un projet ? Pourquoi développeurs et métiers ne se comprennent pas ? Pourquoi expliquer un problème à un canard en caoutchouc permet de trouver la solution ?
L’objectif de notre présentation est de sensibiliser les développeurs à la psychologie et au science cognitive à travers en particulier à travers de la thèse de la pensée à deux vitesses, des biais cognitifs et leurs impacts sur notre faculté de jugement.
Nous proposons une découverte adaptée au quotidien du développeur ainsi que comment améliorer les choses à travers différents exemples.
Cette présentation est une introduction à la gamification ou comment utiliser les éléments et les techniques du jeu et du game design afin d'améliorer votre business, créer l'engagement, favoriser la progression, le travail d'équipe ou encore créer de nouvelles habitudes ?
Apprendre à apprendre pour innover, s'adapter et surtout survivre au 21ème si...yannick grenzinger
Cette présentation est rejouable en BBL.
Le but est de découvrir pourquoi et comment faciliter et amplifier l’apprentissage pour survivre au 21ème siècle. Le pourquoi sera développé à partir du besoin d’innovation et de la révolution de la connaissance. Le comment couvrira quelques pratiques et outils aussi bien au niveau personnel, de votre produit et même de votre organisation. Enfin je finirais par un des éléments de notre psychologie qui nous bloque le plus dans notre capacité à apprendre.
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...OCTO Technology
par Claude Camus (Coach agile d'organisation @OCTO Technology) et Gilles Masy (Organizational Coach @OCTO Technology)
Les équipes infrastructure, sécurité, production, ou cloud, doivent consacrer du temps à la modernisation de leurs outils (automatisation, cloud, etc) et de leurs pratiques (DevOps, SRE, etc). Dans le même temps, elles doivent répondre à une avalanche croissante de demandes, tout en maintenant un niveau de qualité de service optimal.
Habitué des environnements développeurs, les transformations agiles négligent les particularités des équipes OPS. Lors de ce comptoir, nous vous partagerons notre proposition de valeur de l'agilité@OPS, qui embarquera vos équipes OPS en Classe Business (Agility), et leur fera dire : "nous ne reviendrons pas en arrière".
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO Technology
En cette année 2024 qui s’annonce sous le signe de la complexité, avec :
- L’explosion de la Gen AI
-Un contexte socio-économique sous tensions
- De forts enjeux sur le Sustainable et la régulation IT
- Une archipélisation des lieux de travail post-Covid
Découvrez les Tech trends incontournables pour délivrer vos produits stratégiques.
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
5. 5
Sommaire
1. Tester le coeur du métier
1.1. TDD et tests dʼacceptance unitaires
1.2. Sacraliser le domaine métier
1.3. Mutation testing
1.4. BDD et documentation vivante
2. Tester les frontières
2.2. Integration tests
2.3. Contract testing
2.4. UI testing
3. Vers lʼinfini et au delà
3.1. Exploration testing
3.2. Property Based Testing
3.3. Testing in production
Retour aux bases - 1ère moitié
Allons plus loin - 2nd moitié
6. Cette conférence est:
- Un avis basé sur nos
expériences
- Basée sur nos définitions
- Limité par lʼétat de nos
connaissances
- Limité par le temps
6
7. “Standing on the shoulder of giants”
7
Merci à
Kent Beck
Martin Fowler
Ian Cooper
Seb Rose
Thomas Pierrain
Et beaucoup dʼautres :)
8. Notre exemple pratique : fruit shop kata
8
Une caisse enregistreuse
Un panier de fruits
Des réductions
- 1 offert pour X fruits achetés
- 200c de réduction si plus de 10 fruits
12. Pourquoi tester ?
- Aligner le code avec le besoin
- Éliminer la peur du changement
- Créer un filet de sécurité qui rend le déploiement en
production plus sûr.
- Avoir un premier utilisateur du code (feedback court)
12
14. Qu’est-ce qu’un bon test ? (FIRST)
- Rapide
- (Isolé) Indépendant
- Répétable
- Auto-vérifiable
- Au bon moment (TDD ?)
14
15. Un test d’acceptance
unitaire
est rapide, en mémoire, cohérent, automatisé et reproductible
et permet de valider un comportement / règle métier en isolation
des autres et des effets de bords
15
16. “
Un test unitaire est un test rapide, en mémoire, cohérent, automatisé et reproductible
d'une unité de travail fonctionnelle du système.
Une unité de travail est un scénario fonctionnel du système. Elle peut être aussi courte
qu'une fonction, ou couvrir plusieurs classes et fonctions, et elle fournit une valeur
interne ou commerciale au système testé.
-- Roy Osherove “The Art of unit testing”
16
17. Zen
Les tests ne prouvent pas
lʼabsence dʼerreurs.
Mais la présence
dʼune correction à une erreur
(aka fonctionnel attendu)
17
Ce qui nous
amène à TDD
18. Test Driven Development
18
Traduire une exigence
en un test falsifiable.
Le test représente un
besoin métier.
Le code compile.
Ecrire le code le plus
simple pour faire
passer le test.
Nʼhésitez pas à tricher
!
“do it sinfully”
Vous pouvez ré-écrire (refactor) et
généraliser le code en y mettant
design, pattern, beauté.
19. TDD similaire à la méthode scientifique
La méthode scientifique TDD
Question Besoin
Prediction Sortie attendue
Expérimentation Lancer le test
Sujet de l’expérimentation Code de l’implémentation
On est lʼopposée du test de non régression
20. Le TDD c’est dur !
- Discipline
- Désapprendre
- Comprendre le besoin
- Petit pas
○ Test && Commit || Revert
Plus de détails avec lʼarticle de Dorra Bartaguiz
https://www.arolla.fr/blog/2020/03/comment-
reussir-son-regime-tdd/
20
21. Mais cela a de gros avantages
- Une meilleur compréhension du besoin
- De meilleurs tests (aka documentation)
- Du meilleur code
- Moins de complexité accidentelle
- Du design émergent
21
23. L’isolation, l’incompréhension du test unitaire
Lʼisolation ce nʼest pas :
une classe == une classe de test.
Ce qui mène à la sur-utilisation
des mocks.
Ce qui mène à la colère.
(TDD is dead)
23
24. D’autres raisons de cette colère
- Si changer lʼimplémentation casse régulièrement
beaucoup de tests
- Si lʼintention des tests est difficile à comprendre
- Sʼil y a un déséquilibre entre les tests et
lʼimplémentation (ou le System Under Test)
24
38. “Gold
standard”
Imaginée dans en 1971 avec une 1ère implémentation en 1980,
le mutation testing détecte si chaque ligne est testée de
manière significative.
38
39. Mutants
Les mutations sont automatiquement introduites
dans le code, puis les tests sont exécutés.
Si les tests échouent <> la mutation est tuée
Si vos tests réussissent <> la mutation est vivante 39
40. 40
Exemples de mutations et de résultat possible
- Opérateurs (Math,
Comparaison …)
- Inverser les
conditions
- Changer les
valeurs de retours
- Ne pas appeler les
méthodes n’ayant
pas de retours
https://pitest.org/qui
ckstart/mutators
43. 43
“Nos devs et le métier ne se comprennent pas !
Comment faire ?”
“Ok, on va imposer
Cucumber !”
44. 44
Un exemple de Guerkin
Feature: Pet store queries
Scenario: Get mammals
Given a logged in user :
| email | type |
| a.user@mail.com | Buyer |
And the pets :
| name | race | category | color | sex |
| Bobby | Dog | mammal | black | male |
| Nemo | Goldfish | fish | red | male |
| Milo | Cat | mammal | gold | female |
When I send a 'GET' request to '{base}/pets'
And I add the query string parameters:
| sort | filter |
| desc | mammal |
Then I should receive a response with the status 200
And the response body json path at "$.[0].type" should equal "Cat"
And the response body json path at "$.[1].type" should equal "Dog"
48. Découverte
- Objectif : formaliser lʼespace du
problème
- Avec : 3 amigos (Dev + QA +
Métier/PO)
- Atelier : example mapping
48
49. 7 bonnes pratiques
49
- Exprimer lʼintention
- Utiliser le langage du métier
- Cacher les détails
- Utiliser des personas (utilisateur et objets)
- Expliciter le “background”
- Un seul “when”
- F.I.R.S.T
http://www.thinkcode.se/blog/2016/06/22/cucumber-antipatterns
Documenter
50. 50
Feature: Pet store queries
Scenario: Get mammals
Given a logged in user :
| email | type |
| a.user@mail.com | customer |
And the pets :
| name | race | category | color | sex |
| Bobby | Dog | mammal | black | male |
| Nemo | Goldfish | fish | red | male |
| Milo | Cat | mammal | gold | female |
When I send a 'GET' request to '{base}/pets'
And I add the query string parameters:
| sort | filter |
| desc | mammal |
Then I should receive a response with the status 200
And the response body json path at "$.[0].type" should equal "Cat"
And the response body json path at "$.[1].type" should equal "Dog"
51. 51
Feature: Pet store queries
Customers wants to filter and sort animals to quickly find the one
that will suit them.
Filtering should be possible by group, species and/or breed.
Background:
Given 'customer' is logged in
And the pets :
| race | category |
| Dog | mammal |
| Cat | mammal |
| Goldfish | fish |
Scenario: Sort and filter pet types
Given 'ascending' sort has been selected
And 'mammal' filter has been selected
When retrieving list of pets
Then results are naturally ordered by name:
| Cat |
| Dog |
52. 52
Créer de la documentation vivante
Par exemple Cukedoctor permet de créer un site statique
53. pro-tips
Si le métier ne lit pas votre
Gherkin, nʼen écrivez pas.
Écrivez des tests
dʼacceptances unitaires
proprement
53
56. Exemple pratique
56
Le métier ne comprend pas la
réduction sur les fruits locaux.
Celle-ci ne semble pas fixe.
Le jira parle dʼune réduction de 200c.
78. 78
“Il faudrait tout tester du point de vue de l’utilisateur
! ”
“Ok, on va lancer
la plateforme sur
un env de test et
on va utiliser un
framework de
test E2E ! ”
79. 79
Web : CypressJS, Puppeeter/Playwright/Webdriver, Codecept
- Android : Expresso - iOS: XCTest - Multi : Browserstack
80. 80
- Coûteux
- Lents (réseau)
- Non répétable
- Imprécis
- Difficile à analyser
Malheureusement, les tests UI sont (souvent)
81. Le graal
Avoir un framework qui puisse se
synchroniser avec lʼUI (composée de
tâche asynchrone).
Même dans ce cas, lʼE2E reste
déconseillé.
81
82. 82
1ère possibilité
Tester uniquement le front en mockant le back-end
Cela permet de :
- Maîtriser les données
- Avoir peu ou pas de lenteur due au réseau
Les fronts ont leur propre pyramide de tests (Unit + UI)
83. 83
2ème possibilité
Tester quelques scénarios typiques dʼutilisation en E2E
- loi des 20/80
Par exemple:
Smoke tests en prod
Feature: Pizza purchase journey
@journey
Scenario: Pay-on-collection journey
* Reggie visits our website
* he adds a pizza to his basket
* he enters valid contact details
* he chooses pay-on-collection
* he receives an order confirmation
84. 84
Indispensable ! Le pattern Page Object
Attention à la duplication !
Représentez les pages par
des “objets” avec lesquels
les scénarios vont interagir.
Ces objets fournissent une
API plus métier et encapsule
lʼaccès / interaction lié au
DOM
Autres : app action (cypress), Screenplay pattern
87. QA
On parle des tests depuis le début
sans parler du rôle de QA.
Étonnant non ?
87
88. Nos QAs vérifient que les devs ont bien
fait leur travail
88
https://dannorth.net/2021/07/26/we-need-to-talk-about-testing/
89. Pourquoi faire des tests exploratoires ?
- Progresser dans la compréhension profonde du
produit / métier
- Améliorer lʼutilisabilité et la stabilité
- Pousser le produit dans ses retranchements
89
91. “
A QA engineer walks into a bar.
Orders a beer. Orders 0 beers. Orders
999999999 beers. Orders a lizard. Orders
-1 beers. Orders a sfdeljknesv.
91
93. Pourquoi faire des tests exploratoires ?
- Progresser dans la compréhension profonde du
produit / métier
- Améliorer lʼutilisabilité et la stabilité
- Pousser le produit dans ses retranchements
Une très bonne façon de trouver des anomalies sur le
besoin et lʼimplémentation qui seraient difficilement
découverts par des tests formels
93
95. Exemple pratique
95
Quand jʼajoute 11 fraises au prix
dʼ25c avec une offre dʼune fraise
offerte pour 4 achetées et les offres
du panier :
- Plus de 4 pommes
- Plus de 10 fruits
- Fruits locaux
Le total affiche -20c
102. 102
Trouver des propriétés
- Généraliser à partir dʼun exemple
- Trouver des invariants (propriété toujours vraie)
- Trouver des symétries
- Comparer à un modèle
110. Il n‘est pas
possible de
prévoir toutes
les conditions
d’échec en
dehors de la
prod
110
111. “
111
Lorsque les systèmes tombent en panne, ils le font
toujours de manière surprenante et imprévisible.
-- Cindy Sridharan
@copyconstruct
112. Que se passe-t-il quand un incident arrive sur votre prod ?
“ Les systèmes doivent
continuer à fonctionner
même si ʻla maison est en
feuʼ. ”
-- Werner Vogels
CTO Amazon
112
113. Que se passe-t-il quand un incident arrive sur votre prod ?
“if it hurts, do it more
often, and bring the pain
forward.”
-- Continuous Delivery
113
114. “
114
Nous devions construire des systèmes qui acceptent
l'échec comme une occurrence naturelle, même si
nous ne savons pas ce quel pouvait être cet échec.
Les systèmes doivent continuer à fonctionner même
si "la maison est en feu".
-- Werner Vogels
CTO Amazon
118. Vers des applications anti-fragile ?
Fragile
118
Robuste
Résilient
Anti
fragile
Tests
pre-production
Peu de tests
Tests en
production
Amélioration de
la chaîne de tests
et de la qualité
du service
120. Et la sécurité ? Vaste sujet !
- De bonnes pratiques
vérifiables pré-prod
(OWASP)
- Voir les trés bonne confs de notre ami Julien
Topçu comme “Comment se faire hacker
bien comme il faut!”
- Des pratiques vérifiables en
prod (bug bounty)
120
122. 122
Une bonne stratégie de tests vous permet ...
- Dʼavoir la sérénité de changer lʼexistant
- Dʼavoir un cycle de feedback court
- De documenter votre code métier
- Dʼavoir le bon retour sur investissement
- De livrer régulièrement en production
- De créer une résilience opérationnelle
123. 123
Une bonne stratégie de tests est basée sur:
- Un maximum de tests orientés métier ultra rapide
- Un design permettant de les faciliter
- Lʼutilisation efficiente de tests dʼintégration, UI ou E2E
- La capacité dʼutiliser des outils de tests avancées
- Contract testing
- Fuzzing / Property based testing
- Mutation testing
- Lʼutilisation de lʼexpertise des QAs
- Le fait de ne jamais oublier que la production est la
seule vérité
129. 129
UI tests
E2E test
Tests bas niveau
(Test dʼune classe) Rend le design rigide
Couteux, lent, ...
Tests dʼintégration
Tests dʼacceptances
Tests Guerkin
“Pyramide” des tests
Le bon compromis
131. 131
Comment commencer
- Tests dʼacceptances unitaires
- Test dʼintégrations
- BDD
- Mutation Testing
- Property Based testing
- Testing in production
132. #DevoxxFR
Merci à vous et aux orgas !
Vous trouverez les slides ici :
http://shorturl.at/efIZ0
Et le code ici:
https://github.com/ygrenzinger/testing-overview-university
Presentation template by SlidesCarnival
Photographs by Unsplash
13
2
134. “
Quotations are commonly printed
as a means of inspiration and to
invoke philosophical thoughts
from the reader.
134
135. This is a slide title
◎ Here you have a list of items
◎ And some text
◎ But remember not to overload your slides with
content
Your audience will listen to you or read the content, but
wonʼt do both.
135
136. Big concept
Bring the attention of your
audience over a key concept
using icons or illustrations
136
137. White
Is the color of milk and fresh
snow, the color produced by the
combination of all the colors of
the visible spectrum.
You can also split your content
Black
Is the color of coal, ebony, and of
outer space. It is the darkest
color, the result of the absence of
or complete absorption of light.
137
138. In two or three columns
Yellow
Is the color of gold,
butter and ripe lemons.
In the spectrum of
visible light, yellow is
found between green
and orange.
Blue
Is the colour of the
clear sky and the deep
sea. It is located
between violet and
green on the optical
spectrum.
Red
Is the color of blood,
and because of this it
has historically been
associated with
sacrifice, danger and
courage.
138
139. A picture is worth a thousand words
A complex idea can be
conveyed with just a single
still image, namely making
it possible to absorb large
amounts of data quickly.
139
141. Use charts to explain your ideas
Gray
White Black
141
142. Or diagrams to explain complex ideas
Example text.
Lorem ipsum dolor sit amet,
consectetur adipiscing elit.
Nam venenatis nisi at nisl
tempor, et luctus diam
lobortis. Nulla sit amet metus
consequat velit iaculis
tempor.
Example text.
Lorem ipsum dolor sit amet,
consectetur adipiscing elit.
Nam venenatis nisi at nisl
tempor, et luctus diam
lobortis. Nulla sit amet metus
consequat velit iaculis
tempor.
142
143. And tables to compare data
A B C
Yellow 10 20 7
Blue 30 15 10
Orange 5 24 16
143
148. Let’s review some concepts
Yellow
Is the color of gold, butter and ripe
lemons. In the spectrum of visible
light, yellow is found between
green and orange.
Blue
Is the colour of the clear sky and
the deep sea. It is located between
violet and green on the optical
spectrum.
Red
Is the color of blood, and because
of this it has historically been
associated with sacrifice, danger
and courage.
Yellow
Is the color of gold, butter and ripe
lemons. In the spectrum of visible
light, yellow is found between
green and orange.
Blue
Is the colour of the clear sky and
the deep sea. It is located between
violet and green on the optical
spectrum.
Red
Is the color of blood, and because
of this it has historically been
associated with sacrifice, danger
and courage.
148
154. Credits
Special thanks to all the people who made and released
these awesome resources for free:
◎ Presentation template by SlidesCarnival
◎ Photographs by Unsplash
154
155. Presentation design
This presentations uses the following typographies and colors:
◎ Titles: Roboto Slab
◎ Body copy: Source Sans Pro
You can download the fonts on these pages:
https://www.fontsquirrel.com/fonts/roboto-slab
https://www.fontsquirrel.com/fonts/source-sans-pro
◎ Blue #0091ea
◎ Dark gray #263238
◎ Medium gray #607d8b
◎ Light gray #cfd8dc
You donʼt need to keep this slide in your presentation. Itʼs only here to serve you
as a design guide if you need to create new slides or download the fonts to edit
the presentation in PowerPoint®
155
156. 156
SlidesCarnival icons are editable shapes.
This means that you can:
● Resize them without losing quality.
● Change line color, width and style.
Isnʼt that nice? :)
Examples:
158. Now you can use any emoji as an icon!
And of course it resizes without losing quality and you can change the color.
How? Follow Google instructions
https://twitter.com/googledocs/status/730087240156643328
✋👆👉👍👤👦👧👨👩👪💃🏃
💑❤😂😉😋😒😭👶😸🐟🍒🍔
💣📌📖🔨🎃🎈🎨🏈🏰🌏🔌🔑
and many more...
��
158
159. Free templates for all your presentation needs
Ready to use,
professional and
customizable
100% free for personal
or commercial use
Blow your audience
away with attractive
visuals
For PowerPoint and
Google Slides