[{"data":1,"prerenderedAt":782},["ShallowReactive",2],{"/fr-fr/blog/tags/testing/":3,"navigation-fr-fr":19,"banner-fr-fr":440,"footer-fr-fr":453,"testing-tag-page-fr-fr":665},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"content":8,"config":10,"_id":12,"_type":13,"title":14,"_source":15,"_file":16,"_stem":17,"_extension":18},"/fr-fr/blog/tags/testing","tags",false,"",{"tag":9,"tagSlug":9},"testing",{"template":11},"BlogTag","content:fr-fr:blog:tags:testing.yml","yaml","Testing","content","fr-fr/blog/tags/testing.yml","fr-fr/blog/tags/testing","yml",{"_path":20,"_dir":21,"_draft":6,"_partial":6,"_locale":7,"data":22,"_id":436,"_type":13,"title":437,"_source":15,"_file":438,"_stem":439,"_extension":18},"/shared/fr-fr/main-navigation","fr-fr",{"logo":23,"freeTrial":28,"sales":33,"login":38,"items":43,"search":377,"minimal":413,"duo":427},{"config":24},{"href":25,"dataGaName":26,"dataGaLocation":27},"/fr-fr/","gitlab logo","header",{"text":29,"config":30},"Commencer un essai gratuit",{"href":31,"dataGaName":32,"dataGaLocation":27},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":34,"config":35},"Contacter l'équipe commerciale",{"href":36,"dataGaName":37,"dataGaLocation":27},"/fr-fr/sales/","sales",{"text":39,"config":40},"Connexion",{"href":41,"dataGaName":42,"dataGaLocation":27},"https://gitlab.com/users/sign_in/","sign in",[44,88,187,192,298,358],{"text":45,"config":46,"cards":48,"footer":71},"Plateforme",{"dataNavLevelOne":47},"platform",[49,55,63],{"title":45,"description":50,"link":51},"La plateforme DevSecOps alimentée par l'IA la plus complète",{"text":52,"config":53},"Découvrir notre plateforme",{"href":54,"dataGaName":47,"dataGaLocation":27},"/fr-fr/platform/",{"title":56,"description":57,"link":58},"GitLab Duo (IA)","Créez des logiciels plus rapidement en tirant parti de l'IA à chaque étape du développement",{"text":59,"config":60},"Découvrez GitLab Duo",{"href":61,"dataGaName":62,"dataGaLocation":27},"/fr-fr/gitlab-duo/","gitlab duo ai",{"title":64,"description":65,"link":66},"Choisir GitLab","10 raisons pour lesquelles les entreprises choisissent GitLab",{"text":67,"config":68},"En savoir plus",{"href":69,"dataGaName":70,"dataGaLocation":27},"/fr-fr/why-gitlab/","why gitlab",{"title":72,"items":73},"Démarrer avec",[74,79,84],{"text":75,"config":76},"Ingénierie de plateforme",{"href":77,"dataGaName":78,"dataGaLocation":27},"/fr-fr/solutions/platform-engineering/","platform engineering",{"text":80,"config":81},"Expérience développeur",{"href":82,"dataGaName":83,"dataGaLocation":27},"/fr-fr/developer-experience/","Developer experience",{"text":85,"config":86},"MLOps",{"href":87,"dataGaName":85,"dataGaLocation":27},"/fr-fr/topics/devops/the-role-of-ai-in-devops/",{"text":89,"left":90,"config":91,"link":93,"lists":97,"footer":169},"Produit",true,{"dataNavLevelOne":92},"solutions",{"text":94,"config":95},"Voir toutes les solutions",{"href":96,"dataGaName":92,"dataGaLocation":27},"/fr-fr/solutions/",[98,124,147],{"title":99,"description":100,"link":101,"items":106},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":102},{"icon":103,"href":104,"dataGaName":105,"dataGaLocation":27},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[107,111,115,120],{"text":108,"config":109},"CI/CD",{"href":110,"dataGaLocation":27,"dataGaName":108},"/fr-fr/solutions/continuous-integration/",{"text":112,"config":113},"Développement assisté par l'IA",{"href":61,"dataGaLocation":27,"dataGaName":114},"AI assisted development",{"text":116,"config":117},"Gestion du code source",{"href":118,"dataGaLocation":27,"dataGaName":119},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":121,"config":122},"Livraison de logiciels automatisée",{"href":104,"dataGaLocation":27,"dataGaName":123},"Automated software delivery",{"title":125,"description":126,"link":127,"items":132},"Securité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":128},{"href":129,"dataGaName":130,"dataGaLocation":27,"icon":131},"/fr-fr/solutions/security-compliance/","security and compliance","ShieldCheckLight",[133,138,143],{"text":134,"config":135},"Application Security Testing",{"href":136,"dataGaName":137,"dataGaLocation":27},"/solutions/application-security-testing/","Application security testing",{"text":139,"config":140},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":141,"dataGaLocation":27,"dataGaName":142},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":144,"config":145},"Software Compliance",{"href":146,"dataGaName":144,"dataGaLocation":27},"/solutions/software-compliance/",{"title":148,"link":149,"items":154},"Mesures",{"config":150},{"icon":151,"href":152,"dataGaName":153,"dataGaLocation":27},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[155,159,164],{"text":156,"config":157},"Visibilité et mesures",{"href":152,"dataGaLocation":27,"dataGaName":158},"Visibility and Measurement",{"text":160,"config":161},"Gestion de la chaîne de valeur",{"href":162,"dataGaLocation":27,"dataGaName":163},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":165,"config":166},"Données d'analyse et informations clés",{"href":167,"dataGaLocation":27,"dataGaName":168},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":170,"items":171},"GitLab pour",[172,177,182],{"text":173,"config":174},"Entreprises",{"href":175,"dataGaLocation":27,"dataGaName":176},"/fr-fr/enterprise/","enterprise",{"text":178,"config":179},"PME",{"href":180,"dataGaLocation":27,"dataGaName":181},"/fr-fr/small-business/","small business",{"text":183,"config":184},"Secteur public",{"href":185,"dataGaLocation":27,"dataGaName":186},"/fr-fr/solutions/public-sector/","public sector",{"text":188,"config":189},"Tarifs",{"href":190,"dataGaName":191,"dataGaLocation":27,"dataNavLevelOne":191},"/fr-fr/pricing/","pricing",{"text":193,"config":194,"link":196,"lists":200,"feature":285},"Ressources",{"dataNavLevelOne":195},"resources",{"text":197,"config":198},"Afficher toutes les ressources",{"href":199,"dataGaName":195,"dataGaLocation":27},"/fr-fr/resources/",[201,234,257],{"title":202,"items":203},"Premiers pas",[204,209,214,219,224,229],{"text":205,"config":206},"Installation",{"href":207,"dataGaName":208,"dataGaLocation":27},"/fr-fr/install/","install",{"text":210,"config":211},"Guides de démarrage rapide",{"href":212,"dataGaName":213,"dataGaLocation":27},"/fr-fr/get-started/","quick setup checklists",{"text":215,"config":216},"Apprentissage",{"href":217,"dataGaLocation":27,"dataGaName":218},"https://university.gitlab.com/","learn",{"text":220,"config":221},"Documentation sur le produit",{"href":222,"dataGaName":223,"dataGaLocation":27},"https://docs.gitlab.com/","product documentation",{"text":225,"config":226},"Vidéos sur les bonnes pratiques",{"href":227,"dataGaName":228,"dataGaLocation":27},"/fr-fr/getting-started-videos/","best practice videos",{"text":230,"config":231},"Intégrations",{"href":232,"dataGaName":233,"dataGaLocation":27},"/fr-fr/integrations/","integrations",{"title":235,"items":236},"Découvrir",[237,242,247,252],{"text":238,"config":239},"Histoires de succès client",{"href":240,"dataGaName":241,"dataGaLocation":27},"/fr-fr/customers/","customer success stories",{"text":243,"config":244},"Blog",{"href":245,"dataGaName":246,"dataGaLocation":27},"/fr-fr/blog/","blog",{"text":248,"config":249},"Travail à distance",{"href":250,"dataGaName":251,"dataGaLocation":27},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":253,"config":254},"TeamOps",{"href":255,"dataGaName":256,"dataGaLocation":27},"/fr-fr/teamops/","teamops",{"title":258,"items":259},"Connecter",[260,265,270,275,280],{"text":261,"config":262},"Services GitLab",{"href":263,"dataGaName":264,"dataGaLocation":27},"/fr-fr/services/","services",{"text":266,"config":267},"Communauté",{"href":268,"dataGaName":269,"dataGaLocation":27},"/community/","community",{"text":271,"config":272},"Forum",{"href":273,"dataGaName":274,"dataGaLocation":27},"https://forum.gitlab.com/","forum",{"text":276,"config":277},"Événements",{"href":278,"dataGaName":279,"dataGaLocation":27},"/events/","events",{"text":281,"config":282},"Partenaires",{"href":283,"dataGaName":284,"dataGaLocation":27},"/fr-fr/partners/","partners",{"backgroundColor":286,"textColor":287,"text":288,"image":289,"link":293},"#2f2a6b","#fff","L'avenir du développement logiciel. Tendances et perspectives.",{"altText":290,"config":291},"carte promo The Source",{"src":292},"/images/navigation/the-source-promo-card.svg",{"text":294,"config":295},"Lire les articles les plus récents",{"href":296,"dataGaName":297,"dataGaLocation":27},"/fr-fr/the-source/","the source",{"text":299,"config":300,"lists":302},"Société",{"dataNavLevelOne":301},"company",[303],{"items":304},[305,310,316,318,323,328,333,338,343,348,353],{"text":306,"config":307},"À propos",{"href":308,"dataGaName":309,"dataGaLocation":27},"/fr-fr/company/","about",{"text":311,"config":312,"footerGa":315},"Emplois",{"href":313,"dataGaName":314,"dataGaLocation":27},"/jobs/","jobs",{"dataGaName":314},{"text":276,"config":317},{"href":278,"dataGaName":279,"dataGaLocation":27},{"text":319,"config":320},"Leadership",{"href":321,"dataGaName":322,"dataGaLocation":27},"/company/team/e-group/","leadership",{"text":324,"config":325},"Équipe",{"href":326,"dataGaName":327,"dataGaLocation":27},"/company/team/","team",{"text":329,"config":330},"Manuel",{"href":331,"dataGaName":332,"dataGaLocation":27},"https://handbook.gitlab.com/","handbook",{"text":334,"config":335},"Relations avec les investisseurs",{"href":336,"dataGaName":337,"dataGaLocation":27},"https://ir.gitlab.com/","investor relations",{"text":339,"config":340},"Centre de confiance",{"href":341,"dataGaName":342,"dataGaLocation":27},"/fr-fr/security/","trust center",{"text":344,"config":345},"Centre pour la transparence de l'IA",{"href":346,"dataGaName":347,"dataGaLocation":27},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":349,"config":350},"Newsletter",{"href":351,"dataGaName":352,"dataGaLocation":27},"/company/contact/","newsletter",{"text":354,"config":355},"Presse",{"href":356,"dataGaName":357,"dataGaLocation":27},"/press/","press",{"text":359,"config":360,"lists":361},"Nous contacter",{"dataNavLevelOne":301},[362],{"items":363},[364,367,372],{"text":34,"config":365},{"href":36,"dataGaName":366,"dataGaLocation":27},"talk to sales",{"text":368,"config":369},"Aide",{"href":370,"dataGaName":371,"dataGaLocation":27},"/support/","get help",{"text":373,"config":374},"Portail clients GitLab",{"href":375,"dataGaName":376,"dataGaLocation":27},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":378,"login":379,"suggestions":386},"Fermer",{"text":380,"link":381},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":382,"config":383},"gitlab.com",{"href":41,"dataGaName":384,"dataGaLocation":385},"search login","search",{"text":387,"default":388},"Suggestions",[389,392,397,399,404,409],{"text":56,"config":390},{"href":61,"dataGaName":391,"dataGaLocation":385},"GitLab Duo (AI)",{"text":393,"config":394},"Suggestions de code (IA)",{"href":395,"dataGaName":396,"dataGaLocation":385},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":108,"config":398},{"href":110,"dataGaName":108,"dataGaLocation":385},{"text":400,"config":401},"GitLab sur AWS",{"href":402,"dataGaName":403,"dataGaLocation":385},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":405,"config":406},"GitLab sur Google Cloud ",{"href":407,"dataGaName":408,"dataGaLocation":385},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":410,"config":411},"Pourquoi utiliser GitLab ?",{"href":69,"dataGaName":412,"dataGaLocation":385},"Why GitLab?",{"freeTrial":414,"mobileIcon":419,"desktopIcon":424},{"text":415,"config":416},"Commencer votre essai gratuit",{"href":417,"dataGaName":32,"dataGaLocation":418},"https://gitlab.com/-/trials/new/","nav",{"altText":420,"config":421},"Icône GitLab",{"src":422,"dataGaName":423,"dataGaLocation":418},"/images/brand/gitlab-logo-tanuki.svg","gitlab icon",{"altText":420,"config":425},{"src":426,"dataGaName":423,"dataGaLocation":418},"/images/brand/gitlab-logo-type.svg",{"freeTrial":428,"mobileIcon":432,"desktopIcon":434},{"text":429,"config":430},"En savoir plus sur GitLab Duo",{"href":61,"dataGaName":431,"dataGaLocation":418},"gitlab duo",{"altText":420,"config":433},{"src":422,"dataGaName":423,"dataGaLocation":418},{"altText":420,"config":435},{"src":426,"dataGaName":423,"dataGaLocation":418},"content:shared:fr-fr:main-navigation.yml","Main Navigation","shared/fr-fr/main-navigation.yml","shared/fr-fr/main-navigation",{"_path":441,"_dir":21,"_draft":6,"_partial":6,"_locale":7,"title":442,"titleMobile":442,"button":443,"config":448,"_id":450,"_type":13,"_source":15,"_file":451,"_stem":452,"_extension":18},"/shared/fr-fr/banner","La plateforme GitLab Duo Agent est maintenant disponible en version bêta publique !",{"text":444,"config":445},"Essayer la version bêta",{"href":446,"dataGaName":447,"dataGaLocation":27},"/fr-fr/gitlab-duo/agent-platform/","duo banner",{"layout":449},"release","content:shared:fr-fr:banner.yml","shared/fr-fr/banner.yml","shared/fr-fr/banner",{"_path":454,"_dir":21,"_draft":6,"_partial":6,"_locale":7,"data":455,"_id":661,"_type":13,"title":662,"_source":15,"_file":663,"_stem":664,"_extension":18},"/shared/fr-fr/main-footer",{"text":456,"source":457,"edit":463,"contribute":468,"config":473,"items":478,"minimal":652},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence",{"text":458,"config":459},"Afficher le code source de la page",{"href":460,"dataGaName":461,"dataGaLocation":462},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":464,"config":465},"Modifier cette page",{"href":466,"dataGaName":467,"dataGaLocation":462},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":469,"config":470},"Veuillez contribuer",{"href":471,"dataGaName":472,"dataGaLocation":462},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":474,"facebook":475,"youtube":476,"linkedin":477},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[479,502,556,589,623],{"title":45,"links":480,"subMenu":485},[481],{"text":482,"config":483},"Plateforme DevSecOps",{"href":54,"dataGaName":484,"dataGaLocation":462},"devsecops platform",[486],{"title":188,"links":487},[488,492,497],{"text":489,"config":490},"Voir les forfaits",{"href":190,"dataGaName":491,"dataGaLocation":462},"view plans",{"text":493,"config":494},"Pourquoi choisir GitLab Premium ?",{"href":495,"dataGaName":496,"dataGaLocation":462},"/fr-fr/pricing/premium/","why premium",{"text":498,"config":499},"Pourquoi choisir GitLab Ultimate ?",{"href":500,"dataGaName":501,"dataGaLocation":462},"/fr-fr/pricing/ultimate/","why ultimate",{"title":503,"links":504},"Solutions",[505,510,513,515,520,525,529,532,535,540,542,544,546,551],{"text":506,"config":507},"Transformation digitale",{"href":508,"dataGaName":509,"dataGaLocation":462},"/fr-fr/topics/digital-transformation/","digital transformation",{"text":511,"config":512},"Sécurité et conformité",{"href":136,"dataGaName":137,"dataGaLocation":462},{"text":121,"config":514},{"href":104,"dataGaName":105,"dataGaLocation":462},{"text":516,"config":517},"Développement agile",{"href":518,"dataGaName":519,"dataGaLocation":462},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":521,"config":522},"Transformation cloud",{"href":523,"dataGaName":524,"dataGaLocation":462},"/fr-fr/topics/cloud-native/","cloud transformation",{"text":526,"config":527},"SCM",{"href":118,"dataGaName":528,"dataGaLocation":462},"source code management",{"text":108,"config":530},{"href":110,"dataGaName":531,"dataGaLocation":462},"continuous integration & delivery",{"text":160,"config":533},{"href":162,"dataGaName":534,"dataGaLocation":462},"value stream management",{"text":536,"config":537},"GitOps",{"href":538,"dataGaName":539,"dataGaLocation":462},"/fr-fr/solutions/gitops/","gitops",{"text":173,"config":541},{"href":175,"dataGaName":176,"dataGaLocation":462},{"text":178,"config":543},{"href":180,"dataGaName":181,"dataGaLocation":462},{"text":183,"config":545},{"href":185,"dataGaName":186,"dataGaLocation":462},{"text":547,"config":548},"Formation",{"href":549,"dataGaName":550,"dataGaLocation":462},"/fr-fr/solutions/education/","education",{"text":552,"config":553},"Services financiers",{"href":554,"dataGaName":555,"dataGaLocation":462},"/fr-fr/solutions/finance/","financial services",{"title":193,"links":557},[558,560,562,564,567,569,573,575,577,579,581,583,585,587],{"text":205,"config":559},{"href":207,"dataGaName":208,"dataGaLocation":462},{"text":210,"config":561},{"href":212,"dataGaName":213,"dataGaLocation":462},{"text":215,"config":563},{"href":217,"dataGaName":218,"dataGaLocation":462},{"text":220,"config":565},{"href":222,"dataGaName":566,"dataGaLocation":462},"docs",{"text":243,"config":568},{"href":245,"dataGaName":246},{"text":570,"config":571},"Histoires de réussite client",{"href":572,"dataGaLocation":462},"/customers/",{"text":238,"config":574},{"href":240,"dataGaName":241,"dataGaLocation":462},{"text":248,"config":576},{"href":250,"dataGaName":251,"dataGaLocation":462},{"text":261,"config":578},{"href":263,"dataGaName":264,"dataGaLocation":462},{"text":253,"config":580},{"href":255,"dataGaName":256,"dataGaLocation":462},{"text":266,"config":582},{"href":268,"dataGaName":269,"dataGaLocation":462},{"text":271,"config":584},{"href":273,"dataGaName":274,"dataGaLocation":462},{"text":276,"config":586},{"href":278,"dataGaName":279,"dataGaLocation":462},{"text":281,"config":588},{"href":283,"dataGaName":284,"dataGaLocation":462},{"title":299,"links":590},[591,593,595,597,599,601,603,607,612,614,616,618],{"text":306,"config":592},{"href":308,"dataGaName":301,"dataGaLocation":462},{"text":311,"config":594},{"href":313,"dataGaName":314,"dataGaLocation":462},{"text":319,"config":596},{"href":321,"dataGaName":322,"dataGaLocation":462},{"text":324,"config":598},{"href":326,"dataGaName":327,"dataGaLocation":462},{"text":329,"config":600},{"href":331,"dataGaName":332,"dataGaLocation":462},{"text":334,"config":602},{"href":336,"dataGaName":337,"dataGaLocation":462},{"text":604,"config":605},"Sustainability",{"href":606,"dataGaName":604,"dataGaLocation":462},"/sustainability/",{"text":608,"config":609},"Diversité, inclusion et appartenance (DIB)",{"href":610,"dataGaName":611,"dataGaLocation":462},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":339,"config":613},{"href":341,"dataGaName":342,"dataGaLocation":462},{"text":349,"config":615},{"href":351,"dataGaName":352,"dataGaLocation":462},{"text":354,"config":617},{"href":356,"dataGaName":357,"dataGaLocation":462},{"text":619,"config":620},"Déclaration de transparence sur l'esclavage moderne",{"href":621,"dataGaName":622,"dataGaLocation":462},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":359,"links":624},[625,628,630,632,637,642,647],{"text":626,"config":627},"Échanger avec un expert",{"href":36,"dataGaName":37,"dataGaLocation":462},{"text":368,"config":629},{"href":370,"dataGaName":371,"dataGaLocation":462},{"text":373,"config":631},{"href":375,"dataGaName":376,"dataGaLocation":462},{"text":633,"config":634},"Statut",{"href":635,"dataGaName":636,"dataGaLocation":462},"https://status.gitlab.com/","status",{"text":638,"config":639},"Conditions d'utilisation",{"href":640,"dataGaName":641},"/terms/","terms of use",{"text":643,"config":644},"Déclaration de confidentialité",{"href":645,"dataGaName":646,"dataGaLocation":462},"/fr-fr/privacy/","privacy statement",{"text":648,"config":649},"Préférences en matière de cookies",{"dataGaName":650,"dataGaLocation":462,"id":651,"isOneTrustButton":90},"cookie preferences","ot-sdk-btn",{"items":653},[654,656,659],{"text":638,"config":655},{"href":640,"dataGaName":641,"dataGaLocation":462},{"text":657,"config":658},"Politique de confidentialité",{"href":645,"dataGaName":646,"dataGaLocation":462},{"text":648,"config":660},{"dataGaName":650,"dataGaLocation":462,"id":651,"isOneTrustButton":90},"content:shared:fr-fr:main-footer.yml","Main Footer","shared/fr-fr/main-footer.yml","shared/fr-fr/main-footer",{"allPosts":666,"featuredPost":760,"totalPagesCount":780,"initialPosts":781},[667,695,716,739],{"_path":668,"_dir":246,"_draft":6,"_partial":6,"_locale":7,"seo":669,"content":677,"config":688,"_id":691,"_type":13,"title":692,"_source":15,"_file":693,"_stem":694,"_extension":18},"/fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing",{"ogTitle":670,"schema":671,"ogImage":672,"ogDescription":673,"ogSiteName":674,"noIndex":6,"ogType":675,"ogUrl":676,"title":670,"canonicalUrls":676,"description":673},"Comment générer des tests complexes avec GitLab Duo","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Automatisation avec GitLab Duo : comment générer des tests complexes (Partie 2) \",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Byron Boots\"}],\n        \"datePublished\": \"2024-12-10\",\n      }\n                  ","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","Découvrez comment nous générons des tests complexes en utilisant les fonctionnalités alimentées par l’IA de GitLab Duo.","https://about.gitlab.com","article","https://about.gitlab.com/blog/automating-with-gitlab-duo-part-2-complex-testing",{"heroImage":672,"body":678,"authors":679,"updatedDate":681,"date":682,"title":683,"tags":684,"description":673,"category":687},"Le premier article de notre série en trois parties sur la [génération de tests avec GitLab Duo](https://about.gitlab.com/blog/automating-with-gitlab-duo-part-1-generating-tests/) 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.\n\n## Quelles sont les situations rencontrées et les solutions apportées ? \n\nDans l'ensemble, nous sommes satisfaits des résultats obtenus en utilisant [GitLab Duo](https://about.gitlab.com/fr-fr/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.\n\n### Mise à jour des scénarios de test existants\n\nComme 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.\n\n![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)\n\n\u003Cbr>\u003C/br>\n\n![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)\n\n**Remarque :** nous avons copié-collé les recommandations de GitLab Duo dans notre code.\n\n### Création de tests pour le code hérité \n\nLa 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.\n\n### Gestion des abstractions et codes complexes\n\nDans 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.\n\n### Vérification de la conformité du code généré à nos standards\n\nLors 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.\n\n### Gestion des scénarios non couverts\n\nGitLab 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.\n\n## Quels enseignements avons-nous tirés ?\n\nVoici quelques leçons clés ayant contribué à notre réussite avec GitLab Duo :\n\n* **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.\n* **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.\n* **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.\n* **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.\n* **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.\n\nDans 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.",[680],"Byron Boots","2025-01-14","2024-12-10","Automatisation avec GitLab Duo : comment générer des tests complexes (Partie 2) ",[685,9,686],"AI/ML","DevSecOps platform","ai-ml",{"slug":689,"featured":6,"template":690},"automating-with-gitlab-duo-part-2-complex-testing","BlogPost","content:fr-fr:blog:automating-with-gitlab-duo-part-2-complex-testing.yml","Automating With Gitlab Duo Part 2 Complex Testing","fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing.yml","fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing",{"_path":696,"_dir":246,"_draft":6,"_partial":6,"_locale":7,"seo":697,"content":703,"config":710,"_id":712,"_type":13,"title":713,"_source":15,"_file":714,"_stem":715,"_extension":18},"/fr-fr/blog/automating-with-gitlab-duo-part-3-validating-testing",{"title":698,"description":699,"ogTitle":698,"ogDescription":699,"noIndex":6,"ogImage":700,"ogUrl":701,"ogSiteName":674,"ogType":675,"canonicalUrls":701,"schema":702},"Automatisation avec GitLab Duo : comment valider des tests (Partie 3)","Découvrez le test que nous avons effectué pour valider l'impact de GitLab Duo sur les tests automatisés de notre équipe et les résultats que nous avons obtenus.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097447/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%284%29_3LZkiDjHLjhqEkvOvBsVKp_1750097447404.png","https://about.gitlab.com/blog/automating-with-gitlab-duo-part-3-validating-testing","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Automatisation avec GitLab Duo : comment valider des tests (Partie 3)\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Byron Boots\"}],\n        \"datePublished\": \"2024-12-17\",\n      }\n                  ",{"title":698,"description":699,"authors":704,"heroImage":700,"date":705,"body":706,"category":687,"tags":707,"updatedDate":709},[680],"2024-12-17","Dans les articles précédents de cette série, nous avons vu [comment utiliser GitLab Duo pour générer des tests pour notre code](https://about.gitlab.com/fr-fr/blog/automating-with-gitlab-duo-part-1-generating-tests/) et présenté [ce que nous avons appris en utilisant GitLab Duo pour générer des tests automatisés](https://about.gitlab.com/fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing/). Nous avons également partagé quelques-unes des façons dont nous avons abordé les changements apportés aux tests générés par GitLab Duo. Ce dernier article de la série présente un test que nous avons effectué pour valider l'impact de GitLab Duo sur les tests automatisés de notre équipe et dévoile les résultats que nous avons obtenus jusqu'à présent.\n\n### Résultats des tests de validation\n\nAfin de valider la valeur ajoutée de notre utilisation de [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/ \"GitLab Duo \") pour générer des tests, nous avons mis GitLab Duo et nous-mêmes au défi de remplacer et d'augmenter la couverture des tests. L'équipe a supprimé tous les tests précédemment écrits afin d'obtenir une couverture de test de 0 %, puis a méthodiquement parcouru le dépôt et créé de nouveaux fichiers de test pour stocker ceux générés par GitLab Duo.\n\nL'équipe a ensuite suivi les étapes décrites dans [le premier article de blog](https://about.gitlab.com/fr-fr/blog/automating-with-gitlab-duo-part-1-generating-tests/) pour générer des tests. Pour fournir un groupe témoin stable, aucun humain n'a modifié les tests et fichiers de test et nous avons ajouté un commentaire `Tests générés par GitLab Duo` en haut avec le suffixe `duo.py` pour indiquer d'où venaient les tests.\n\nToutes les itérations des tests ont été réalisées uniquement par le biais d'interactions avec GitLab Duo via la fenêtre `Générer des tests` et GitLab Duo Chat, comme mentionné dans [le deuxième article de la série](https://about.gitlab.com/fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing/). Comme indiqué alors, nous avons demandé à GitLab Duo de faire des mises à jour en fonction des erreurs rencontrées, des échecs de tests et des exemples d'extraits de code que GitLab Duo peut utiliser comme contexte supplémentaire. \n\nLors de nos tests avec GitLab Duo, des tests et des rapports de couverture ont été exécutés afin d'évaluer si les tests générés augmentaient la couverture des tests et apportaient la valeur ajoutée que nous attendions. En tirant parti de la [visualisation de la couverture de test de GitLab](https://docs.gitlab.com/ee/ci/testing/test_coverage_visualization/), nous avons pu surveiller en permanence les résultats de notre travail.\n\nAprès avoir utilisé GitLab Duo pour régénérer des tests pour le code précédemment couvert par nos tests essentiellement manuels, nous avons pu atteindre une couverture de test de 84 %. Ce fut une grande réussite pour l'équipe car :\n\n1. Il s'agissait d'une amélioration significative par rapport à la couverture précédente, qui était de 74 %. \n2. Il a fallu environ deux jours à un ingénieur pour atteindre 84 %, alors qu'il avait fallu environ quatre semaines à plusieurs ingénieurs pour atteindre 74 %.\n\nDepuis cette expérience, l'équipe est parvenue à augmenter la couverture à 89 % avec l'aide de GitLab Duo, tout en continuant à introduire de nouvelles fonctionnalités.\n\n![illustration des réalisations](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097456/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097456771.png)\n\nL'utilisation de GitLab Duo a permis d'améliorer l'efficacité et la couverture des tests, et a également permis aux équipes de développement disposant d'un contexte plus restreint au sujet du code existant d'écrire rapidement des tests de qualité. Cela a permis à l'équipe de développer de nouvelles fonctionnalités sans craindre d'introduire des erreurs.\n\n> Vous souhaitez [tester GitLab Duo](https://about.gitlab.com/fr-fr/solutions/gitlab-duo-pro/sales/) ? Commencez un essai gratuit dès aujourd'hui.\n",[685,9,686,708],"features","2025-01-23",{"slug":711,"featured":6,"template":690},"automating-with-gitlab-duo-part-3-validating-testing","content:fr-fr:blog:automating-with-gitlab-duo-part-3-validating-testing.yml","Automating With Gitlab Duo Part 3 Validating Testing","fr-fr/blog/automating-with-gitlab-duo-part-3-validating-testing.yml","fr-fr/blog/automating-with-gitlab-duo-part-3-validating-testing",{"_path":717,"_dir":246,"_draft":6,"_partial":6,"_locale":7,"seo":718,"content":724,"config":733,"_id":735,"_type":13,"title":736,"_source":15,"_file":737,"_stem":738,"_extension":18},"/fr-fr/blog/how-to-integrate-custom-security-scanners-into-gitlab",{"title":719,"description":720,"ogTitle":719,"ogDescription":720,"noIndex":6,"ogImage":721,"ogUrl":722,"ogSiteName":674,"ogType":675,"canonicalUrls":722,"schema":723},"Comment intégrer vos propres scanners de sécurité dans GitLab","Découvrez comment enrichir votre usage de la plateforme DevSecOps en ajoutant des scanners de sécurité personnalisés à vos workflows.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097082/Blog/Hero%20Images/Blog/Hero%20Images/securitycheck_securitycheck.png_1750097081856.png","https://about.gitlab.com/blog/how-to-integrate-custom-security-scanners-into-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Comment intégrer vos propres scanners de sécurité dans GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Fernando Diaz\"}],\n        \"datePublished\": \"2024-02-27\",\n      }",{"title":719,"description":720,"authors":725,"heroImage":721,"date":727,"body":728,"category":729,"tags":730,"updatedDate":732},[726],"Fernando Diaz","2024-02-27","GitLab, la plateforme DevSecOps la plus complète, dispose de toutes les fonctionnalités nécessaires pour planifier, gérer, compiler, déployer, sécuriser, gouverner et surveiller vos applications. Vous pouvez toutefois utiliser en complément des outils tiers ou personnalisés, par exemple si vous devez migrer vers une plateforme [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que le DevSecOps ? \") à partir de solutions distinctes, évaluer des outils tiers ou intégrer des solutions propriétaires ou personnalisées dans GitLab.\n\n## Extensibilité de la plateforme DevSecOps de GitLab\n\nLa plateforme DevSecOps de GitLab peut être enrichie de nombreuses façons afin de prendre en charge les fonctionnalités améliorées dont votre entreprise a besoin. \n\nVoici quelques exemples d'intégrations courants :\n\n- Intégrations d'applications externes, telles que Jenkins et Slack\n- Intégrations de systèmes externes de gestion des tickets, tels que Bugzilla et Jira\n- Intégrations de fournisseurs d'authentification externes, tels que LDAP et SAML\n- Intégrations de scanners de sécurité externes, tels que Fortify et Checkmarx\n- Détection et gestion de secrets exposés, tels que les clés d'accès AWS et GCP\n\nConsultez notre [documentation](https://docs.gitlab.com/ee/integration/) pour connaître toutes les intégrations disponibles (liste non exhaustive). \n\n## Intégration de scanners de sécurité dans GitLab\n\nIl est possible d'intégrer des [scanners de sécurité tiers](https://docs.gitlab.com/ee/integration/#security-improvements) ou des [scanners de sécurité personnalisés](https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration) dans GitLab. Ces scanners peuvent ainsi alimenter plusieurs sections clés de l'interface GitLab, telles que le widget de sécurité des merges requests, la section Sécurité des pipelines, le rapport de vulnérabilités, les pages de vulnérabilités, le tableau de bord de sécurité ainsi que les politiques d'approbation des merge requests. \n\nPassons en revue chacune de ces intégrations.\n\n### Widget de sécurité des merge requests\n\nUne merge request contient un widget de sécurité qui affiche un résumé des vulnérabilités récemment détectées.\n\n![intégration de scanners de sécurité - image 1](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097088837.png)\n\n\u003Ccenter>\u003Ci>Widget de sécurité des merge requests\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nLorsque vous cliquez sur une vulnérabilité, la fenêtre contextuelle qui s'affiche contient les informations suivantes :\n- Statut\n- Description\n- Projet\n- Fichier\n- Identifiants\n- Gravité\n- Outil\n- Fournisseur du scanner\n\n![intégration de scanners de sécurité - image 2](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097088838.png)\n\n\u003Ccenter>\u003Ci>Vulnérabilités exploitables et détails associés\u003C/i>\u003C/center>\n\n\u003Cp>\u003C/p>\n\nCes vulnérabilités sont également exploitables, ce qui signifie qu'elles peuvent être rejetées ou qu'un ticket confidentiel peut être créé.\n\nLes résultats d'un scanner personnalisé peuvent être utilisés pour alimenter le widget de sécurité. Les données de vulnérabilité sont renseignées à partir du schéma JSON généré par le scanner.\n\n### Section Sécurité des pipelines\n\nTous les scanners de sécurité activés s'exécutent dans le pipeline et génèrent leurs résultats sous forme d'artefacts qui font l'objet d'un traitement (déduplication incluse). Les résultats sont ensuite répertoriés dans l'onglet Sécurité des pipelines. À partir de là, vous pouvez également télécharger les fichiers JSON générés.\n\n![intégration de scanners de sécurité - image 3](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image11_aHR0cHM6_1750097088840.png)\n\n\u003Ccenter>\u003Ci>Onglet Sécurité des pipelines\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nLes résultats d'un scanner personnalisé peuvent être utilisés pour alimenter l'onglet Sécurité des pipelines. Les colonnes sont remplies à l'aide du schéma JSON émis par le scanner.\n\n### Rapport de vulnérabilités\n\nLe rapport de vulnérabilités fournit des informations sur les vulnérabilités issues des scans de la branche par défaut, notamment :\n\n- Le nombre total de vulnérabilités par niveau de gravité\n- Les filtres d'attributs de vulnérabilité courants\n- Les détails de chaque vulnérabilité, présentés sous forme de tableau\n\n![intégration de scanners de sécurité - image 4](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750097088842.png)\n\n\u003Ccenter>\u003Ci>Rapport de vulnérabilités\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nLes résultats d'un scanner personnalisé sur la branche par défaut peuvent être utilisés pour alimenter le rapport de vulnérabilités.\n\n### Pages de vulnérabilités\n\nEn cliquant sur une vulnérabilité présente dans le rapport de vulnérabilités, vous accédez à une page dédiée comprenant les informations suivantes : \n\n- sa description\n- la date de détection\n- son statut actuel\n- son emplacement  \n- les actions disponibles pour y remédier\n- les tickets liés à cette vulnérabilité\n- le log des actions effectuées sur cette vulnérabilité\n- les solutions proposées\n- un identifiant \n- des ressources de formation pour prévenir ce type de faille\n\nVous pouvez utiliser les données fournies dans la page de vulnérabilité pour évaluer l’importance du problème et prendre les mesures nécessaires pour corriger la vulnérabilité efficacement.\n\n![intégration de scanners de sécurité - image 5](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750097088844.png)\n\n\u003Ccenter>\u003Ci>Page de vulnérabilité pour une faille relative à la détection des secrets\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nLes résultats d'un scanner personnalisé peuvent être utilisés pour alimenter la page de vulnérabilité. Les données de vulnérabilité sont renseignées à partir du schéma JSON généré par le scanner.\n\n### Tableau de bord de sécurité\n\nLes tableaux de bord de sécurité permettent d'évaluer la posture de sécurité de vos applications. GitLab vous fournit un ensemble d'indicateurs, d'évaluations et de graphiques correspondant aux vulnérabilités détectées par les scanners de sécurité exécutés sur votre projet. Le tableau de bord de sécurité fournit différentes données, notamment :\n\n- Les tendances des vulnérabilités sur une période de 30, 60 ou 90 jours pour tous les projets d'un groupe\n- Une note sous forme de lettre pour chaque projet en fonction de la gravité de la vulnérabilité\n- Le nombre total de vulnérabilités détectées au cours des 365 derniers jours et leurs niveaux de gravité\n\n![intégration de scanners de sécurité - image 6](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image7_aHR0cHM6_1750097088846.png)\n\n\u003Ccenter>\u003Ci>Tableau de bord de sécurité au niveau du groupe\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nÀ partir du tableau de bord de sécurité au niveau du groupe, vous pouvez cliquer sur un projet pour accéder au tableau de bord de sécurité associé, qui fournit une vue sur 365 jours.\n\n![intégration de scanners de sécurité - image 7](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097088847.png)\n\n\u003Ccenter>\u003Ci>Tableau de bord de sécurité au niveau du projet\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\n### Intégration des politiques d'approbation des merge requests \n\nLes politiques d'approbation des merge requests, anciennement désignées comme stratégies de sécurité basées sur les résultats de scan dans les versions précédentes de GitLab, sont utilisées pour exiger une approbation en fonction des résultats d'un ou de plusieurs jobs de scan de sécurité. L'objectif est d'éviter que du code non sécurisé ne soit fusionné et déployé en production. Ces politiques sont évaluées après l'exécution complète des jobs de scan dans les pipelines CI, en s'appuyant sur les rapports générés par les artefacts de job et publiés dans le pipeline une fois celui-ci terminé.\n\nPar exemple, vous pouvez créer une politique d'approbation des merge requests qui exige l'approbation des chargés de maintenance du projet dans le cas où le scanner de détection de secrets détecte des vulnérabilités. Voici comment procéder :\n\n1. Dans la barre latérale gauche, cliquez sur **Rechercher ou accéder à** et recherchez le projet auquel vous souhaitez ajouter une politique.\n\n2. Dans la barre latérale gauche du projet, accédez à **Sécurisation > Politiques**\n\n3. Sélectionnez **Nouvelle stratégie de sécurité**\n\n4. Dans la section **Politiques d'approbation des merge requests**, sélectionnez **Sélectionner une stratégie de sécurité**.\n\n5. Renseignez les champs suivants :\n- Nom : le nom de la politique d'approbation\n- Description : la description de la politique d'approbation\n- État : indique si la politique d'approbation est activée ou non\n- Règles : les conditions qui doivent être remplies pour déclencher une action (comme exiger une approbation)\n\n![intégration de scanners de sécurité - image 8](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097088849.png)\n\u003Ccenter>\u003Ci>Règles de la politique d'approbation des merge requests\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\n- Actions : l'action à entreprendre chaque fois que les conditions définies dans les règles (vulnérabilités/licences détectées) sont remplies\n\n![intégration de scanners de sécurité - image 9](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image9_aHR0cHM6_1750097088850.png)\n\n\u003Ccenter>\u003Ci>Actions associées à la politique d'approbation des merge requests\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\n- Remplacer les paramètres d'approbation du projet : si cette option est sélectionnée, les choix suivants écraseront les paramètres du projet, mais uniquement pour les branches spécifiées dans la politique d'approbation des merges requests.\n\n![intégration de scanners de sécurité - image 11](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750097088851.png)\n\n \u003Ccenter>\u003Ci>Paramètres d'approbation de la politique d'approbation des merge requests\u003C/i>\u003C/center>\n \u003Cp>\u003C/p>\n\n6. Cliquez sur le bouton **Configurer avec une merge request**.\n\nUne fois que la politique d'approbation des merge requests a été fusionnée, chaque fois que vous créez une merge request et que les critères définis dans les règles sont remplis, l'action définie est déclenchée. Dans ce cas, au moins une approbation de la part d'un chargé de maintenance sera requise avant que le code puisse être fusionné.\n\n![scanner de sécurité intégré - image 10](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image10_aHR0cHM6_1750097088852.png)\n\n\u003Ccenter>\u003Ci>Merge request bloquée en raison de vulnérabilités détectées\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nLes résultats d'un scanner personnalisé peuvent être entièrement intégrés aux politiques d'approbation des merge requests. Si le scanner personnalisé détecte une vulnérabilité, une approbation sera alors requise avant que le code puisse être fusionné. Le scanner que vous sélectionnez dans une telle politique doit utiliser le schéma JSON approprié.\n\n## Tutoriel : intégration de scanners de sécurité personnalisés\n\nPassons maintenant à la partie la plus intéressante : l'intégration d'un scanner de sécurité personnalisé. Dans ce tutoriel, vous apprendrez à créer un scanner de sécurité personnalisé, ainsi qu'à l'intégrer à GitLab. Nous nous appuierons sur les projets suivants :\n\n- [Fern Pattern Scanner](https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner) : analyse vos fichiers à la recherche de motifs spécifiques tels que les mots de passe, les clés privées et les numéros de sécurité sociale.\n- [Secret List](https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/secret-list) : contient une liste répertoriant des mots de passe d'utilisateurs et de clients, et des clés. Ce projet sert à démontrer comment un scanner de sécurité personnalisé peut être intégré à GitLab.\n\nPour en savoir plus, consultez la vidéo suivante : \n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/timMbl5SP-w?si=R2DKtZ5MmBR1rQFL\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n### Création d'un scanner de sécurité personnalisé\n\nCréons maintenant un scanner personnalisé qui peut être intégré à GitLab. Avant qu'un scanner personnalisé puisse être entièrement intégré à GitLab, il doit respecter les conditions suivantes :\n- scanner un répertoire à la recherche de motifs définis\n- générer un fichier JSON conforme au schéma approprié\n- être conteneurisé et accessible depuis GitLab\n- fournir un template autorisant son exécution sur un autre projet\n\nLorsque le [Fern Pattern Scanner](https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner) est exécuté sur un projet à l'aide du template fourni, il effectue les étapes suivantes :\n1. Il charge un ensemble de règles qui définissent les motifs (regex) à détecter.\n- Il permet la configuration des règles afin de s'adapter aux besoins en constante évolution de votre entreprise.\n2. Il scanne les fichiers à la recherche des motifs définis.\n3. Il génère un rapport JSON conforme au schéma de détection des secrets.\n- Il utilise des templates Go pour créer ce fichier JSON.\n- Veillez à utiliser le schéma adéquate, selon les éléments que votre scanner doit rechercher.\n\nUne fois le rapport JSON chargé en tant qu'artefact dans GitLab, il alimente le widget de sécurité des merges requests, le rapport de vulnérabilités, les pages de vulnérabilités, les politiques d'approbation des merge requests ainsi que les tableaux de bord de sécurité, comme décrit précédemment.\n\n### Intégration d'un scanner de sécurité personnalisé à GitLab\n\nUne fois que vous avez créé votre scanner personnalisé qui répond à tous les besoins d'intégration, vous pouvez l'exécuter sur GitLab.\n\nExécuter un scanner personnalisé est aussi simple que d'ajouter un template. Par exemple, le template Fern Pattern Scanner est chargé dans le fichier `.gitlab-ci.yml` sur le projet [Secret List](https://gitlab.com/gitlab-da/tutorials/security-and-governance/custom-scanner-integration/secret-list).\n\nVoici les étapes à suivre :\n\n1. Créez un [fichier .gitlab-ci.yml](https://docs.gitlab.com/ee/ci/quick_start/#create-a-gitlab-ciyml-file) dans le projet sur lequel vous souhaitez exécuter le scanner.\n\n2. Incluez le [template du scanner personnalisé](https://docs.gitlab.com/ee/ci/yaml/includes.html).\n    - Vous pouvez également configurer ce template avec des variables d'environnement.\n\n3. Validez ce fichier dans la branche principale.\n\nUne fois le fichier validé, vous pouvez constater que le scanner personnalisé s'exécute dans votre pipeline. Une fois le pipeline terminé, le scanner alimentera toutes les zones définies ci-dessus dans la section [Intégration de scanners de sécurité dans GitLab](#gitlab-security-scanner-integration).\n\nPour en savoir plus, consultez les ressources ci-dessous et les autres possibilités d'extension de votre plateforme DevSecOps :\n\n- [Intégration du scanner de sécurité dans GitLab](https://docs.gitlab.com/ee/development/integrations/secure.html)\n- [Intégrations des partenaires GitLab](https://docs.gitlab.com/ee/integration/)\n- [Groupe de projets du scanner de sécurité personnalisé](https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration)\n- [Réponse automatique à une fuite de secret](https://docs.gitlab.com/ee/user/application_security/secret_detection/automatic_response.html)\n","security",[731,729,9,686],"tutorial","2025-06-09",{"slug":734,"featured":90,"template":690},"how-to-integrate-custom-security-scanners-into-gitlab","content:fr-fr:blog:how-to-integrate-custom-security-scanners-into-gitlab.yml","How To Integrate Custom Security Scanners Into Gitlab","fr-fr/blog/how-to-integrate-custom-security-scanners-into-gitlab.yml","fr-fr/blog/how-to-integrate-custom-security-scanners-into-gitlab",{"_path":740,"_dir":246,"_draft":6,"_partial":6,"_locale":7,"seo":741,"content":747,"config":754,"_id":756,"_type":13,"title":757,"_source":15,"_file":758,"_stem":759,"_extension":18},"/fr-fr/blog/migration-guide-github-advanced-security-to-gitlab-ultimate",{"title":742,"description":743,"ogTitle":742,"ogDescription":743,"noIndex":6,"ogImage":744,"ogUrl":745,"ogSiteName":674,"ogType":675,"canonicalUrls":745,"schema":746},"Migrer de GitHub Advanced Security vers GitLab Ultimate : notre guide complet","Découvrez les similitudes et les différences entre GitLab Ultimate et GitHub Advanced Security, puis suivez notre tutoriel détaillé pour migrer vers GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666187/Blog/Hero%20Images/blog-image-template-1800x945__6_.png","https://about.gitlab.com/blog/migration-guide-github-advanced-security-to-gitlab-ultimate","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Migrer de GitHub Advanced Security vers GitLab Ultimate : notre guide complet \",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Fernando Diaz\"}],\n        \"datePublished\": \"2024-05-01\",\n      }",{"title":742,"description":743,"authors":748,"heroImage":744,"date":749,"body":750,"category":729,"tags":751,"updatedDate":753},[726],"2024-05-01","GitLab est la plateforme DevSecOps alimentée par l'IA la plus complète, qui permet de livrer rapidement des logiciels plus sécurisés depuis une seule et même plateforme pour l'ensemble de votre cycle de développement logiciel. De son côté, GitHub fournit un module d'extension appelé Advanced Security, qui, comme son nom l'indique, active des fonctionnalités de sécurité supplémentaires dans GitHub, mais ne dispose pas de la profondeur et de l'étendue des fonctionnalités de sécurité fournies nativement par GitLab. \n\nSi vous souhaitez passer à GitLab Ultimate pour améliorer votre sécurité dans tous les domaines du SDLC, utilisez ce guide pour comparer les deux offres et effectuer votre migration.\n\n## Comparaison entre GitLab Ultimate et GitHub Advanced Security\n\n[GitLab Ultimate](https://about.gitlab.com/fr-fr/pricing/ultimate/) est le niveau d'abonnement de GitLab dédié aux entreprises qui cherchent à livrer des logiciels sécurisés plus rapidement. GitHub Advanced Security est un module d'extension de GitHub Enterprise, qui active des fonctionnalités de sécurité supplémentaires.\n\n### Quelles sont les similitudes entre GitLab Ultimate et GitHub Advanced Security ?\n\nGitLab Ultimate et GitHub Advanced Security fournissent tous deux :\n- des tests statiques de sécurité des applications ([SAST](https://docs.gitlab.com/ee/user/application_security/sast/)), une analyse des secrets et une analyse des dépendances\n- une veille contextualisée recensant les vulnérabilités et des conseils pour y remédier\n- une liste des dépendances ou des nomenclatures logicielles ([SBOM](https://about.gitlab.com/fr-fr/blog/the-ultimate-guide-to-sboms/ \"SBOM\"))\n- des métriques et des informations clés sur la sécurité\n\n### Quelles sont les différences entre GitLab Ultimate et GitHub Advanced Security ? \n\nGitLab Ultimate diffère de GitHub Advanced Security de la manière suivante :\n\n- GitLab fournit nativement des scanners de code de sécurité supplémentaires tels que l'analyse des conteneurs, les tests dynamiques de sécurité des applications ([DAST](https://docs.gitlab.com/ee/user/application_security/dast/)), les tests d’API Web par injection de données aléatoires, et plus encore. Ces scanners sont un mélange de technologies propriétaires et open source optimisées avec des ensembles de règles personnalisés. Pour une liste complète, consultez notre [documentation pour sécuriser votre application avec GitLab](https://docs.gitlab.com/ee/user/application_security/secure_your_application.html).\n- GitLab fournit des [garde-fous de sécurité granulaires](https://docs.gitlab.com/ee/user/application_security/policies/) pour empêcher que du code non sécurisé soit fusionné sans approbation.\n- Les scanners de sécurité de GitLab peuvent être exécutés dans des [environnements isolés ou à connectivité limitée](https://docs.gitlab.com/ee/user/application_security/offline_deployments/).\n- GitLab fournit un [Centre de conformité](https://docs.gitlab.com/ee/user/compliance/compliance_center/) qui permet de surveiller les violations des exigences de conformité dans l'ensemble de l'entreprise.\n\nGitLab Ultimate fournit également des fonctionnalités supplémentaires en matière de sécurité et de conformité, de gestion de portefeuilles et de la chaîne de valeur, d'assistance à la mise à niveau en direct et bien plus encore. Consultez notre [documentation GitLab Ultimate](https://about.gitlab.com/fr-fr/pricing/ultimate/) pour en savoir plus sur ces fonctionnalités supplémentaires.\n\n## Comment migrer un dépôt GitHub vers GitLab ?\n\nGitLab fournit un outil d'importation intégré qui vous permet d'importer vos projets GitHub depuis GitHub.com ou GitHub Enterprise vers GitLab. Cet outil vous permet de migrer non seulement le dépôt GitHub vers GitLab, mais également plusieurs autres éléments, notamment des tickets, des collaborateurs (membres) et des pull requests. Pour obtenir la liste complète de ce qui peut être migré, consultez notre [documentation](https://docs.gitlab.com/ee/user/project/import/github.html#imported-data). \n\nVous pouvez effectuer votre migration de GitHub vers GitLab en suivant les étapes ci-dessous :\n1. Dans la barre latérale gauche, en haut, sélectionnez **Créer un nouveau (+)**.\n2. Sélectionnez **Nouveau projet/dépôt**.\n3. Sélectionnez **Importer un projet**.\n\n![Sélection Importer un projet](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/1-Import-Project.png)\n\n4. Cliquez sur le bouton **GitHub**.\n - Si vous utilisez GitLab Self-Managed, vous devez [activer l'outil d'importation GitHub](https://docs.gitlab.com/ee/administration/settings/import_and_export_settings.html#configure-allowed-import-sources).\n - Notez que d'autres outils d'importation peuvent être lancés de la même manière.\n5. Maintenant, vous pouvez effectuer l'une des actions suivantes :\n    - Autoriser OAuth de GitHub en sélectionnant **Autoriser avec GitHub**.\n    - Utiliser un jeton d'accès personnel GitHub :\n       - Rendez-vous sur [https://github.com/settings/tokens/new](https://github.com/settings/tokens/new).\n       - Dans le champ **Note**, saisissez une description du token.\n       - Sélectionnez la portée du **dépôt**.\n       - En option, pour importer des collaborateurs, sélectionnez la portée **read:org**.\n       - Cliquez sur le bouton **Générer un token**.\n       - Sur la page d'importation de GitLab, dans le champ **Jeton d'accès personnel**, collez le jeton d'accès personnel GitHub.\n6. Cliquez sur le bouton **Authentification**.\n7. Sélectionnez les éléments que vous souhaitez migrer.\n8. Sélectionnez les projets que vous souhaitez migrer et leur destination.\n9. Cliquez sur le bouton **Importer**.\n\nVotre projet importé devrait maintenant s'afficher dans votre espace de travail. Pour en savoir plus sur la migration de GitHub vers GitLab, regardez cette vidéo :\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/0Id5oMl1Kqs?si=HEpZVy94cpfPfAky\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\nVous pouvez également effectuer votre migration à l'aide d'un [jeton d'accès personnel GitHub](https://docs.gitlab.com/ee/user/project/import/github.html#use-a-github-personal-access-token) ou de l'[API REST GitLab](https://docs.gitlab.com/ee/user/project/import/github.html#use-the-api). L'outil d'importation permet également d'importer à partir d'autres sources telles que Bitbucket ou Gitea. Pour en savoir plus, consultez notre [documentation](https://docs.gitlab.com/ee/user/project/import/).\n\n## Comment migrer fonctionnalité par fonctionnalité ?\n\nVoyons comment tirer parti de chaque fonctionnalité fournie par GitHub Advanced Security dans GitLab Ultimate. Pour continuer, vous devez disposer d'une [licence GitLab Ultimate](https://about.gitlab.com/fr-fr/pricing/ultimate/). \n\nCommencez un [essai gratuit](https://about.gitlab.com/fr-fr/free-trial/devsecops/) de GitLab Ultimate.\n\n### Mise en place d'un scanner de code de sécurité\n\nGitHub fournit un scanner de code de sécurité pour offrir une veille contextualisée recensant les vulnérabilités et des conseils pour le code source statique. Vous pouvez effectuer la même action au sein de GitLab en activant [SAST](https://docs.gitlab.com/ee/user/application_security/sast/). Les scanners SAST de GitLab couvrent un ensemble de langages de programmation et de frameworks plus large que le [CodeQL](https://docs.github.com/en/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql#about-codeql) de GitHub.\n\nPour activer la mise en place d'un scanner de code de sécurité dans GitLab, vous pouvez simplement ajouter le [template SAST](https://docs.gitlab.com/ee/user/application_security/sast/#configure-sast-in-your-cicd-yaml) à votre fichier `.gitlab-ci.yml` :\n\n```yaml\ninclude:\n  - template: Jobs/SAST.gitlab-ci.yml\n```\n\nUne fois le template ajouté, chaque fois qu'un nouveau code est enregistré, SAST détectera automatiquement les [langages de programmation](https://docs.gitlab.com/ee/user/application_security/sast/#supported-languages-and-frameworks) utilisés dans votre projet. Il analysera ensuite le code source afin de détecter des vulnérabilités connues.\n\n**Remarque :** des scanners de sécurité peuvent également être ajoutés à votre projet à l'aide de la [configuration de sécurité](https://docs.gitlab.com/ee/user/application_security/configuration/) de GitLab, qui peut créer automatiquement une merge request pour mettre à jour votre pipeline. Pour en savoir plus, consultez notre [documentation](https://docs.gitlab.com/ee/user/application_security/sast/#configure-sast-by-using-the-ui).\n\nLes résultats SAST de la différence entre la branche de fonctionnalité et la branche cible s'affichent dans le widget de merge request. Le widget de merge request affiche les résultats et les résolutions SAST qui ont été introduits par les modifications apportées dans la merge request.\n\n![Analyse de sécurité dans la merge request](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/2-SAST-MR-View.png)\n\nChaque vulnérabilité affiche des données pour aider à la remédiation, y compris une description détaillée, la gravité, l'emplacement et des informations de résolution :\n\n![Détails de la vulnérabilité SAST](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/3-SAST-MR-View-Detailed.png)\n\nVous pouvez prendre des mesures pour corriger ces vulnérabilités :\n\n- **Ignorer la vulnérabilité** : permet aux équipes de développement d'ignorer la vulnérabilité avec un commentaire. Cela aide l'équipe de sécurité en charge de la revue.\n- **Créer un ticket** : permet de créer un ticket pour suivre une vulnérabilité nécessitant une surveillance supplémentaire.\n\nCes modifications peuvent également être visualisées lorsque vous basculez sur la vue **Modifications** de la merge request. \n\n![Vue des modifications de la vulnérabilité SAST](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/4-SAST-MR-View-Changes.png)\n\n#### Personnalisation des scanners SAST\n\nGitLab vous permet de remplacer une définition de job SAST afin de pouvoir modifier des propriétés telles que des variables, des dépendances ou des règles. Vous pouvez le faire en déclarant un job du même nom que le job SAST à remplacer. Ensuite, placez ce nouveau job après l'inclusion du template et spécifiez toutes les clés supplémentaires en dessous.\n\nPar exemple, la configuration suivante :\n- écrase la version utilisée par le scanner `semgrep-sast`\n- exécute un script pour récupérer des modules de projets privés avant d'exécuter `gosec-sast`\n- configure tous les scanners pour rechercher à une profondeur maximale de 10\n\n```yaml\ninclude:\n  - template: Jobs/SAST.gitlab-ci.yml\n\nvariables:\n  SEARCH_MAX_DEPTH: 10\n\nsemgrep-sast:\n  variables:\n    SAST_ANALYZER_IMAGE_TAG: \"3.7\"\n\ngosec-sast:\n  before_script:\n    - |\n      cat \u003C\u003CEOF > ~/.netrc\n      machine gitlab.com\n      login $CI_DEPLOY_user\n      password $CI_DEPLOY_PASSWORD\n      EOF\n```\n\n**Remarque :** Les jobs SAST disponibles sont inclus dans le [template `SAST.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Jobs/SAST.gitlab-ci.yml). Vous trouverez les configurations dans notre [documentation sur les variables CI/CD SAST](https://docs.gitlab.com/ee/user/application_security/sast/#available-cicd-variables).\n\n#### Personnalisation des ensembles de règles SAST\n\nPour chaque scanner SAST, GitLab traite le code puis utilise des règles pour trouver d'éventuelles faiblesses dans le code source. Ces règles déterminent les types de faiblesses signalées par le scanner.\n\n- Pour les scanners SAST basés sur Semgrep, GitLab crée, maintient et prend en charge les règles utilisées. Il combine le moteur open source Semgrep, les règles de détection gérées par GitLab et la technologie propriétaire de GitLab pour le suivi des vulnérabilités et la détection des faux positifs.\n- Pour les autres scanners SAST, les règles sont définies dans les projets en amont pour chaque scanner.\n\nVous pouvez personnaliser le comportement des scanners SAST en définissant un fichier de configuration d'ensemble de règles dans le dépôt analysé :\n- Désactiver les règles prédéfinies (disponibles pour tous les scanners)\n- Remplacer les règles prédéfinies (disponibles pour tous les scanners)\n- Remplacer les règles prédéfinies en synthétisant une configuration personnalisée à l'aide de modes « passthrough »\n\nPour plus d'informations et d'exemples sur la configuration des règles SAST, consultez notre documentation sur les [règles SAST](https://docs.gitlab.com/ee/user/application_security/sast/rules.html) et sur la [personnalisation des ensembles de règles](https://docs.gitlab.com/ee/user/application_security/sast/customize_rulesets.html).\n\n### Analyse des secrets\n\nGitHub fournit une analyse des secrets, qui peut trouver, bloquer et révoquer les secrets divulgués. Vous pouvez effectuer les mêmes opérations au sein de GitLab en activant la [détection des secrets](https://docs.gitlab.com/ee/user/application_security/secret_detection/).\n\nPour activer la détection des secrets dans GitLab, vous pouvez simplement ajouter le template suivant à votre fichier `.gitlab-ci.yml` :\n\n```yaml\ninclude:\n  - template: Jobs/Secret-Detection.gitlab-ci.yml\n```\n\nUne fois le template ajouté, chaque fois qu'un nouveau code est enregistré (ou qu'un pipeline est exécuté), le scanner de secrets analysera le code source pour y détecter des secrets connus. La détection des secrets de pipeline analyse différents aspects de votre code, en fonction de la situation. Pour toutes les méthodes, à l'exception de la « branche par défaut », la détection des secrets de pipeline analyse les validations et non l'arborescence de travail. Consultez notre [documentation sur la couverture de la détection des secrets](https://docs.gitlab.com/ee/user/application_security/secret_detection/pipeline/#coverage) pour en savoir plus sur le fonctionnement de l'analyse des secrets.\n\nLors de la création d'une merge request, la détection des secrets analyse chaque validation effectuée sur la branche source. Tout comme dans SAST, chaque vulnérabilité détectée fournit les informations (telles que l'emplacement) et les identifiants suivants pour aider au processus de correction :\n\n![Détails de la vulnérabilité de la détection des secrets](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/5-Secret-Detection-MR-Detailed.png)\n\nComme pour le SAST, vous pouvez gérer ces vulnérabilités directement depuis la merge request, notamment en les ignorant ou en créant des tickets.\n\n#### Personnalisation des jobs de détection des secrets\n\nGitLab vous permet de remplacer une définition de job de détection des secrets afin de modifier des propriétés telles que des variables, des dépendances ou des règles. Vous pouvez le faire en déclarant un job du même nom que le job de détection des secrets. Ensuite, placez ce nouveau job après l'inclusion du template et spécifiez toutes les clés supplémentaires en dessous. Par exemple, la configuration suivante :\n\n- écrase l'étape du job de détection des secrets sur `sécurité`\n- permet l'analyse de l'historique\n- passe à la version 4.5 de Secrets Analyzer\n\n```yaml\ninclude:\n  - template: Jobs/Secret-Detection.gitlab-ci.yml\n\nsecret_detection:\n  stage: security\n  variables :\n    SECRET_DETECTION_HISTORIC_SCAN : \"true\"\n    SECRETS_ANALYZER_VERSION : \"4.5\"\n```\n\n**Remarque :** Les jobs de détection des secrets disponibles peuvent être trouvés dans le [template SAST.gitlab-ci.yml](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Jobs/Secret-Detection.gitlab-ci.yml). Vous trouverez les configurations disponibles dans notre [documentation sur les variables CI/CD de détection des secrets](https://docs.gitlab.com/ee/user/application_security/secret_detection/pipeline/#customizing-analyzer-settings).\n\n#### Personnalisation des ensembles de règles de détection des secrets\n\nLe scanner de détection des secrets vous permet de personnaliser les secrets signalés dans l'interface utilisateur de GitLab. Les options de personnalisation suivantes peuvent être utilisées séparément ou en combinaison :\n\n- désactiver les règles prédéfinies\n- remplacer les règles prédéfinies\n- synthétiser une configuration personnalisée\n- spécifier un fichier de configuration à distance\n\nPar exemple, en créant le fichier `.gitlab/secret-detection-ruleset.toml`, dans le répertoire racine de votre projet, le paquet GitLeaks par défaut est étendu pour ignorer les jetons de test de la détection :\n\n```yaml\n### extended-gitleaks-config.toml\ntitle = \"extension of gitlab's default gitleaks config\"\n\n[extend]\n### Extends default packaged path\npath = \"/gitleaks.toml\"\n\n[allowlist]\n  description = \"allow list of test tokens to ignore in detection\"\n  regexTarget = \"match\"\n  regexes = [\n    '''glpat-1234567890abcdefghij''',\n  ]\n```\n\nPour plus d'informations sur le remplacement des règles prédéfinies du scanner, consultez notre [documentation sur la détection des secrets](https://docs.gitlab.com/ee/user/application_security/secret_detection/pipeline/#override-predefined-analyzer-rules).\n\n#### Réponse automatique aux secrets divulgués\n\nLa détection des secrets de GitLab répond automatiquement lorsqu'elle trouve certains types de secrets divulgués. Les réponses automatiques peuvent :\n- révoquer automatiquement le secret\n- notifier le partenaire qui a émis le secret afin qu'il puisse le révoquer, notifier son propriétaire ou se protéger contre les abus\n\nGitLab peut également informer les partenaires lorsque les identifiants de connexion qu'ils émettent sont divulgués dans des dépôts publics sur GitLab.com. Si vous utilisez un produit cloud ou SaaS et que vous souhaitez recevoir ces notifications, vous pouvez implémenter une API partenaire, appelée par l'API de révocation de jetons GitLab. Consultez notre [documentation sur la réponse automatique aux secrets divulgués](https://docs.gitlab.com/ee/user/application_security/secret_detection/automatic_response.html) pour en savoir plus.\n\n### Sécurité de la chaîne d'approvisionnement\n\nGitHub vous permet de sécuriser, de gérer et de signaler des chaînes d'approvisionnement logicielles grâce à des mises à jour de sécurité et de version automatisées et à des [SBOM](https://about.gitlab.com/fr-fr/blog/the-ultimate-guide-to-sboms/ \"Qu'est-ce qu'un SBOM ? \") en un clic. GitLab peut répondre à vos besoins en matière de sécurité de la chaîne d'approvisionnement à l'aide des fonctionnalités d'analyse des dépendances et de liste des dépendances (SBOM).\n\nPour activer l'analyse des dépendances dans GitLab, vous pouvez simplement ajouter le template suivant à votre fichier `.gitlab-ci.yml` :\n\n```yaml\ninclude:\n  - template: Jobs/Dependency-Scanning.gitlab-ci.yml\n```\n\nUne fois le template ajouté, chaque fois qu'un nouveau code est enregistré, l'analyse des dépendances détectera automatiquement les [gestionnaires de paquets](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#supported-languages-and-package-managers) utilisés dans votre projet. Elle analysera ensuite les dépendances utilisées pour détecter les vulnérabilités connues.\n\nLes résultats de l'analyse des dépendances de la différence entre la branche de fonctionnalité et la branche cible s'affichent dans le widget de merge request. Le widget de merge request affiche les résultats et les résolutions de l'analyse des dépendances qui ont été introduits par les modifications apportées à la merge request. Dans une merge request, chaque vulnérabilité affiche des informations pertinentes pour aider à la remédiation, telles que les identifiants, les preuves et les solutions :\n\n![Détails de la vulnérabilité de l'analyse des dépendances](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/6-Dependency-Scanner-MR-View-Detailed.png)\n\nComme pour SAST et la détection des secrets, vous pouvez remédier à ces vulnérabilités directement depuis la merge request, notamment en les ignorant ou en créant des tickets.\n\n#### Configuration de l'analyse des dépendances\n\nPour remplacer une définition de job (par exemple, pour modifier des propriétés telles que des variables ou des dépendances), déclarez un nouveau job du même nom que celui à remplacer. Placez ce nouveau job après l'inclusion du modèle et spécifiez toutes les clés supplémentaires en dessous. Par exemple, le code suivant :\n\n- désactive la correction automatique des dépendances vulnérables\n- nécessite un job de compilation à terminer avant l'analyse des dépendances\n\n```yaml\ninclude:\n  - template: Jobs/Dependency-Scanning.gitlab-ci.yml\n\ngemnasium-dependency_scanning:\n  variables:\n    DS_REMEDIATE: \"false\"\n  dependencies: [\"build\"]\n```\n\nPour en savoir plus sur la configuration des scanners de dépendances, consultez notre [documentation sur la personnalisation du comportement des scanners](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#customizing-analyzer-behavior).\n\n#### Génération d'une SBOM\n\nGitLab fournit une liste des dépendances (SBOM) pour examiner les dépendances de votre projet ou de votre groupe et les détails clés sur ces dépendances, notamment leurs vulnérabilités connues. Cette liste est un ensemble de dépendances dans votre projet qui comprend les résultats existants et nouveaux. La liste des dépendances est générée après l'exécution réussie du scanner de dépendances sur la [branche par défaut](https://docs.gitlab.com/ee/user/project/repository/branches/default.html). Pour accéder à la liste des dépendances :\n\n1. Dans la barre latérale gauche, sélectionnez **Rechercher ou accéder à** et trouvez votre projet.\n2. Sélectionnez **Sécurisation > Liste des dépendances**.\n\n![Liste des dépendances (SBOM)](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/7-Dependency-List.png)\n\nDe là, vous pouvez voir les informations suivantes sur vos dépendances :\n\n| Champ\t| Description |\n| ----- | ----------- | \n|Composant\t| Le nom et la version de la dépendance. |\n| Empaqueteur | L'empaqueteur utilisé pour installer la dépendance. |\n| Emplacement | Pour les dépendances système, cela répertorie l'image qui a été analysée. Pour les dépendances d'application, cela affiche un lien vers le fichier de verrouillage propre à l'empaqueteur dans votre projet qui a déclaré la dépendance. Il affiche également le chemin d'accès vers une dépendance racine le cas échéant, et si cette option est prise en charge. |\n| Licence | Liens vers les licences logicielles de la dépendance. Un badge d'avertissement qui inclut le nombre de vulnérabilités détectées dans la dépendance. |\n| Projets | Liens vers le projet avec la dépendance. Si plusieurs projets ont la même dépendance, le nombre total de ces projets est affiché. Pour accéder à un projet avec cette dépendance, sélectionnez le numéro du projet, puis recherchez et sélectionnez son nom. La fonctionnalité de recherche de projet n'est prise en charge que sur les groupes qui ont jusqu'à 600 occurrences dans leur hiérarchie de groupe. |\n\n\u003Cp>\u003C/p>\n\nConsultez notre [documentation sur la liste des dépendances](https://docs.gitlab.com/ee/user/application_security/dependency_list/) pour en savoir plus.\n\n### Administration de la sécurité et de la conformité\n\nGitHub Advanced Security vous permet de visualiser les métriques et les informations clés sur la sécurité et d'évaluer les risques de sécurité liés au code. Examinons maintenant comment faire de même avec GitLab Ultimate.\n\n#### Affichage des métriques et des informations clés sur la sécurité\n\nGitLab fournit des [tableaux de bord de sécurité](https://docs.gitlab.com/ee/user/application_security/security_dashboard/) pour aider à évaluer la posture de sécurité de vos applications. Ces tableaux de bord affichent un ensemble de métriques, d'évaluations et de graphiques pour les vulnérabilités détectées par les scanners de sécurité exécutés sur votre projet :\n\n- tendances des vulnérabilités sur une période de 30, 60 ou 90 jours pour tous les projets d'un groupe\n- une note pour chaque projet en fonction de la gravité de la vulnérabilité\n- le nombre total de vulnérabilités détectées au cours des 365 derniers jours, y compris leur gravité\n\nPour accéder au tableau de bord de sécurité :\n\n1. Dans la barre latérale gauche, sélectionnez **Rechercher ou accéder à** et trouvez votre projet ou votre groupe.\n2. Dans l'onglet latéral, sélectionnez **Sécurisation > Tableau de bord de sécurité**.\n3. Filtrez et recherchez ce dont vous avez besoin.\n\nLa vue de groupe affiche votre posture de sécurité pour tous les projets de votre groupe :\n\n![Tableau de bord de sécurité de groupe](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/8-SD-Group.png)\n\nLa vue du projet affiche votre posture de sécurité pour un seul projet :\n\n![Tableau de bord de sécurité de projet](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/9-SD-Project.png)\n\n#### Évaluer le risque de sécurité du code\n\nGitLab Ultimate dispose d'un [rapport de vulnérabilités](https://docs.gitlab.com/ee/user/application_security/vulnerability_report/), qui fournit des informations sur les vulnérabilités des scans de la branche par défaut. Il contient les résultats cumulés de tous les jobs réussis, que l’exécution du pipeline ait réussi ou non. À tous les niveaux, le rapport de vulnérabilités contient :\n\n- le nombre total de vulnérabilités par niveau de gravité\n- les filtres des attributs de vulnérabilité courants\n- les détails de chaque vulnérabilité, présentés sous forme de tableau\n\n![Rapport de vulnérabilités](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/10-Vulnerability-Report.png)\n\nCliquer sur une vulnérabilité permet d'accéder à sa [page de vulnérabilités](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/), qui contient un certain nombre d'informations : une description, un emplacement, des identifiants et plus encore. Voici un exemple de page pour une vulnérabilité d'injection SQL détectée par notre scanner SAST :\n\n![Page sur les vulnérabilités d'injection SQL](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/11-Vulnerability-Page-1.png)\n\nÀ partir de là, l'équipe de sécurité peut collaborer en [modifiant le statut d'une vulnérabilité](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#change-the-status-of-a-vulnerability), en ajoutant un motif et en [créant des tickets pour mieux suivre les changements apportés](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#create-a-gitlab-issue-for-a-vulnerability).\n\nDepuis la page de vulnérabilités, vous pouvez également tirer parti de [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/), notre suite de fonctionnalités alimentée par l'IA, pour expliquer la vulnérabilité et [créer automatiquement une merge request qui la résout](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#vulnerability-resolution).\nL'[explication des vulnérabilités](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#vulnerability-explanation) de GitLab Duo utilise un grand modèle de langage pour :\n\n- résumer la vulnérabilité\n- aider les équipes de développement et les analystes en sécurité à comprendre la vulnérabilité, comment elle pourrait être exploitée et comment y remédier\n- suggérer une atténuation\n\n![Explication via l'IA de GitLab Duo de l'injection SQL](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/13-Explain-Vulnerability.png)\n\n## Fonctionnalités de sécurité supplémentaires de GitLab Ultimate\n\nGitLab Ultimate contient de nombreuses autres fonctionnalités de sécurité. En voici quelques exemples : des scanners de sécurité supplémentaires pour le cycle de vie complet du développement logiciel (SDLC), des garde-fous de sécurité granulaires et des autorisations personnalisées.\n\n### Scanners de sécurité pour l'ensemble du SDLC\n\nNotre portefeuille de scanners de sécurité s'étend à l'ensemble du SDLC.\n\n| Nom du scanner | Scans | Langages/Fichiers analysés|\n|  -------------- | ----- | ------------------------- |\n| [Tests statiques de sécurité des applications (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) | Code source statique | C/C++, Java, Python, Go, JavaScript, C# et plus encore |\n| [Tests dynamiques de sécurité des applications (DAST)](https://docs.gitlab.com/ee/user/application_security/dast/) | Application Web en cours d'exécution, API en direct | Langage-agnostique |\n| [Analyse de l'Infrastructure as Code (IaC)](https://docs.gitlab.com/ee/user/application_security/iac_scanning/) | Fichiers IaC |Terraform, AWS Cloud Formation, Ansible et plus encore |\n| [Analyse des conteneurs](https://docs.gitlab.com/ee/user/application_security/container_scanning/) | Images de conteneurs statiques et en cours d'exécution | Dockerfile |\n| [Analyse des dépendances et des licences](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/) | Dépendances d'applications | Requirements.txt, Yarn, Gradle, Npm et plus encore |\n| [Tests d'API Web par injection de données aléatoires](https://docs.gitlab.com/ee/user/application_security/api_fuzzing/) | Envoie des données aléatoires/invalides à l'API Web | OpenAPI, GraphQL, HAR, Collection Postman |\n| [Test à données aléatoires guidé par la couverture de code](https://docs.gitlab.com/ee/user/application_security/coverage_fuzzing/) | Envoie des données aléatoires/invalides à la fonction | C/C++, Go, Swift, Python, Rust, Java, JavaScript, AFL |\n\n\u003Cp>\u003C/p>\n\nGitLab vous permet également d'intégrer des [scanners tiers](https://about.gitlab.com/blog/integrate-external-security-scanners-into-your-devsecops-workflow/) et des [scanners personnalisés](https://about.gitlab.com/blog/how-to-integrate-custom-security-scanners-into-gitlab/) à la plateforme. Une fois intégrés, les résultats du scanner sont automatiquement présentés à différents emplacements dans GitLab, tels que dans la vue pipeline, le widget de merge request et le tableau de bord de sécurité. Consultez notre [documentation sur l'intégration du scanner de sécurité](https://docs.gitlab.com/ee/development/integrations/secure.html) pour en savoir plus.\n\n### Stratégies de sécurité et de conformité granulaires\n\nLes stratégies de GitLab fournissent aux équipes de sécurité et de conformité [un moyen d'appliquer des contrôles à l'échelle globale dans leur entreprise](https://about.gitlab.com/blog/meet-regulatory-standards-with-gitlab/). Les équipes de sécurité peuvent s'assurer que :\n\n- les scanners de sécurité sont appliqués dans les pipelines de l'équipe de développement selon une configuration appropriée\n- tous les jobs de scan s'exécutent sans modification ni altération\n- les approbations appropriées sont fournies sur les merge requests en fonction des résultats de ces constatations\n\n![Politiques de sécurité des requêtes de fusion](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/14-MR-Policy.png)\n\nLes équipes de conformité peuvent appliquer de manière centralisée plusieurs approbateurs à toutes les merge requests et s'assurer que divers paramètres sont activés sur les projets dans le cadre des exigences de leur entreprise, comme l'activation ou le verrouillage des paramètres de merge request et de dépôt. Pour en savoir plus, consultez notre documentation de la [stratégie de sécurité de GitLab](https://docs.gitlab.com/ee/user/application_security/policies/).\n\n### Rôles personnalisés et autorisations granulaires\n\n[GitLab Ultimate fournit des rôles personnalisés](https://about.gitlab.com/blog/how-to-tailor-gitlab-access-with-custom-roles/), qui permettent la création de rôles utilisateur disposant des privilèges et des autorisations requis en fonction des besoins de l'entreprise. \n\nPar exemple, un utilisateur pourrait créer un rôle « Auditeur de sécurité » avec des autorisations lui permettant d'afficher les vulnérabilités de sécurité dans le système, mais sans être en mesure de voir le code source ni d'effectuer des modifications dans le dépôt. Cet ensemble granulaire d'autorisations permet une séparation bien définie des tâches.\n\n![Création de rôle personnalisé](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/15-Custom-Roles.png)\n\nPour en savoir plus, consultez notre documentation sur les [rôles personnalisés](https://docs.gitlab.com/ee/user/custom_roles.html) et les [autorisations granulaires disponibles](https://docs.gitlab.com/ee/user/custom_roles/abilities.html).\n\n### Centre de conformité \n\nLe Centre de conformité permet aux équipes dédiées de gérer les rapports sur le respect des normes de conformité, les rapports sur les violations et les frameworks de conformité pour leur groupe. Le Centre de conformité comprend les éléments suivants :\n\n- Le [tableau de bord du respect des normes de conformité](https://docs.gitlab.com/ee/user/compliance/compliance_center/compliance_standards_adherence_dashboard.html), qui répertorie l'état de conformité des projets répondant à la norme GitLab.\n- Le [rapport sur les violations des exigences de conformité](https://docs.gitlab.com/ee/user/compliance/compliance_center/compliance_violations_report.html) affiche une vue d'ensemble des activités liées aux merge requests pour tous les projets du groupe.\n- Le [rapport sur les frameworks de conformité](https://docs.gitlab.com/ee/user/compliance/compliance_center/compliance_frameworks_report.html) montre tous les frameworks de conformité au sein d'un groupe.\n- Le [rapport sur les projets de conformité](https://docs.gitlab.com/ee/user/compliance/compliance_center/compliance_projects_report.html) montre les frameworks de conformité appliqués aux projets dans un groupe.\n\n![Centre de conformité](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/16-Compliance-Center.png)\n\nCes tableaux de bord aident à s'assurer que la séparation des tâches est respectée pour optimiser la conformité au sein de votre entreprise. Pour en savoir plus, consultez notre [documentation sur notre Centre de conformité](https://docs.gitlab.com/ee/user/compliance/compliance_center/).\n\n## En savoir plus\n\nCet article ne couvre qu'une partie du large éventail de fonctionnalités de sécurité offertes par GitLab Ultimate. Consultez ces ressources pour en savoir plus sur la façon dont GitLab Ultimate peut vous aider à améliorer la sécurité de votre entreprise et l'efficacité des équipes de développement :\n\n- [Pourquoi GitLab Ultimate ?](https://about.gitlab.com/pricing/ultimate/)\n- [Tutoriel de prise en main de l'approche DevSecOps](https://gitlab-da.gitlab.io/tutorials/security-and-governance/devsecops/simply-vulnerable-notes/)\n- [Premiers pas avec l'exemple de projet DevSecOps](https://gitlab.com/gitlab-da/tutorials/security-and-governance/devsecops/simply-vulnerable-notes)\n- [Importer votre projet de GitHub vers GitLab](https://docs.gitlab.com/ee/user/project/import/github.html)\n- [Migration depuis GitHub Actions](https://docs.gitlab.com/ee/ci/migration/github_actions.html)\n- [Tutoriel : créer et exécuter votre premier pipeline GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/)\n- [Tutoriel : créer un pipeline complexe](https://docs.gitlab.com/ee/ci/quick_start/tutorial.html)\n- [Référence de la syntaxe YAML CI/CD](https://docs.gitlab.com/ee/ci/yaml/)",[731,752,729,686,9],"zero trust","2025-02-25",{"slug":755,"featured":90,"template":690},"migration-guide-github-advanced-security-to-gitlab-ultimate","content:fr-fr:blog:migration-guide-github-advanced-security-to-gitlab-ultimate.yml","Migration Guide Github Advanced Security To Gitlab Ultimate","fr-fr/blog/migration-guide-github-advanced-security-to-gitlab-ultimate.yml","fr-fr/blog/migration-guide-github-advanced-security-to-gitlab-ultimate",{"_path":761,"_dir":246,"_draft":6,"_partial":6,"_locale":7,"seo":762,"content":768,"config":774,"_id":776,"_type":13,"title":777,"_source":15,"_file":778,"_stem":779,"_extension":18},"/fr-fr/blog/automating-with-gitlab-duo-part-1-generating-tests",{"title":763,"description":764,"ogTitle":763,"ogDescription":764,"noIndex":6,"ogImage":765,"ogUrl":766,"ogSiteName":674,"ogType":675,"canonicalUrls":766,"schema":767},"Automatisation avec GitLab Duo : comment générer des tests (Partie 1)","Découvrez comment nous utilisons GitLab Duo pour générer des tests automatisés et améliorer la rapidité et la qualité de notre développement.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097480/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%284%29_3LZkiDjHLjhqEkvOvBsVKp_1750097480784.png","https://about.gitlab.com/blog/automating-with-gitlab-duo-part-1-generating-tests","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Automatisation avec GitLab Duo : comment générer des tests (Partie 1)\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Byron Boots\"}],\n        \"datePublished\": \"2024-12-02\",\n      }\n                  ",{"title":763,"description":764,"authors":769,"heroImage":765,"date":770,"body":771,"category":687,"tags":772,"updatedDate":773},[680],"2024-12-02","Très chronophages, les tests automatisés donnent parfois l'impression de ne pas faire avancer le projet. Cependant, comme de nombreux développeurs et développeuses en ont probablement fait l'expérience, les tests automatisés offrent un retour sur investissement globalement positif. Nous l'avons particulièrement constaté lors de la construction d'un module personnalisé que nous appellerons assistant GitLab dans cet article.\n\nNotre développement initial s'est concentré sur la migration de fonctionnalités éprouvées et utilisées à partir de scripts existants vers un nouveau module dont le seul but était de servir de base pour les fonctionnalités futures. Bien que les scripts existants n'aient pas fait l'objet de tests automatisés, leur utilisation systématique a constitué une preuve concrète que la fonctionnalité fonctionnait comme prévu.\n\nNotre objectif était de fournir une solution plus mature à ce problème, et les tests automatisés sont donc devenus une nécessité. La difficulté consistait à construire efficacement tout en équilibrant le temps nécessaire pour tester et garantir la robustesse du produit, et ce, avec un total de trois membres d'équipe. Le goulot d'étranglement n'était donc pas des moindres. C'est pourquoi nous avons décidé de tirer parti de [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/), notre suite de fonctionnalités alimentées par l'IA, pour la génération de tests afin d'améliorer la rapidité et la qualité du produit livré.\n\nCette série de trois articles sur l'automatisation avec GitLab Duo couvre les points suivants :\n\n1. L'utilisation de GitLab Duo pour générer des tests pour le code \n2. La gestion de situations plus complexes avec GitLab Duo par une approche interactive\n3. Les résultats que nous avons pu obtenir (Spoiler : 1 développeur + GitLab Duo = 84 % de couverture en 2 jours)\n\n## Générer des tests pour le code avec GitLab Duo\n\nBien que les fonctionnalités soient disponibles dans tous les outils, cet article couvrira l'utilisation de GitLab Duo dans VS Code, avec l'[extension GitLab Workflow pour VS Code](https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow) pour générer des tests. Des liens vers d'autres options de GitLab Duo sont disponibles dans les références mentionnées ci-dessous.\n\n### Installez et activez GitLab Duo\n\nComme prérequis à l'utilisation de GitLab Duo, nous nous sommes assurés de disposer d'un accès aux fonctionnalités de GitLab Duo. Si vous ne disposez pas encore de GitLab Duo, vous pouvez [bénéficier d'un essai gratuit](https://about.gitlab.com/fr-fr/solutions/gitlab-duo-pro/sales/?type=free-trial).\n\nPour utiliser GitLab Duo Chat dans VS Code, nous avons suivi les [instructions d'installation](https://docs.gitlab.com/ee/user/gitlab_duo_chat/#use-gitlab-duo-chat-in-vs-code). L'extension GitLab Duo Chat s'est ensuite affichée dans la barre latérale et nous avons pu ouvrir la fenêtre de Chat.\n\n![Fenêtre « Poser une question »](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097489/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097488918.png)\n\n### Générez de tests avec Chat\n\nL'assistant GitLab est un module personnalisé construit pour standardiser l'interaction avec l'API GitLab à toutes les étapes du travail et étend d'autres fonctionnalités de la bibliothèque pour simplifier le développement et le travail de script. Une fois qu'une méthode ou une fonctionnalité a été migrée vers l'assistant GitLab et semble avoir été implémentée de manière appropriée, le processus de génération de tests était simple. Nous avons :\n- Sélectionné la méthode, la classe ou le fichier entier dans l'IDE.\n- Effectué un clic droit sur le code sélectionné.\n- Sélectionné **« Générer des tests »** sous **GitLab Duo Chat**.\n\n![Séquence de génération de tests, y compris le menu déroulant pour générer des tests](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097489/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097488919.png)\n\nEn quelques secondes, les tests ont été générés et présentés dans la fenêtre de GitLab Duo Chat. Ces tests peuvent être revus et/ou ajoutés au code base, par copier/coller, dans des fichiers de test existants ou nouveaux. Comme c'est le cas avec la plupart des générations actuelles de traitement du langage naturel, en particulier en ce qui concerne le contexte, certains des tests initiaux créés par GitLab Duo ont échoué et ont donc nécessité une mise au point (par exemple, en ce qui concerne les dépendances imbriquées).\n\n> **Conseil :** GitLab Duo ne crée pas automatiquement les fichiers dans lesquels ajouter les tests générés. Nous avons trouvé utile de créer de nouveaux fichiers de tests et d'ajouter un commentaire `# Tests générés par GitLab Duo` en haut et d'y ajouter le suffixe `_duo.py` pour indiquer d'où venaient les tests.\n\nGitLab Duo a fourni un excellent point de départ pour développer les tests automatisés de l'assistant GitLab et a considérablement amélioré la productivité en matière d'écriture de tests et de couverture du code, accélérant ainsi le processus de développement de manière conséquente. Parallèlement à GitLab Duo, de nombreuses itérations de tests utiles ont été introduites dans le module de l'assistant GitLab avec une supervision humaine.\n\nDans le prochain article de cette série, nous partagerons [les enseignements tirés de l'utilisation de GitLab Duo pour la génération de tests automatisés](https://about.gitlab.com/blog/automating-with-gitlab-duo-part-2-complex-testing/) et comment aborder des situations plus complexes en travaillant de manière interactive avec l'IA.\n\n## En savoir plus sur la génération de tests avec GitLab Duo \n\nGitLab Duo peut être utilisé de plusieurs façons pour générer des tests, consultez les autres options ci-dessous :\n\n* L'interface utilisateur de GitLab \n* [Le Web IDE GitLab (VS Code dans le cloud)](https://docs.gitlab.com/ee/user/project/web_ide/index.html) \n* VS Code, avec l'[extension GitLab Workflow pour VS Code](https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow) \n* IDE JetBrains, avec le [plug-in GitLab Duo pour JetBrains](https://plugins.jetbrains.com/plugin/22325-gitlab-duo) \n* Visual Studio pour Windows, avec l'[extension GitLab pour Visual Studio](https://marketplace.visualstudio.com/items?itemName=GitLab.GitLabExtensionForVisualStudio)\n",[685,731,9,686,708],"2025-01-03",{"slug":775,"featured":6,"template":690},"automating-with-gitlab-duo-part-1-generating-tests","content:fr-fr:blog:automating-with-gitlab-duo-part-1-generating-tests.yml","Automating With Gitlab Duo Part 1 Generating Tests","fr-fr/blog/automating-with-gitlab-duo-part-1-generating-tests.yml","fr-fr/blog/automating-with-gitlab-duo-part-1-generating-tests",1,[667,695,716,739],1756472653425]