[{"data":1,"prerenderedAt":964},["ShallowReactive",2],{"/fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing":3,"navigation-fr-fr":180,"banner-fr-fr":615,"footer-fr-fr":623,"blog-post-authors-fr-fr-Byron Boots":862,"blog-related-posts-fr-fr-automating-with-gitlab-duo-part-2-complex-testing":877,"blog-promotions-fr-fr":902,"next-steps-fr-fr":955},{"id":4,"title":5,"authors":6,"body":8,"category":156,"date":157,"description":158,"extension":159,"externalUrl":160,"faq":160,"featured":161,"heroImage":162,"meta":163,"navigation":164,"path":165,"seo":166,"slug":171,"stem":172,"tags":173,"template":177,"updatedDate":178,"__hash__":179},"blogPosts/fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing.md","Automatisation avec GitLab Duo : comment générer des tests complexes (Partie 2) ",[7],"Byron Boots",{"type":9,"value":10,"toc":143},"minimark",[11,22,27,36,41,44,51,58,64,71,75,78,82,85,89,92,96,99,103,106,140],[12,13,14,15,21],"p",{},"Le premier article de notre série en trois parties sur la ",[16,17,20],"a",{"href":18,"rel":19},"https://about.gitlab.com/blog/automating-with-gitlab-duo-part-1-generating-tests/",[],"génération de tests avec GitLab Duo"," portait sur l'automatisation des tests de code. Nous allons maintenant partager les leçons que nous avons tirées de l'utilisation de l'IA pour la génération de tests.",[23,24,26],"h2",{"id":25},"quelles-sont-les-situations-rencontrées-et-les-solutions-apportées","Quelles sont les situations rencontrées et les solutions apportées ?",[12,28,29,30,35],{},"Dans l'ensemble, nous sommes satisfaits des résultats obtenus en utilisant ",[16,31,34],{"href":32,"rel":33},"https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/",[],"GitLab Duo"," pour générer des tests sur notre code. Comme pour toute génération de langage, certains cas ont nécessité des ajustements mineurs, tels que la correction des chemins d'importation ou la modification du contenu des jeux de données. Pour les cas les plus complexes, nous avons dû nous rappeler que les solutions d'IA manquent souvent de contexte. Voici comment nous avons géré les situations de test plus complexes avec GitLab Duo.",[37,38,40],"h3",{"id":39},"mise-à-jour-des-scénarios-de-test-existants","Mise à jour des scénarios de test existants",[12,42,43],{},"Comme c'est souvent le cas lors du développement d'un produit logiciel, nous avons rencontré des situations qui nécessitaient des mises à jour de tests existants. Plutôt que d'apporter manuellement des ajustements à une suite complète de tests pour un problème commun, nous avons tiré pleinement parti de la fenêtre GitLab Duo Chat dans VS Code. Nous avons par exemple utilisé le prompt de Chat « Veuillez mettre à jour les tests fournis pour utiliser unittest plutôt que pytest  » pour refactoriser les tests, puis nous avons collé les tests que nous voulions que GitLab Duo mette à jour.",[12,45,46],{},[47,48],"img",{"alt":49,"src":50},"Génération de tests automatisés","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099252/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750099252303.png",[12,52,53,56],{},[54,55],"br",{},[54,57],{},[12,59,60],{},[47,61],{"alt":62,"src":63},"Prompt de chat demandant l'utilisation d'unittest plutôt que pytest\n","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099252/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750099252304.png",[12,65,66,70],{},[67,68,69],"strong",{},"Remarque :"," nous avons copié-collé les recommandations de GitLab Duo dans notre code.",[37,72,74],{"id":73},"création-de-tests-pour-le-code-hérité","Création de tests pour le code hérité",[12,76,77],{},"La création de tests pour un code hérité dont nous savions qu'il fonctionnait est une autre situation difficile que nous avons rencontrée. Dans de telles circonstances, il était utile de fournir des extraits d'erreur avec les tests échoués et de demander à GitLab Duo de proposer de nouveaux tests. Un copier-coller complet depuis la fenêtre du terminal des échecs et des erreurs constatés vers Chat, accompagné de la demande « Veuillez expliquer et corriger ce test échoué » ou de prompts similaires, a permis d'obtenir un résumé des problèmes rencontrés par le test, ainsi qu'un nouveau test permettant de les résoudre. Nous avons constaté que cela nécessitait parfois plusieurs cycles de refactorisation au fur et à mesure que de nouvelles défaillances de test étaient identifiées. L'efficacité de GitLab Duo pour fournir diverses solutions de refactorisation a toutefois été rapide et a eu un effet positif sur la productivité des équipes.",[37,79,81],{"id":80},"gestion-des-abstractions-et-codes-complexes","Gestion des abstractions et codes complexes",[12,83,84],{},"Dans d'autres instances, la modularisation ou la complexité de notre code a entraîné des variations dans les résultats de GitLab Duo. Lors de la génération de tests, GitLab Duo a par exemple parfois généré une série de tests réussis et échoués en raison de différences dans l'approche des tests. Nous avons fourni à GitLab Duo son propre exemple de test réussi et lui avons demandé de modifier les tests individuels un par un pour qu'ils correspondent au style des tests réussis afin de maintenir la cohérence. Nous avons également fourni à GitLab Duo un fichier de tests de fonctionnement pour un objet ou une tâche similaire afin qu'il puisse refléter la structure.",[37,86,88],{"id":87},"vérification-de-la-conformité-du-code-généré-à-nos-standards","Vérification de la conformité du code généré à nos standards",[12,90,91],{},"Lors du développement d'un module Python, GitLab Duo a généré de nombreux tests à l'aide d'objets simulés Mock. Ces derniers nécessitaient souvent une refactorisation, en particulier en ce qui concerne la standardisation des noms. Dans de tels cas, nous avons pu utiliser GitLab Duo Chat pour refactoriser les tests avec des instructions sur les composants de test spécifiques à mettre à jour. Demander à GitLab Duo de procéder à ces changements a été beaucoup plus rapide que de refactoriser les tests individuellement, comme nous l'avions fait auparavant.",[37,93,95],{"id":94},"gestion-des-scénarios-non-couverts","Gestion des scénarios non couverts",[12,97,98],{},"GitLab Duo a généré des tests pour des scénarios supplémentaires que l'équipe n'avait pas pris en compte auparavant, augmentant ainsi la couverture des tests. Heureusement, nous avons pu utiliser GitLab Duo pour traiter rapidement et efficacement ces cas particuliers et étendre la couverture des tests, ce qui constitue une valeur ajoutée essentielle permettant à notre équipe de construire rapidement et de manière sûre un produit robuste.",[23,100,102],{"id":101},"quels-enseignements-avons-nous-tirés","Quels enseignements avons-nous tirés ?",[12,104,105],{},"Voici quelques leçons clés ayant contribué à notre réussite avec GitLab Duo :",[107,108,109,116,122,128,134],"ul",{},[110,111,112,115],"li",{},[67,113,114],{},"Rapidité et efficacité pour un développement et une itération accélérés :"," le rôle de GitLab Duo dans la génération de tests automatisés a été un accélérateur clé du développement et a permis à notre équipe de travailler plus rapidement et avec une plus grande confiance dans nos changements.",[110,117,118,121],{},[67,119,120],{},"Utilisation de prompts appropriés :"," en utilisant GitLab Duo pour notre cas d'utilisation, nous avons abordé l'ingénierie des prompts, un sujet clé en matière d'optimisation de l'apprentissage automatique. Nous avons parfois dû modifier notre question de quelques mots-clés pour obtenir la réponse idéale.",[110,123,124,127],{},[67,125,126],{},"Compréhension des frameworks et du code sous-jacents :"," lorsqu'un code généré par l'IA est intégré à un produit, ne serait-ce qu'à titre de test, il est essentiel de comprendre comment le code fonctionne afin de pouvoir le déboguer de manière adéquate et de demander des modifications en connaissance de cause.",[110,129,130,133],{},[67,131,132],{},"Compréhension de l'état final souhaité et des normes :"," de la même manière que l'on respecte les normes de codage pour le formatage et l'utilisation de la bibliothèque lorsqu'on développe sans IA, il est important de garder à l'esprit les résultats escomptés et les normes à respecter lors de l'utilisation de l'IA. GitLab Duo a besoin de contexte pour comprendre les normes de codage, il est donc essentiel que les membres de l'équipe qui utilisent GitLab Duo assurent une supervision adéquate de ses résultats afin de garantir le respect de la qualité ainsi que d'autres attentes.",[110,135,136,139],{},[67,137,138],{},"GitLab Duo ne remplace pas tous les tests :"," bien que nous utilisions GitLab Duo de manière significative pour générer des tests automatisés, ce dernier ne remplace pas nos autres tests et la supervision humaine. Les tests fonctionnels, les tests d'intégration et d'autres encore occupent toujours une place importante dans le processus d'assurance qualité et dans le cycle du développement logiciel.",[12,141,142],{},"Dans le prochain article de cette série, nous aborderons un test que nous avons effectué pour valider l'impact de GitLab Duo sur les tests automatisés de notre équipe et nous discuterons des résultats impressionnants que nous avons obtenus jusqu'à présent.",{"title":144,"searchDepth":145,"depth":145,"links":146},"",2,[147,155],{"id":25,"depth":145,"text":26,"children":148},[149,151,152,153,154],{"id":39,"depth":150,"text":40},3,{"id":73,"depth":150,"text":74},{"id":80,"depth":150,"text":81},{"id":87,"depth":150,"text":88},{"id":94,"depth":150,"text":95},{"id":101,"depth":145,"text":102},"ai","2024-12-10","Découvrez comment nous générons des tests complexes en utilisant les fonctionnalités alimentées par l’IA de GitLab Duo.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099243/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%284%29_3LZkiDjHLjhqEkvOvBsVKp_1750099243011.png",{},true,"/fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing",{"ogTitle":167,"ogImage":162,"ogDescription":158,"ogSiteName":168,"noIndex":161,"ogType":169,"ogUrl":170,"title":167,"canonicalUrls":170,"description":158},"Comment générer des tests complexes avec GitLab Duo","https://about.gitlab.com","article","https://about.gitlab.com/blog/automating-with-gitlab-duo-part-2-complex-testing","automating-with-gitlab-duo-part-2-complex-testing","fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing",[174,175,176],"AI","testing","DevSecOps platform","BlogPost","2025-01-14","Efq0Q6K3qdmVs7fiEAjJD4r6oPB4EYEflegqP3Y2gRM",{"logo":181,"freeTrial":186,"sales":191,"login":196,"items":201,"search":530,"minimal":566,"duo":585,"switchNav":594,"pricingDeployment":605},{"config":182},{"href":183,"dataGaName":184,"dataGaLocation":185},"/fr-fr/","gitlab logo","header",{"text":187,"config":188},"Commencer un essai gratuit",{"href":189,"dataGaName":190,"dataGaLocation":185},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":192,"config":193},"Demander une démo",{"href":194,"dataGaName":195,"dataGaLocation":185},"/fr-fr/sales/?contact-topic=request-demo","sales",{"text":197,"config":198},"Connexion",{"href":199,"dataGaName":200,"dataGaLocation":185},"https://gitlab.com/users/sign_in/","sign in",[202,231,333,338,452,508],{"text":203,"config":204,"menu":206},"Plateforme",{"dataNavLevelOne":205},"platform",{"type":207,"columns":208},"cards",[209,215,223],{"title":203,"description":210,"link":211},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":212,"config":213},"Explorer notre plateforme",{"href":214,"dataGaName":205,"dataGaLocation":185},"/fr-fr/platform/",{"title":216,"description":217,"link":218},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":219,"config":220},"Découvrir GitLab Duo",{"href":221,"dataGaName":222,"dataGaLocation":185},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":224,"description":225,"link":226},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":227,"config":228},"En savoir plus",{"href":229,"dataGaName":230,"dataGaLocation":185},"/fr-fr/why-gitlab/","why gitlab",{"text":232,"left":164,"config":233,"menu":235},"Produit",{"dataNavLevelOne":234},"solutions",{"type":236,"link":237,"columns":241,"feature":312},"lists",{"text":238,"config":239},"Voir toutes les solutions",{"href":240,"dataGaName":234,"dataGaLocation":185},"/fr-fr/solutions/",[242,267,290],{"title":243,"description":244,"link":245,"items":250},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":246},{"icon":247,"href":248,"dataGaName":249,"dataGaLocation":185},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[251,255,258,263],{"text":252,"config":253},"CI/CD",{"href":254,"dataGaLocation":185,"dataGaName":252},"/fr-fr/solutions/continuous-integration/",{"text":216,"config":256},{"href":221,"dataGaLocation":185,"dataGaName":257},"gitlab duo agent platform - product menu",{"text":259,"config":260},"Gestion du code source",{"href":261,"dataGaLocation":185,"dataGaName":262},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":264,"config":265},"Livraison de logiciels automatisée",{"href":248,"dataGaLocation":185,"dataGaName":266},"Automated software delivery",{"title":268,"description":269,"link":270,"items":275},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":271},{"href":272,"dataGaName":273,"dataGaLocation":185,"icon":274},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[276,280,285],{"text":277,"config":278},"Tests de sécurité des applications",{"href":272,"dataGaName":279,"dataGaLocation":185},"Application security testing",{"text":281,"config":282},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":283,"dataGaLocation":185,"dataGaName":284},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":286,"config":287},"Conformité logicielle",{"href":288,"dataGaName":289,"dataGaLocation":185},"/fr-fr/solutions/software-compliance/","software compliance",{"title":291,"link":292,"items":297},"Mesures",{"config":293},{"icon":294,"href":295,"dataGaName":296,"dataGaLocation":185},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[298,302,307],{"text":299,"config":300},"Visibilité et mesures",{"href":295,"dataGaLocation":185,"dataGaName":301},"Visibility and Measurement",{"text":303,"config":304},"Gestion de la chaîne de valeur",{"href":305,"dataGaLocation":185,"dataGaName":306},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":308,"config":309},"Analyses et informations",{"href":310,"dataGaLocation":185,"dataGaName":311},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":313,"type":236,"items":314},"GitLab",[315,321,327],{"text":316,"config":317},"Entreprises",{"icon":318,"href":319,"dataGaLocation":185,"dataGaName":320},"Building","/fr-fr/enterprise/","enterprise",{"text":322,"config":323},"Pour les PME",{"icon":324,"href":325,"dataGaLocation":185,"dataGaName":326},"Work","/fr-fr/small-business/","small business",{"text":328,"config":329},"Pour le secteur public",{"icon":330,"href":331,"dataGaLocation":185,"dataGaName":332},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":334,"config":335},"Tarifs",{"href":336,"dataGaName":337,"dataGaLocation":185,"dataNavLevelOne":337},"/fr-fr/pricing/","pricing",{"text":339,"config":340,"menu":342},"Ressources",{"dataNavLevelOne":341},"resources",{"type":236,"link":343,"columns":347,"feature":441},{"text":344,"config":345},"Afficher toutes les ressources",{"href":346,"dataGaName":341,"dataGaLocation":185},"/fr-fr/resources/",[348,381,408],{"title":349,"items":350},"Premiers pas",[351,356,361,366,371,376],{"text":352,"config":353},"Installation",{"href":354,"dataGaName":355,"dataGaLocation":185},"/fr-fr/install/","install",{"text":357,"config":358},"Guides de démarrage",{"href":359,"dataGaName":360,"dataGaLocation":185},"/fr-fr/get-started/","quick setup checklists",{"text":362,"config":363},"Apprentissage",{"href":364,"dataGaLocation":185,"dataGaName":365},"https://university.gitlab.com/","learn",{"text":367,"config":368},"Documentation",{"href":369,"dataGaName":370,"dataGaLocation":185},"https://docs.gitlab.com/","product documentation",{"text":372,"config":373},"Vidéos sur les bonnes pratiques",{"href":374,"dataGaName":375,"dataGaLocation":185},"/fr-fr/getting-started-videos/","best practice videos",{"text":377,"config":378},"Intégrations",{"href":379,"dataGaName":380,"dataGaLocation":185},"/fr-fr/integrations/","integrations",{"title":382,"items":383},"Découvrir",[384,389,394,399,403],{"text":385,"config":386},"Témoignages clients",{"href":387,"dataGaName":388,"dataGaLocation":185},"/fr-fr/customers/","customer success stories",{"text":390,"config":391},"Blog",{"href":392,"dataGaName":393,"dataGaLocation":185},"/fr-fr/blog/","blog",{"text":395,"config":396},"Demo Hub",{"href":397,"dataGaName":398,"dataGaLocation":185},"/fr-fr/demo-hub/","demo hub",{"text":400,"config":401},"The Source",{"href":402,"dataGaName":393,"dataGaLocation":185},"/fr-fr/the-source/",{"text":404,"config":405},"Travail à distance",{"href":406,"dataGaName":407,"dataGaLocation":185},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":409,"items":410},"Connecter",[411,416,421,426,431,436],{"text":412,"config":413},"Services GitLab",{"href":414,"dataGaName":415,"dataGaLocation":185},"/fr-fr/services/","services",{"text":417,"config":418},"Contribuer",{"href":419,"dataGaName":420,"dataGaLocation":185},"https://contributors.gitlab.com","contribute",{"text":422,"config":423},"Communauté",{"href":424,"dataGaName":425,"dataGaLocation":185},"/community/","community",{"text":427,"config":428},"Forum",{"href":429,"dataGaName":430,"dataGaLocation":185},"https://forum.gitlab.com/","forum",{"text":432,"config":433},"Événements",{"href":434,"dataGaName":435,"dataGaLocation":185},"/events/","events",{"text":437,"config":438},"Partenaires",{"href":439,"dataGaName":440,"dataGaLocation":185},"/fr-fr/partners/","partners",{"config":442,"title":445,"text":446,"link":447},{"background":443,"textColor":444},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Nouveautés de GitLab","Découvrez les dernières fonctionnalités et améliorations.",{"text":448,"config":449},"Lire les articles les plus récents",{"href":450,"dataGaName":451,"dataGaLocation":185},"/fr-fr/whats-new/","whats new",{"text":453,"config":454,"menu":456},"Société",{"dataNavLevelOne":455},"company",{"type":236,"columns":457},[458],{"items":459},[460,465,471,473,478,483,488,493,498,503],{"text":461,"config":462},"À propos",{"href":463,"dataGaName":464,"dataGaLocation":185},"/fr-fr/company/","about",{"text":466,"config":467,"footerGa":470},"Carrières",{"href":468,"dataGaName":469,"dataGaLocation":185},"/jobs/","jobs",{"dataGaName":469},{"text":432,"config":472},{"href":434,"dataGaName":435,"dataGaLocation":185},{"text":474,"config":475},"Leadership",{"href":476,"dataGaName":477,"dataGaLocation":185},"/company/team/e-group/","leadership",{"text":479,"config":480},"Manuel",{"href":481,"dataGaName":482,"dataGaLocation":185},"https://handbook.gitlab.com/","handbook",{"text":484,"config":485},"Relations avec les investisseurs",{"href":486,"dataGaName":487,"dataGaLocation":185},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":489,"config":490},"Trust Center",{"href":491,"dataGaName":492,"dataGaLocation":185},"/fr-fr/security/","trust center",{"text":494,"config":495},"Centre pour la transparence de l'IA",{"href":496,"dataGaName":497,"dataGaLocation":185},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":499,"config":500},"Newsletter",{"href":501,"dataGaName":502,"dataGaLocation":185},"/company/contact/#contact-forms","newsletter",{"text":504,"config":505},"Presse",{"href":506,"dataGaName":507,"dataGaLocation":185},"/press/","press",{"text":509,"config":510,"menu":511},"Nous contacter",{"dataNavLevelOne":455},{"type":236,"columns":512},[513],{"items":514},[515,520,525],{"text":516,"config":517},"Contacter l'équipe commerciale",{"href":518,"dataGaName":519,"dataGaLocation":185},"/fr-fr/sales/","talk to sales",{"text":521,"config":522},"Assistance GitLab",{"href":523,"dataGaName":524,"dataGaLocation":185},"https://support.gitlab.com/hc/en-us","support portal",{"text":526,"config":527},"Portail clients GitLab",{"href":528,"dataGaName":529,"dataGaLocation":185},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":531,"login":532,"suggestions":539},"Fermer",{"text":533,"link":534},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":535,"config":536},"GitLab.com",{"href":199,"dataGaName":537,"dataGaLocation":538},"search login","search",{"text":540,"default":541},"Suggestions",[542,545,550,552,557,562],{"text":216,"config":543},{"href":221,"dataGaName":544,"dataGaLocation":538},"GitLab Duo Agent Platform",{"text":546,"config":547},"Suggestions de code (IA)",{"href":548,"dataGaName":549,"dataGaLocation":538},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":252,"config":551},{"href":254,"dataGaName":252,"dataGaLocation":538},{"text":553,"config":554},"GitLab sur AWS",{"href":555,"dataGaName":556,"dataGaLocation":538},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":558,"config":559},"GitLab sur Google Cloud",{"href":560,"dataGaName":561,"dataGaLocation":538},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":563,"config":564},"Pourquoi utiliser GitLab ?",{"href":229,"dataGaName":565,"dataGaLocation":538},"Why GitLab?",{"freeTrial":567,"mobileIcon":572,"desktopIcon":577,"secondaryButton":580},{"text":568,"config":569},"Commencer votre essai gratuit",{"href":570,"dataGaName":190,"dataGaLocation":571},"https://gitlab.com/-/trials/new/","nav",{"altText":573,"config":574},"Icône GitLab",{"src":575,"dataGaName":576,"dataGaLocation":571},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":573,"config":578},{"src":579,"dataGaName":576,"dataGaLocation":571},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":581,"config":582},"Commencer",{"href":583,"dataGaName":584,"dataGaLocation":571},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":586,"mobileIcon":590,"desktopIcon":592},{"text":587,"config":588},"En savoir plus sur GitLab Duo",{"href":221,"dataGaName":589,"dataGaLocation":571},"gitlab duo",{"altText":573,"config":591},{"src":575,"dataGaName":576,"dataGaLocation":571},{"altText":573,"config":593},{"src":579,"dataGaName":576,"dataGaLocation":571},{"button":595,"mobileIcon":600,"desktopIcon":602},{"text":596,"config":597},"/switch",{"href":598,"dataGaName":599,"dataGaLocation":571},"#contact","switch",{"altText":573,"config":601},{"src":575,"dataGaName":576,"dataGaLocation":571},{"altText":573,"config":603},{"src":604,"dataGaName":576,"dataGaLocation":571},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":606,"mobileIcon":611,"desktopIcon":613},{"text":607,"config":608},"Retour aux tarifs",{"href":336,"dataGaName":609,"dataGaLocation":571,"icon":610},"back to pricing","GoBack",{"altText":573,"config":612},{"src":575,"dataGaName":576,"dataGaLocation":571},{"altText":573,"config":614},{"src":579,"dataGaName":576,"dataGaLocation":571},{"title":616,"button":617,"config":621},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":227,"config":618},{"href":619,"dataGaName":620,"dataGaLocation":185},"/fr-fr/gitlab-orbit/","orbit",{"layout":622,"disabled":161},"release",{"data":624},{"text":625,"source":626,"edit":632,"contribute":637,"config":641,"items":646,"minimal":854},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":627,"config":628},"Afficher le code source de la page",{"href":629,"dataGaName":630,"dataGaLocation":631},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":633,"config":634},"Modifier cette page",{"href":635,"dataGaName":636,"dataGaLocation":631},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":417,"config":638},{"href":639,"dataGaName":640,"dataGaLocation":631},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":642,"facebook":643,"youtube":644,"linkedin":645},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[647,693,746,789,821],{"title":334,"links":648,"subMenu":663},[649,653,658],{"text":650,"config":651},"Voir les forfaits",{"href":336,"dataGaName":652,"dataGaLocation":631},"view plans",{"text":654,"config":655},"GitLab Premium",{"href":656,"dataGaName":657,"dataGaLocation":631},"/fr-fr/pricing/premium/","why premium",{"text":659,"config":660},"GitLab Ultimate",{"href":661,"dataGaName":662,"dataGaLocation":631},"/fr-fr/pricing/ultimate/","why ultimate",[664],{"title":509,"links":665},[666,668,670,673,678,683,688],{"text":516,"config":667},{"href":518,"dataGaName":195,"dataGaLocation":631},{"text":521,"config":669},{"href":523,"dataGaName":524,"dataGaLocation":631},{"text":671,"config":672},"Portail clients",{"href":528,"dataGaName":529,"dataGaLocation":631},{"text":674,"config":675},"Statut",{"href":676,"dataGaName":677,"dataGaLocation":631},"https://status.gitlab.com/","status",{"text":679,"config":680},"Conditions d'utilisation",{"href":681,"dataGaName":682,"dataGaLocation":631},"/terms/","terms of use",{"text":684,"config":685},"Politique de confidentialité",{"href":686,"dataGaName":687,"dataGaLocation":631},"/fr-fr/privacy/","privacy statement",{"text":689,"config":690},"Gestion des cookies",{"dataGaName":691,"dataGaLocation":631,"id":692,"isOneTrustButton":164},"cookie preferences","ot-sdk-btn",{"title":232,"links":694,"subMenu":703},[695,699],{"text":696,"config":697},"Plateforme DevSecOps",{"href":214,"dataGaName":698,"dataGaLocation":631},"devsecops platform",{"text":700,"config":701},"Développement assisté par l'IA",{"href":221,"dataGaName":702,"dataGaLocation":631},"ai-assisted development",[704],{"title":705,"links":706},"Thèmes",[707,711,716,721,726,731,736,741],{"text":252,"config":708},{"href":709,"dataGaName":710,"dataGaLocation":631},"/fr-fr/topics/ci-cd/","cicd",{"text":712,"config":713},"GitOps",{"href":714,"dataGaName":715,"dataGaLocation":631},"/fr-fr/topics/gitops/","gitops",{"text":717,"config":718},"DevOps",{"href":719,"dataGaName":720,"dataGaLocation":631},"/fr-fr/topics/devops/","devops",{"text":722,"config":723},"Contrôle de version",{"href":724,"dataGaName":725,"dataGaLocation":631},"/fr-fr/topics/version-control/","version control",{"text":727,"config":728},"DevSecOps",{"href":729,"dataGaName":730,"dataGaLocation":631},"/fr-fr/topics/devsecops/","devsecops",{"text":732,"config":733},"Cloud-native",{"href":734,"dataGaName":735,"dataGaLocation":631},"/fr-fr/topics/cloud-native/","cloud native",{"text":737,"config":738},"IA pour la programmation",{"href":739,"dataGaName":740,"dataGaLocation":631},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":742,"config":743},"IA agentique",{"href":744,"dataGaName":745,"dataGaLocation":631},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":747,"links":748},"Solutions",[749,752,754,759,762,765,768,771,773,776,779,784],{"text":277,"config":750},{"href":272,"dataGaName":751,"dataGaLocation":631},"Application Security Testing",{"text":264,"config":753},{"href":248,"dataGaName":249,"dataGaLocation":631},{"text":755,"config":756},"Développement Agile",{"href":757,"dataGaName":758,"dataGaLocation":631},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":259,"config":760},{"href":261,"dataGaName":761,"dataGaLocation":631},"source code management",{"text":252,"config":763},{"href":254,"dataGaName":764,"dataGaLocation":631},"continuous integration & delivery",{"text":303,"config":766},{"href":305,"dataGaName":767,"dataGaLocation":631},"value stream management",{"text":712,"config":769},{"href":770,"dataGaName":715,"dataGaLocation":631},"/fr-fr/solutions/gitops/",{"text":316,"config":772},{"href":319,"dataGaName":320,"dataGaLocation":631},{"text":774,"config":775},"PME",{"href":325,"dataGaName":326,"dataGaLocation":631},{"text":777,"config":778},"Secteur public",{"href":331,"dataGaName":332,"dataGaLocation":631},{"text":780,"config":781},"Éducation",{"href":782,"dataGaName":783,"dataGaLocation":631},"/fr-fr/solutions/education/","education",{"text":785,"config":786},"Services financiers",{"href":787,"dataGaName":788,"dataGaLocation":631},"/fr-fr/solutions/finance/","financial services",{"title":339,"links":790},[791,793,795,797,800,802,805,807,809,811,813,815,817,819],{"text":352,"config":792},{"href":354,"dataGaName":355,"dataGaLocation":631},{"text":357,"config":794},{"href":359,"dataGaName":360,"dataGaLocation":631},{"text":362,"config":796},{"href":364,"dataGaName":365,"dataGaLocation":631},{"text":367,"config":798},{"href":369,"dataGaName":799,"dataGaLocation":631},"docs",{"text":390,"config":801},{"href":392,"dataGaName":393,"dataGaLocation":631},{"text":803,"config":804},"Nouveautés",{"href":450,"dataGaName":451,"dataGaLocation":631},{"text":385,"config":806},{"href":387,"dataGaName":388,"dataGaLocation":631},{"text":404,"config":808},{"href":406,"dataGaName":407,"dataGaLocation":631},{"text":412,"config":810},{"href":414,"dataGaName":415,"dataGaLocation":631},{"text":417,"config":812},{"href":419,"dataGaName":420,"dataGaLocation":631},{"text":422,"config":814},{"href":424,"dataGaName":425,"dataGaLocation":631},{"text":427,"config":816},{"href":429,"dataGaName":430,"dataGaLocation":631},{"text":432,"config":818},{"href":434,"dataGaName":435,"dataGaLocation":631},{"text":437,"config":820},{"href":439,"dataGaName":440,"dataGaLocation":631},{"title":453,"links":822},[823,825,827,829,831,833,838,843,845,847,849],{"text":461,"config":824},{"href":463,"dataGaName":455,"dataGaLocation":631},{"text":466,"config":826},{"href":468,"dataGaName":469,"dataGaLocation":631},{"text":474,"config":828},{"href":476,"dataGaName":477,"dataGaLocation":631},{"text":479,"config":830},{"href":481,"dataGaName":482,"dataGaLocation":631},{"text":484,"config":832},{"href":486,"dataGaName":487,"dataGaLocation":631},{"text":834,"config":835},"Développement durable",{"href":836,"dataGaName":837,"dataGaLocation":631},"/sustainability/","Sustainability",{"text":839,"config":840},"Diversité, inclusion et appartenance (DIB)",{"href":841,"dataGaName":842,"dataGaLocation":631},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":489,"config":844},{"href":491,"dataGaName":492,"dataGaLocation":631},{"text":499,"config":846},{"href":501,"dataGaName":502,"dataGaLocation":631},{"text":504,"config":848},{"href":506,"dataGaName":507,"dataGaLocation":631},{"text":850,"config":851},"Déclaration de transparence sur l'esclavage moderne",{"href":852,"dataGaName":853,"dataGaLocation":631},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":855},[856,858,860],{"text":679,"config":857},{"href":681,"dataGaName":682,"dataGaLocation":631},{"text":689,"config":859},{"dataGaName":691,"dataGaLocation":631,"id":692,"isOneTrustButton":164},{"text":684,"config":861},{"href":686,"dataGaName":687,"dataGaLocation":631},[863],{"id":864,"title":7,"body":160,"config":865,"content":867,"description":160,"extension":871,"meta":872,"navigation":164,"path":873,"seo":874,"stem":875,"__hash__":876},"blogAuthors/en-us/blog/authors/byron-boots.yml",{"template":866},"BlogAuthor",{"name":7,"config":868},{"headshot":869,"ctfId":870},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662281/Blog/Author%20Headshots/byron_boots_headshot.png","7ezFbRYF2Cu5JTBQXRp7mw","yml",{},"/en-us/blog/authors/byron-boots",{},"en-us/blog/authors/byron-boots","Qu4h1SMW7Bb32A8HZlFYMusWH2fvwt-ZKOKFRiZfm5s",[878,886,894],{"title":879,"description":880,"heroImage":881,"category":156,"date":882,"authors":883,"slug":885,"externalUrl":160},"Moderniser Java avec Cursor et GitLab","Ce tutoriel commence par la correction ciblée de tests, introduit des murs qualité et met en œuvre des modifications de code en tenant compte du contexte du cycle de développement, des tests et des preuves de revue.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776457632/llddiylsgwuze0u1rjks.png","2026-08-12",[884],"Michael Friedrich","modernize-java-with-cursor-and-gitlab",{"title":887,"description":888,"heroImage":889,"category":156,"date":890,"authors":891,"slug":893,"externalUrl":160},"Comment utiliser des agents d'IA pour migrer la limitation de débit de GitLab","Découvrez comment notre équipe composée de trois personnes a utilisé GitLab Duo Agent Platform, ainsi que d'autres outils d'IA, pour migrer avec succès le système de limitation de débit et les leçons que nous en avons tirées.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1773075582/yiosxfhwk8rfkulrtchv.png","2026-08-10",[892],"Sam Wiskow","ai-agents-for-migrating-rate-limiting-system",{"title":895,"description":896,"heroImage":897,"category":156,"date":898,"authors":899,"slug":901,"externalUrl":160},"Codage agentique : le contexte fait la différence","Les agents de codage accélèrent le développement. Grâce au contexte dans GitLab, les entreprises évitent les correctifs superficiels et raccourcissent les cycles de revue.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1773856365/gsx2c0vqlswox3ldmq88.jpg","2026-08-03",[900],"Jessica Taylor","agentic-coding-only-as-good-as-context",{"promotions":903},[904,917,929,941],{"id":905,"categories":906,"header":907,"text":908,"button":909,"image":914},"ai-modernization",[156],"L'IA tient-elle ses promesses à grande échelle ?","Le questionnaire ne prendra pas plus de 5 minutes.",{"text":910,"config":911},"Obtenez votre score de maturité IA",{"href":912,"dataGaName":913,"dataGaLocation":393},"/fr-fr/assessments/ai-modernization-assessment/","modernization assessment",{"config":915},{"src":916},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":918,"categories":919,"header":921,"text":908,"button":922,"image":926},"devops-modernization",[920,730],"product","Vous contentez-vous de gérer des outils ou de livrer des innovations ?",{"text":923,"config":924},"Obtenez votre score de maturité DevOps",{"href":925,"dataGaName":913,"dataGaLocation":393},"/fr-fr/assessments/devops-modernization-assessment/",{"config":927},{"src":928},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":930,"categories":931,"header":933,"text":908,"button":934,"image":938},"security-modernization",[932],"security","Faut-il sacrifier la rapidité pour garantir la sécurité ?",{"text":935,"config":936},"Obtenez votre score de maturité en matière de sécurité",{"href":937,"dataGaName":913,"dataGaLocation":393},"/fr-fr/assessments/security-modernization-assessment/",{"config":939},{"src":940},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":942,"paths":943,"header":946,"text":947,"button":948,"image":953},"github-azure-migration",[944,945],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Votre équipe est-elle prête pour la migration de GitHub vers Azure ?","GitHub a déjà commencé sa migration vers Azure. Découvrez ce que cela signifie pour vous.",{"text":949,"config":950},"Découvrez les différences entre GitLab et GitHub",{"href":951,"dataGaName":952,"dataGaLocation":393},"/fr-fr/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":954},{"src":928},{"header":956,"blurb":957,"button":958,"secondaryButton":962},"Commencez à développer plus rapidement dès aujourd'hui","Découvrez ce que votre équipe peut accomplir avec la plateforme d'orchestration intelligente pour le DevSecOps.\n",{"text":187,"config":959},{"href":960,"dataGaName":190,"dataGaLocation":961},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":516,"config":963},{"href":518,"dataGaName":195,"dataGaLocation":961},1786803763999]