[{"data":1,"prerenderedAt":1252},["ShallowReactive",2],{"/blog/tags/testing":3,"navigation-en-us":18,"banner-en-us":446,"footer-en-us":457,"testing-tag-posts-en-us":702},{"id":4,"title":5,"body":6,"category":6,"config":7,"content":9,"description":6,"extension":11,"meta":12,"navigation":13,"path":14,"seo":15,"slug":6,"stem":16,"testContent":6,"type":6,"__hash__":17},"blogTags/en-us/blog/tags/testing.yml","Testing",null,{"template":8},"BlogTag",{"tag":10,"tagSlug":10},"testing","yml",{},true,"/en-us/blog/tags/testing",{},"en-us/blog/tags/testing","afQfzXtJzzhDRMsfA0uLJvGc8YvP9qHWoiENq2uLFTo",{"logo":19,"freeTrial":24,"sales":29,"login":34,"items":39,"search":366,"minimal":397,"duo":416,"switchNav":425,"pricingDeployment":436},{"config":20},{"href":21,"dataGaName":22,"dataGaLocation":23},"/","gitlab logo","header",{"text":25,"config":26},"Get free trial",{"href":27,"dataGaName":28,"dataGaLocation":23},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":30,"config":31},"Request a demo",{"href":32,"dataGaName":33,"dataGaLocation":23},"/sales/?contact-topic=request-demo","sales",{"text":35,"config":36},"Sign in",{"href":37,"dataGaName":38,"dataGaLocation":23},"https://gitlab.com/users/sign_in/","sign in",[40,69,169,174,288,344],{"text":41,"config":42,"menu":44},"Platform",{"dataNavLevelOne":43},"platform",{"type":45,"columns":46},"cards",[47,53,61],{"title":41,"description":48,"link":49},"The intelligent orchestration platform for DevSecOps",{"text":50,"config":51},"Explore our Platform",{"href":52,"dataGaName":43,"dataGaLocation":23},"/platform/",{"title":54,"description":55,"link":56},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":57,"config":58},"Meet GitLab Duo",{"href":59,"dataGaName":60,"dataGaLocation":23},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":62,"description":63,"link":64},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":65,"config":66},"Learn more",{"href":67,"dataGaName":68,"dataGaLocation":23},"/why-gitlab/","why gitlab",{"text":70,"left":13,"config":71,"menu":73},"Product",{"dataNavLevelOne":72},"solutions",{"type":74,"link":75,"columns":79,"feature":148},"lists",{"text":76,"config":77},"View all Solutions",{"href":78,"dataGaName":72,"dataGaLocation":23},"/solutions/",[80,104,127],{"title":81,"description":82,"link":83,"items":88},"Automation","CI/CD and automation to accelerate deployment",{"config":84},{"icon":85,"href":86,"dataGaName":87,"dataGaLocation":23},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[89,93,96,100],{"text":90,"config":91},"CI/CD",{"href":92,"dataGaLocation":23,"dataGaName":90},"/solutions/continuous-integration/",{"text":54,"config":94},{"href":59,"dataGaLocation":23,"dataGaName":95},"gitlab duo agent platform - product menu",{"text":97,"config":98},"Source Code Management",{"href":99,"dataGaLocation":23,"dataGaName":97},"/solutions/source-code-management/",{"text":101,"config":102},"Automated Software Delivery",{"href":86,"dataGaLocation":23,"dataGaName":103},"Automated software delivery",{"title":105,"description":106,"link":107,"items":112},"Security","Deliver code faster without compromising security",{"config":108},{"href":109,"dataGaName":110,"dataGaLocation":23,"icon":111},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[113,117,122],{"text":114,"config":115},"Application Security Testing",{"href":109,"dataGaName":116,"dataGaLocation":23},"Application security testing",{"text":118,"config":119},"Software Supply Chain Security",{"href":120,"dataGaLocation":23,"dataGaName":121},"/solutions/supply-chain/","Software supply chain security",{"text":123,"config":124},"Software Compliance",{"href":125,"dataGaName":126,"dataGaLocation":23},"/solutions/software-compliance/","software compliance",{"title":128,"link":129,"items":134},"Measurement",{"config":130},{"icon":131,"href":132,"dataGaName":133,"dataGaLocation":23},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[135,139,143],{"text":136,"config":137},"Visibility & Measurement",{"href":132,"dataGaLocation":23,"dataGaName":138},"Visibility and Measurement",{"text":140,"config":141},"Value Stream Management",{"href":142,"dataGaLocation":23,"dataGaName":140},"/solutions/value-stream-management/",{"text":144,"config":145},"Analytics & Insights",{"href":146,"dataGaLocation":23,"dataGaName":147},"/solutions/analytics-and-insights/","Analytics and insights",{"title":149,"type":74,"items":150},"GitLab for",[151,157,163],{"text":152,"config":153},"Enterprise",{"icon":154,"href":155,"dataGaLocation":23,"dataGaName":156},"Building","/enterprise/","enterprise",{"text":158,"config":159},"Small Business",{"icon":160,"href":161,"dataGaLocation":23,"dataGaName":162},"Work","/small-business/","small business",{"text":164,"config":165},"Public Sector",{"icon":166,"href":167,"dataGaLocation":23,"dataGaName":168},"Organization","/solutions/public-sector/","public sector",{"text":170,"config":171},"Pricing",{"href":172,"dataGaName":173,"dataGaLocation":23,"dataNavLevelOne":173},"/pricing/","pricing",{"text":175,"config":176,"menu":178},"Resources",{"dataNavLevelOne":177},"resources",{"type":74,"link":179,"columns":183,"feature":277},{"text":180,"config":181},"View all resources",{"href":182,"dataGaName":177,"dataGaLocation":23},"/resources/",[184,217,244],{"title":185,"items":186},"Getting started",[187,192,197,202,207,212],{"text":188,"config":189},"Install",{"href":190,"dataGaName":191,"dataGaLocation":23},"/install/","install",{"text":193,"config":194},"Quick start guides",{"href":195,"dataGaName":196,"dataGaLocation":23},"/get-started/","quick setup checklists",{"text":198,"config":199},"Learn",{"href":200,"dataGaLocation":23,"dataGaName":201},"https://university.gitlab.com/","learn",{"text":203,"config":204},"Product documentation",{"href":205,"dataGaName":206,"dataGaLocation":23},"https://docs.gitlab.com/","product documentation",{"text":208,"config":209},"Best practice videos",{"href":210,"dataGaName":211,"dataGaLocation":23},"/getting-started-videos/","best practice videos",{"text":213,"config":214},"Integrations",{"href":215,"dataGaName":216,"dataGaLocation":23},"/integrations/","integrations",{"title":218,"items":219},"Discover",[220,225,230,235,239],{"text":221,"config":222},"Customer success stories",{"href":223,"dataGaName":224,"dataGaLocation":23},"/customers/","customer success stories",{"text":226,"config":227},"Blog",{"href":228,"dataGaName":229,"dataGaLocation":23},"/blog/","blog",{"text":231,"config":232},"Demo Hub",{"href":233,"dataGaName":234,"dataGaLocation":23},"/demo-hub/","demo hub",{"text":236,"config":237},"The Source",{"href":238,"dataGaName":229,"dataGaLocation":23},"/the-source/",{"text":240,"config":241},"Remote",{"href":242,"dataGaName":243,"dataGaLocation":23},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":245,"items":246},"Connect",[247,252,257,262,267,272],{"text":248,"config":249},"GitLab Services",{"href":250,"dataGaName":251,"dataGaLocation":23},"/services/","services",{"text":253,"config":254},"Contribute",{"href":255,"dataGaName":256,"dataGaLocation":23},"https://contributors.gitlab.com","contribute",{"text":258,"config":259},"Community",{"href":260,"dataGaName":261,"dataGaLocation":23},"/community/","community",{"text":263,"config":264},"Forum",{"href":265,"dataGaName":266,"dataGaLocation":23},"https://forum.gitlab.com/","forum",{"text":268,"config":269},"Events",{"href":270,"dataGaName":271,"dataGaLocation":23},"/events/","events",{"text":273,"config":274},"Partners",{"href":275,"dataGaName":276,"dataGaLocation":23},"/partners/","partners",{"config":278,"title":281,"text":282,"link":283},{"background":279,"textColor":280},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":284,"config":285},"Read the latest",{"href":286,"dataGaName":287,"dataGaLocation":23},"/whats-new/","whats new",{"text":289,"config":290,"menu":292},"Company",{"dataNavLevelOne":291},"company",{"type":74,"columns":293},[294],{"items":295},[296,301,307,309,314,319,324,329,334,339],{"text":297,"config":298},"About",{"href":299,"dataGaName":300,"dataGaLocation":23},"/company/","about",{"text":302,"config":303,"footerGa":306},"Jobs",{"href":304,"dataGaName":305,"dataGaLocation":23},"/jobs/","jobs",{"dataGaName":305},{"text":268,"config":308},{"href":270,"dataGaName":271,"dataGaLocation":23},{"text":310,"config":311},"Leadership",{"href":312,"dataGaName":313,"dataGaLocation":23},"/company/team/e-group/","leadership",{"text":315,"config":316},"Handbook",{"href":317,"dataGaName":318,"dataGaLocation":23},"https://handbook.gitlab.com/","handbook",{"text":320,"config":321},"Investor relations",{"href":322,"dataGaName":323,"dataGaLocation":23},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":325,"config":326},"Trust Center",{"href":327,"dataGaName":328,"dataGaLocation":23},"/security/","trust center",{"text":330,"config":331},"AI Transparency Center",{"href":332,"dataGaName":333,"dataGaLocation":23},"/ai-transparency-center/","ai transparency center",{"text":335,"config":336},"Newsletter",{"href":337,"dataGaName":338,"dataGaLocation":23},"/company/contact/#contact-forms","newsletter",{"text":340,"config":341},"Press",{"href":342,"dataGaName":343,"dataGaLocation":23},"/press/","press",{"text":345,"config":346,"menu":347},"Contact us",{"dataNavLevelOne":291},{"type":74,"columns":348},[349],{"items":350},[351,356,361],{"text":352,"config":353},"Talk to sales",{"href":354,"dataGaName":355,"dataGaLocation":23},"/sales/","talk to sales",{"text":357,"config":358},"Support portal",{"href":359,"dataGaName":360,"dataGaLocation":23},"https://support.gitlab.com/hc/en-us","support portal",{"text":362,"config":363},"Customer portal",{"href":364,"dataGaName":365,"dataGaLocation":23},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":367,"login":368,"suggestions":375},"Close",{"text":369,"link":370},"To search repositories and projects, login to",{"text":371,"config":372},"gitlab.com",{"href":37,"dataGaName":373,"dataGaLocation":374},"search login","search",{"text":376,"default":377},"Suggestions",[378,380,384,386,390,394],{"text":54,"config":379},{"href":59,"dataGaName":54,"dataGaLocation":374},{"text":381,"config":382},"Code Suggestions (AI)",{"href":383,"dataGaName":381,"dataGaLocation":374},"/solutions/code-suggestions/",{"text":90,"config":385},{"href":92,"dataGaName":90,"dataGaLocation":374},{"text":387,"config":388},"GitLab on AWS",{"href":389,"dataGaName":387,"dataGaLocation":374},"/partners/technology-partners/aws/",{"text":391,"config":392},"GitLab on Google Cloud",{"href":393,"dataGaName":391,"dataGaLocation":374},"/partners/technology-partners/google-cloud-platform/",{"text":395,"config":396},"Why GitLab?",{"href":67,"dataGaName":395,"dataGaLocation":374},{"freeTrial":398,"mobileIcon":403,"desktopIcon":408,"secondaryButton":411},{"text":399,"config":400},"Start free trial",{"href":401,"dataGaName":28,"dataGaLocation":402},"https://gitlab.com/-/trials/new/","nav",{"altText":404,"config":405},"Gitlab Icon",{"src":406,"dataGaName":407,"dataGaLocation":402},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":404,"config":409},{"src":410,"dataGaName":407,"dataGaLocation":402},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":412,"config":413},"Get Started",{"href":414,"dataGaName":415,"dataGaLocation":402},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":417,"mobileIcon":421,"desktopIcon":423},{"text":418,"config":419},"Learn more about GitLab Duo",{"href":59,"dataGaName":420,"dataGaLocation":402},"gitlab duo",{"altText":404,"config":422},{"src":406,"dataGaName":407,"dataGaLocation":402},{"altText":404,"config":424},{"src":410,"dataGaName":407,"dataGaLocation":402},{"button":426,"mobileIcon":431,"desktopIcon":433},{"text":427,"config":428},"/switch",{"href":429,"dataGaName":430,"dataGaLocation":402},"#contact","switch",{"altText":404,"config":432},{"src":406,"dataGaName":407,"dataGaLocation":402},{"altText":404,"config":434},{"src":435,"dataGaName":407,"dataGaLocation":402},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":437,"mobileIcon":442,"desktopIcon":444},{"text":438,"config":439},"Back to pricing",{"href":172,"dataGaName":440,"dataGaLocation":402,"icon":441},"back to pricing","GoBack",{"altText":404,"config":443},{"src":406,"dataGaName":407,"dataGaLocation":402},{"altText":404,"config":445},{"src":410,"dataGaName":407,"dataGaLocation":402},{"title":447,"titleMobile":448,"button":449,"config":454},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":65,"config":450},{"href":451,"dataGaName":452,"dataGaLocation":453},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":455,"disabled":456},"release",false,{"data":458},{"text":459,"source":460,"edit":466,"contribute":471,"config":476,"items":481,"minimal":691},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":461,"config":462},"View page source",{"href":463,"dataGaName":464,"dataGaLocation":465},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":467,"config":468},"Edit this page",{"href":469,"dataGaName":470,"dataGaLocation":465},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":472,"config":473},"Please contribute",{"href":474,"dataGaName":475,"dataGaLocation":465},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":477,"facebook":478,"youtube":479,"linkedin":480},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[482,529,583,627,659],{"title":170,"links":483,"subMenu":498},[484,488,493],{"text":485,"config":486},"View plans",{"href":172,"dataGaName":487,"dataGaLocation":465},"view plans",{"text":489,"config":490},"Why Premium?",{"href":491,"dataGaName":492,"dataGaLocation":465},"/pricing/premium/","why premium",{"text":494,"config":495},"Why Ultimate?",{"href":496,"dataGaName":497,"dataGaLocation":465},"/pricing/ultimate/","why ultimate",[499],{"title":500,"links":501},"Contact Us",[502,505,507,509,514,519,524],{"text":503,"config":504},"Contact sales",{"href":354,"dataGaName":33,"dataGaLocation":465},{"text":357,"config":506},{"href":359,"dataGaName":360,"dataGaLocation":465},{"text":362,"config":508},{"href":364,"dataGaName":365,"dataGaLocation":465},{"text":510,"config":511},"Status",{"href":512,"dataGaName":513,"dataGaLocation":465},"https://status.gitlab.com/","status",{"text":515,"config":516},"Terms of use",{"href":517,"dataGaName":518,"dataGaLocation":465},"/terms/","terms of use",{"text":520,"config":521},"Privacy statement",{"href":522,"dataGaName":523,"dataGaLocation":465},"/privacy/","privacy statement",{"text":525,"config":526},"Cookie preferences",{"dataGaName":527,"dataGaLocation":465,"id":528,"isOneTrustButton":13},"cookie preferences","ot-sdk-btn",{"title":70,"links":530,"subMenu":539},[531,535],{"text":532,"config":533},"DevSecOps platform",{"href":52,"dataGaName":534,"dataGaLocation":465},"devsecops platform",{"text":536,"config":537},"AI-Assisted Development",{"href":59,"dataGaName":538,"dataGaLocation":465},"ai-assisted development",[540],{"title":541,"links":542},"Topics",[543,548,553,558,563,568,573,578],{"text":544,"config":545},"CICD",{"href":546,"dataGaName":547,"dataGaLocation":465},"/topics/ci-cd/","cicd",{"text":549,"config":550},"GitOps",{"href":551,"dataGaName":552,"dataGaLocation":465},"/topics/gitops/","gitops",{"text":554,"config":555},"DevOps",{"href":556,"dataGaName":557,"dataGaLocation":465},"/topics/devops/","devops",{"text":559,"config":560},"Version Control",{"href":561,"dataGaName":562,"dataGaLocation":465},"/topics/version-control/","version control",{"text":564,"config":565},"DevSecOps",{"href":566,"dataGaName":567,"dataGaLocation":465},"/topics/devsecops/","devsecops",{"text":569,"config":570},"Cloud Native",{"href":571,"dataGaName":572,"dataGaLocation":465},"/topics/cloud-native/","cloud native",{"text":574,"config":575},"AI for Coding",{"href":576,"dataGaName":577,"dataGaLocation":465},"/topics/devops/ai-for-coding/","ai for coding",{"text":579,"config":580},"Agentic AI",{"href":581,"dataGaName":582,"dataGaLocation":465},"/topics/agentic-ai/","agentic ai",{"title":584,"links":585},"Solutions",[586,588,590,595,599,602,606,609,611,614,617,622],{"text":114,"config":587},{"href":109,"dataGaName":114,"dataGaLocation":465},{"text":103,"config":589},{"href":86,"dataGaName":87,"dataGaLocation":465},{"text":591,"config":592},"Agile development",{"href":593,"dataGaName":594,"dataGaLocation":465},"/solutions/agile-delivery/","agile delivery",{"text":596,"config":597},"SCM",{"href":99,"dataGaName":598,"dataGaLocation":465},"source code management",{"text":544,"config":600},{"href":92,"dataGaName":601,"dataGaLocation":465},"continuous integration & delivery",{"text":603,"config":604},"Value stream management",{"href":142,"dataGaName":605,"dataGaLocation":465},"value stream management",{"text":549,"config":607},{"href":608,"dataGaName":552,"dataGaLocation":465},"/solutions/gitops/",{"text":152,"config":610},{"href":155,"dataGaName":156,"dataGaLocation":465},{"text":612,"config":613},"Small business",{"href":161,"dataGaName":162,"dataGaLocation":465},{"text":615,"config":616},"Public sector",{"href":167,"dataGaName":168,"dataGaLocation":465},{"text":618,"config":619},"Education",{"href":620,"dataGaName":621,"dataGaLocation":465},"/solutions/education/","education",{"text":623,"config":624},"Financial services",{"href":625,"dataGaName":626,"dataGaLocation":465},"/solutions/finance/","financial services",{"title":175,"links":628},[629,631,633,635,638,640,643,645,647,649,651,653,655,657],{"text":188,"config":630},{"href":190,"dataGaName":191,"dataGaLocation":465},{"text":193,"config":632},{"href":195,"dataGaName":196,"dataGaLocation":465},{"text":198,"config":634},{"href":200,"dataGaName":201,"dataGaLocation":465},{"text":203,"config":636},{"href":205,"dataGaName":637,"dataGaLocation":465},"docs",{"text":226,"config":639},{"href":228,"dataGaName":229,"dataGaLocation":465},{"text":641,"config":642},"What's new",{"href":286,"dataGaName":287,"dataGaLocation":465},{"text":221,"config":644},{"href":223,"dataGaName":224,"dataGaLocation":465},{"text":240,"config":646},{"href":242,"dataGaName":243,"dataGaLocation":465},{"text":248,"config":648},{"href":250,"dataGaName":251,"dataGaLocation":465},{"text":253,"config":650},{"href":255,"dataGaName":256,"dataGaLocation":465},{"text":258,"config":652},{"href":260,"dataGaName":261,"dataGaLocation":465},{"text":263,"config":654},{"href":265,"dataGaName":266,"dataGaLocation":465},{"text":268,"config":656},{"href":270,"dataGaName":271,"dataGaLocation":465},{"text":273,"config":658},{"href":275,"dataGaName":276,"dataGaLocation":465},{"title":289,"links":660},[661,663,665,667,669,671,675,680,682,684,686],{"text":297,"config":662},{"href":299,"dataGaName":291,"dataGaLocation":465},{"text":302,"config":664},{"href":304,"dataGaName":305,"dataGaLocation":465},{"text":310,"config":666},{"href":312,"dataGaName":313,"dataGaLocation":465},{"text":315,"config":668},{"href":317,"dataGaName":318,"dataGaLocation":465},{"text":320,"config":670},{"href":322,"dataGaName":323,"dataGaLocation":465},{"text":672,"config":673},"Sustainability",{"href":674,"dataGaName":672,"dataGaLocation":465},"/sustainability/",{"text":676,"config":677},"Diversity, inclusion and belonging (DIB)",{"href":678,"dataGaName":679,"dataGaLocation":465},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":325,"config":681},{"href":327,"dataGaName":328,"dataGaLocation":465},{"text":335,"config":683},{"href":337,"dataGaName":338,"dataGaLocation":465},{"text":340,"config":685},{"href":342,"dataGaName":343,"dataGaLocation":465},{"text":687,"config":688},"Modern Slavery Transparency Statement",{"href":689,"dataGaName":690,"dataGaLocation":465},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":692},[693,696,699],{"text":694,"config":695},"Terms",{"href":517,"dataGaName":518,"dataGaLocation":465},{"text":697,"config":698},"Cookies",{"dataGaName":527,"dataGaLocation":465,"id":528,"isOneTrustButton":13},{"text":700,"config":701},"Privacy",{"href":522,"dataGaName":523,"dataGaLocation":465},[703,713,722,731,739,746,753,761,770,778,785,793,800,809,809,818,826,834,843,851,859,868,876,884,892,900,908,916,924,932,940,947,954,963,971,979,985,992,999,1006,1013,1021,1030,1038,1038,1046,1053,1061,1069,1076,1084,1093,1101,1108,1116,1123,1130,1137,1145,1153,1161,1169,1177,1185,1193,1200,1208,1215,1222,1229,1236,1244],{"title":704,"heroImage":705,"category":706,"description":707,"authors":708,"date":711,"slug":712,"externalUrl":6},"How GitLab transforms embedded systems testing cycles","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","engineering","Discover how managed lifecycle environments streamline and automate virtual testing, delivering rapid feedback without environment sprawl or cost overruns.",[709,710],"Matt DeLaney","Darwin Sanoy","2025-10-02","how-gitlab-transforms-embedded-systems-testing-cycles",{"title":714,"heroImage":715,"category":716,"description":717,"authors":718,"date":720,"slug":721,"externalUrl":6},"A comprehensive guide to GitLab DAST","https://res.cloudinary.com/about-gitlab-com/image/upload/v1759320418/xjmqcozxzt4frx0hori3.png","security","DevSecOps teams can learn how to implement and configure dynamic application security testing, perform passive/active scans, and set security policies.",[719],"Fernando Diaz","2025-09-17","comprehensive-guide-to-gitlab-dast",{"title":723,"heroImage":724,"category":725,"description":726,"authors":727,"date":729,"slug":730,"externalUrl":6},"Enhance application quality with AI-powered test generation","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659604/Blog/Hero%20Images/Screenshot_2024-11-27_at_4.55.28_PM.png","ai","Learn how GitLab Duo with Amazon Q improves the QA process by automatically generating comprehensive unit tests.",[728],"Cesar Saavedra","2025-07-03","enhance-application-quality-with-ai-powered-test-generation",{"title":732,"heroImage":733,"category":725,"description":734,"authors":735,"date":737,"slug":738,"externalUrl":6},"Automating with GitLab Duo, Part 3: Validating testing","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","Discover what test we ran to validate the impact of GitLab Duo on our team’s automated testing – and the results we achieved.",[736],"Byron Boots","2024-12-17","automating-with-gitlab-duo-part-3-validating-testing",{"title":740,"heroImage":741,"category":725,"description":742,"authors":743,"date":744,"slug":745,"externalUrl":6},"Automating with GitLab Duo, Part 2: Complex testing","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","Find out how the GitLab team addressed more complex testing situations using GitLab Duo's AI capabilities, including ensuring that code testing followed standards.",[736],"2024-12-10","automating-with-gitlab-duo-part-2-complex-testing",{"title":747,"heroImage":748,"category":725,"description":749,"authors":750,"date":751,"slug":752,"externalUrl":6},"Automating with GitLab Duo, Part 1: Generating tests","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","Learn how we used the AI-driven DevSecOps platform to generate automated tests and improve our development speed and quality.",[736],"2024-12-02","automating-with-gitlab-duo-part-1-generating-tests",{"title":754,"heroImage":755,"category":567,"description":756,"authors":757,"date":759,"slug":760,"externalUrl":6},"Develop C++ unit testing with Catch2, JUnit, and GitLab CI","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659684/Blog/Hero%20Images/AdobeStock_479904468__1_.jpg","Learn how to set up, write, and automate C++ unit tests using Catch2 with GitLab CI/CD. See examples from a working air quality app project and AI-powered help from GitLab Duo.",[758],"Fatima Sarah Khalid","2024-07-02","develop-c-unit-testing-with-catch2-junit-and-gitlab-ci",{"title":762,"heroImage":763,"category":725,"description":764,"authors":765,"date":768,"slug":769,"externalUrl":6},"Inside look: How GitLab's Test Platform team validates AI features","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099033/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2811%29_78Dav6FR9EGjhebHWuBVan_1750099033422.png","Learn how we continuously analyze AI feature performance, including testing latency worldwide, and get to know our new AI continuous analysis tool.",[766,767],"Mark Lapierre","Vincy Wilson","2024-06-03","inside-look-how-gitlabs-test-platform-team-validates-ai-features",{"title":771,"heroImage":772,"category":716,"description":773,"authors":774,"date":776,"slug":777,"externalUrl":6},"Detect application vulnerabilities with GitLab’s browser-based DAST","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664923/Blog/Hero%20Images/security-checklist.png","Learn why you should include dynamic application security testing as part of a defense-in-depth strategy for software development, and how to migrate from proxy-based DAST.",[775],"Sara Meadzinger","2024-05-13","detect-application-vulnerabilities-with-gitlabs-browser-based-dast",{"title":779,"heroImage":780,"category":716,"description":781,"authors":782,"date":783,"slug":784,"externalUrl":6},"Migration guide: GitHub Advanced Security to GitLab Ultimate","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666187/Blog/Hero%20Images/blog-image-template-1800x945__6_.png","Understand the similarities and differences between GitLab Ultimate and GitHub Advanced Security. Then follow this in-depth tutorial to make the move to the GitLab DevSecOps platform.",[719],"2024-05-01","migration-guide-github-advanced-security-to-gitlab-ultimate",{"title":786,"heroImage":787,"category":716,"description":788,"authors":789,"date":791,"slug":792,"externalUrl":6},"Integrate external security scanners into your DevSecOps workflow","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098768/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%282%29_1khno1AUtxuL6zzmEmjK7v_1750098768560.png","Learn how to bring Snyk scan results into the merge request widget by parsing JSON artifacts and leveraging the SARIF file format.",[790],"Sam Morris","2024-04-08","integrate-external-security-scanners-into-your-devsecops-workflow",{"title":794,"heroImage":795,"category":716,"description":796,"authors":797,"date":798,"slug":799,"externalUrl":6},"How to integrate custom security scanners into GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097082/Blog/Hero%20Images/Blog/Hero%20Images/securitycheck_securitycheck.png_1750097081856.png","Learn how to extend the DevSecOps platform by adding custom security scanners to your workflows (includes an easy-to-follow tutorial).",[719],"2024-02-27","how-to-integrate-custom-security-scanners-into-gitlab",{"title":801,"heroImage":802,"category":803,"description":804,"authors":805,"date":807,"slug":808,"externalUrl":6},"How GitLab's Red Team automates C2 testing ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665667/Blog/Hero%20Images/built-in-security.jpg","security-labs","Learn how to apply professional development practices to Red Teams using open source command and control tools.",[806],"Josh Feehs","2023-11-28","how-gitlabs-red-team-automates-c2-testing",{"title":810,"heroImage":811,"category":716,"description":812,"authors":813,"date":816,"slug":817,"externalUrl":6},"Tips to configure browser-based DAST scans","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659561/Blog/Hero%20Images/securitycheck.png","Learn how to use the browser-based analyzer with common dynamic application security testing settings, based on web application attributes, to ensure successful scans.",[814,815],"Julie Byrne","Jerez Solis","2023-11-14","tips-to-configure-browser-based-dast-scans",{"title":819,"heroImage":820,"category":716,"description":821,"authors":822,"date":824,"slug":825,"externalUrl":6},"Introducing GitLab browser-based active checks in DAST","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664638/Blog/Hero%20Images/applicationsecurity.png","As of GitLab 16.4, or DAST 4.0.9, browser-based DAST active scans will search for path traversal vulnerabilities using the GitLab check 22.1 instead of the ZAP alert 6.",[823],"Cameron Swords","2023-10-10","dast-release-first-gitlab-active-check",{"title":827,"heroImage":828,"category":706,"description":829,"authors":830,"date":832,"slug":833,"externalUrl":6},"Speed up API and microservices delivery with Microcks and GitLab - Part 1","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683021/Blog/Hero%20Images/lightsticks.png","Learn how to configure Microcks for GitLab and what the use cases are for this open source Kubernetes-native tool.",[831],"Madou Coulibaly","2023-09-27","microcks-and-gitlab-part-one",{"title":835,"heroImage":836,"category":706,"description":837,"authors":838,"date":841,"slug":842,"externalUrl":6},"Building GitLab with GitLab: Web API Fuzz Testing","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659740/Blog/Hero%20Images/building-gitlab-with-gitlab-no-type.png","Our new series shows how we dogfood new DevSecOps platform features to ready them for you. First up, security testing.",[839,840],"Mike Eddington","Eugene Lim","2023-05-09","building-gitlab-with-gitlab-api-fuzzing-workflow",{"title":844,"heroImage":845,"category":706,"description":846,"authors":847,"date":849,"slug":850,"externalUrl":6},"How to continuously test web apps and APIs with Hurl and GitLab CI/CD","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659883/Blog/Hero%20Images/post-cover-image.jpg","Hurl as a CLI tool can be integrated into the DevSecOps platform to continuously verify, test, and monitor targets. It also offers integrated unit test reports in GitLab CI/CD.",[848],"Michael Friedrich","2022-12-14","how-to-continously-test-web-apps-apis-with-hurl-and-gitlab-ci-cd",{"title":852,"heroImage":853,"category":706,"description":854,"authors":855,"date":857,"slug":858,"externalUrl":6},"How to automate testing for a React application with GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666775/Blog/Hero%20Images/cover.jpg","Learn how to add React automated tests to a GitLab CI pipeline with this tutorial.",[856],"Jeremy Wagner","2022-11-01","how-to-automate-testing-for-a-react-application-with-gitlab",{"title":860,"heroImage":861,"category":862,"description":863,"authors":864,"date":866,"slug":867,"externalUrl":6},"Introducing browser-based DAST and integrated passive checks","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682466/Blog/Hero%20Images/vek-labs-e8ofKlNHdsg-unsplash.jpg","product","We're working hard on reducing noise. Here's what you need to know about the status of our browser-based DAST offering today.",[865],"Isaac Dawson","2022-10-19","browser-based-dast-feature-announcement",{"title":869,"heroImage":870,"category":567,"description":871,"authors":872,"date":874,"slug":875,"externalUrl":6},"Get started with microservices architecture","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667875/Blog/Hero%20Images/trends-in-version-control-land-microservices-cover.jpg","For DevOps teams ready to take the next step, adopting a microservices architecture is a smart choice. Here's what you need to know.",[873],"GitLab","2022-09-20","get-started-with-microservices-architecture",{"title":877,"heroImage":878,"category":567,"description":879,"authors":880,"date":882,"slug":883,"externalUrl":6},"The GitLab guide to modern software testing","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668307/Blog/Hero%20Images/test-automation-devops.jpg","If test is your DevOps team's Public Enemy No. 1, it's time to rethink your strategy. Here's what you need to know about modern software testing.",[881],"Valerie Silverthorne","2022-08-18","the-gitlab-guide-to-modern-software-testing",{"title":885,"heroImage":886,"category":706,"description":887,"authors":888,"date":890,"slug":891,"externalUrl":6},"How to quickly (and successfully) onboard engineers","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670635/Blog/Hero%20Images/kubernetesterms.jpg","It's a tough hiring market today. Here's how GitLab gets engineers onboard fast and sets them up for success.",[889],"David O'Regan","2022-07-21","quickly-onboarding-engineers-successfully",{"title":893,"heroImage":878,"category":894,"description":895,"authors":896,"date":898,"slug":899,"externalUrl":6},"How to leverage modern software testing skills in DevOps","insights","Test automation is finally happening, but do teams have the necessary modern software testing skills? Here's what you need to know",[897],"Lauren Minning","2022-07-05","how-to-leverage-modern-software-testing-skills-in-devops",{"title":901,"heroImage":902,"category":716,"description":903,"authors":904,"date":906,"slug":907,"externalUrl":6},"One DevOps platform can help you achieve DevSecOps","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679348/Blog/Hero%20Images/locks.jpg","GitLab drives innovation in the AST market to secure cloud-native applications.",[905],"Sandra Gittlen","2022-05-09","one-devops-platform-can-help-you-achieve-devsecops",{"title":909,"heroImage":910,"category":567,"description":911,"authors":912,"date":914,"slug":915,"externalUrl":6},"DevOps careers: SRE, engineer, and platform engineer","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666685/Blog/Hero%20Images/comparing-confusing-terms-in-github-bitbucket-and-gitlab-cover.jpg","Where does an SRE leave off and a DevOps engineer (or platform engineer) begin? Here's what you need to know.",[913],"Lauren Gibbons Paul","2022-04-25","career-spotlight-sre-vs-devops-engineer-vs-devops-platform-engineer",{"title":917,"heroImage":918,"category":706,"description":919,"authors":920,"date":922,"slug":923,"externalUrl":6},"The top DevOps tooling metrics and targets at GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665635/Blog/Hero%20Images/blog-performance-metrics.jpg","Here is how we measure DevOps success and why we always try to look forward.",[921],"Mek Stittri","2022-04-05","gitlab-top-devops-tooling-metrics-and-targets",{"title":925,"heroImage":926,"category":291,"description":927,"authors":928,"date":930,"slug":931,"externalUrl":6},"The engineering director shadow experience at GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667509/Blog/Hero%20Images/continuous-integration-from-jenkins-to-gitlab-using-docker.jpg","Shadowing an engineering director at GitLab was an immersive, collaborative experience. Here's what you need to know.",[929],"William Arias","2022-04-01","engineering-director-shadow",{"title":933,"heroImage":934,"category":935,"description":936,"authors":937,"date":938,"slug":939,"externalUrl":6},"How to get integrated secure coding advice in GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662877/Blog/Hero%20Images/security-cover-new.png","news","Secure Code Warrior now offers integrated security training and guidance within the GitLab DevOps Platform.",[873],"2022-03-24","heres-how-to-get-integrated-secure-coding-advice-in-gitlab",{"title":941,"heroImage":942,"category":716,"description":943,"authors":944,"date":945,"slug":946,"externalUrl":6},"Using the GitLab GraphQL API for vulnerability reporting","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682219/Blog/Hero%20Images/jeremy-bishop-FzrlPh20l7Q-unsplash.jpg","Follow along as we teach you how to use GitLab GraphQL API to manage vulnerabilities programatically.",[719],"2022-02-02","graphql-vulnerability-api",{"title":948,"heroImage":949,"category":567,"description":950,"authors":951,"date":952,"slug":953,"externalUrl":6},"Want faster releases? Your answer lies in automated software testing","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663397/Blog/Hero%20Images/logoforblogpost.jpg","The trouble with testing? Nearly everything! Here's why automated software testing is so hard to get right, and how a DevOps platform can help.",[881],"2021-09-30","want-faster-releases-your-answer-lies-in-automated-software-testing",{"title":955,"heroImage":956,"category":957,"description":958,"authors":959,"date":961,"slug":962,"externalUrl":6},"How we tested a feature that affected (almost) all parts of GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677856/Blog/Hero%20Images/collaboration.png","unfiltered","Crowd-sourcing testing across teams",[960],"Aakriti Gupta","2021-03-17","collaborating-on-a-cross-stage-feature",{"title":964,"heroImage":965,"category":706,"description":966,"authors":967,"date":969,"slug":970,"externalUrl":6},"Meet Praefect: The traffic manager making your Git data highly available","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669204/Blog/Hero%20Images/traffic-intersection.jpg","This router and transaction manager ensures there are multiple copies of each Git repository available in the event of an outage – no NFS required.",[968],"Zeger-Jan van de Weg","2021-01-21","high-availability-git-storage-with-praefect",{"title":972,"heroImage":973,"category":957,"description":974,"authors":975,"date":977,"slug":978,"externalUrl":6},"Why (Continuous) Fuzzing","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664102/Blog/Hero%20Images/gitlab-values-cover.png","Learn what fuzzing is, what's so good at fuzzing code continuously and why to do it here!",[976],"Yevgeny Pats","2020-12-10","why-continuous-fuzzing",{"title":980,"heroImage":973,"category":957,"description":981,"authors":982,"date":983,"slug":984,"externalUrl":6},"How to fuzz Go code with go-fuzz continuously","Learn how (and why!) to fuzz Go code",[976],"2020-12-03","how-to-fuzz-go",{"title":986,"heroImage":973,"category":957,"description":987,"authors":988,"date":990,"slug":991,"externalUrl":6},"Scaling down: How we shrank image transfers by 93%","Our approach to delivering an image scaling solution to speed up GitLab site\nrendering",[989],"Matthias Käppler","2020-11-02","scaling-down-how-we-prototyped-an-image-scaler-at-gitlab",{"title":993,"heroImage":994,"category":894,"description":995,"authors":996,"date":997,"slug":998,"externalUrl":6},"Future-proof your developer career","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679588/Blog/Hero%20Images/future-of-software-future-proof-your-career.png","Roles are changing and AI is coming. We asked 14 DevOps practitioners, analysts, and GitLab execs how to future-proof your career.",[881],"2020-10-30","future-proof-your-developer-career",{"title":1000,"heroImage":1001,"category":894,"description":1002,"authors":1003,"date":1004,"slug":1005,"externalUrl":6},"How AI will change software development","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681709/Blog/Hero%20Images/future-of-software-ai.png","AI has made self-driving cars possible, so what about self-writing code? We asked 14 DevOps practitioners, industry analysts and execs to share their take on how AI will impact software development.",[881],"2020-10-28","ai-in-software-development",{"title":1007,"heroImage":1008,"category":716,"description":1009,"authors":1010,"date":1011,"slug":1012,"externalUrl":6},"How to secure your Kubernetes pods using GitLab Container Network Security","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681687/Blog/Hero%20Images/diane-helentjaris-TYk0YQbog9g-unsplash.jpg","We help you get started with securing your Kubernetes cluster using Cilium, a GitLab-managed application.",[719],"2020-10-23","container-network-security-is-important",{"title":1014,"heroImage":1015,"category":894,"description":1016,"authors":1017,"date":1019,"slug":1020,"externalUrl":6},"How to carry out effective code reviews","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678861/Blog/Hero%20Images/pre-commit.jpg","From time management to unblocking, discover the secrets of more efficient code reviews.",[1018],"Phil Hughes","2020-09-08","efficient-code-review-tips",{"title":1022,"heroImage":1023,"category":957,"description":1024,"authors":1025,"date":1028,"slug":1029,"externalUrl":6},"How the Search Team at GitLab Implemented a Risk Map to Direct Automated Testing Efforts","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669590/Blog/Hero%20Images/niklas_hamann-fyvNzhJTQBA-unsplash.jpg","A justification of how the search team decided to try risk mapping as an ongoing exercise to determine where test automation should be written, and some guidance on how to create a risk map.",[1026,1027],"Erick Banks","John McGuire","2020-09-03","risk-mapping",{"title":1031,"heroImage":1032,"category":706,"description":1033,"authors":1034,"date":1036,"slug":1037,"externalUrl":6},"How developer-centric AppSec testing can dramatically change your DevOps team","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681513/Blog/Hero%20Images/stackhawk.jpg","Find and fix security bugs faster by implementing developer-centric application security testing in the CI pipeline. And the bonus? Engineering and security will finally be better aligned.",[1035],"Joni Klippert","2020-08-21","align-engineering-security-appsec-tests-in-ci",{"title":1039,"heroImage":1040,"category":957,"description":1041,"authors":1042,"date":1044,"slug":1045,"externalUrl":6},"How Arctic Engine uses GitLab's fuzz testing","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681504/Blog/Hero%20Images/arcticengine.png","Using GitLab's fuzz testing, we discovered and fixed various real defects that could crash our software. Now we can detect vulnerabilities before merging the code.",[1043],"Huldra","2020-08-19","arctic-engine-fuzz-testing-blog",{"title":1047,"heroImage":1048,"category":716,"description":1049,"authors":1050,"date":1051,"slug":1052,"externalUrl":6},"How to benchmark security tools: a case study using WebGoat","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678166/Blog/Hero%20Images/benchmarking.jpg","When tasked to compare security tools, it's critical to understand what's a fair benchmark. We take you step by step through WebGoat's lessons and compare them to SAST and DAST results.",[865],"2020-08-11","how-to-benchmark-security-tools",{"title":1054,"heroImage":1055,"category":957,"description":1056,"authors":1057,"date":1059,"slug":1060,"externalUrl":6},"Using GitLab Pages to Report Local COVID-19 Rates","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681476/Blog/Hero%20Images/thisisengineering-raeng-0jTZTMyGym8-unsplash.jpg","How I used GitLab pages to publish up-to-date local infection rates.",[1058],"Matt Nohr","2020-08-06","gitlab-pages-for-covid",{"title":1062,"heroImage":1063,"category":706,"description":1064,"authors":1065,"date":1067,"slug":1068,"externalUrl":6},"How we created a GitLab Workflow Extension for VS Code","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681469/Blog/Hero%20Images/gitlab-vscode-blog-image2.jpg","Now you can leverage GitLab from within Visual Studio Code with our official GitLab Workflow Extension.",[1066],"Roman Kuba","2020-07-31","use-gitlab-with-vscode",{"title":1070,"heroImage":973,"category":957,"description":1071,"authors":1072,"date":1074,"slug":1075,"externalUrl":6},"Successful approaches for team collaboration between Design, Product, Engineering, and Quality","Collaboration can be hard, but we've found a few tips and tricks that help us succeed here at GitLab.",[1073],"Jason Yavorska","2020-06-03","collaboration-in-product-planning",{"title":1077,"heroImage":1078,"category":706,"description":1079,"authors":1080,"date":1082,"slug":1083,"externalUrl":6},"How our QA team leverages GitLab’s performance testing tool (and you can too)","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681087/Blog/Hero%20Images/performance-server-front.jpg","We built our open source GitLab Performance tool to evaluate pain points and implement solutions on every GitLab environment.",[1081],"Grant Young","2020-02-18","how-were-building-up-performance-testing-of-gitlab",{"title":1085,"heroImage":1086,"category":1087,"description":1088,"authors":1089,"date":1091,"slug":1092,"externalUrl":6},"KubeCon NA: Are you about to break Prod?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666262/Blog/Hero%20Images/default-blog-image.png","open-source","Use Pulumi and GitLab to build a pipeline that validates your application, infrastructure, and deployment process.",[1090],"Erin Krengel, Pulumi","2020-01-27","kubecon-na-2019-are-you-about-to-break-prod",{"title":1094,"heroImage":1095,"category":706,"description":1096,"authors":1097,"date":1099,"slug":1100,"externalUrl":6},"What tracking down missing TCP Keepalives taught me about Docker, Golang, and GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680874/Blog/Hero%20Images/network.jpg","An in-depth recap of debugging a bug in the Docker client library.",[1098],"Stan Hu","2019-11-15","tracking-down-missing-tcp-keepalives",{"title":1102,"heroImage":1103,"category":894,"description":1104,"authors":1105,"date":1106,"slug":1107,"externalUrl":6},"Auto DevOps 101: How we’re making CI/CD easier","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666915/Blog/Hero%20Images/autodevops.jpg","VP of product strategy Mark Pundsack shares everything you need to know about Auto DevOps.",[881],"2019-10-07","auto-devops-explained",{"title":1109,"heroImage":1110,"category":894,"description":1111,"authors":1112,"date":1114,"slug":1115,"externalUrl":6},"4 Ways developers can write secure code with GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666895/Blog/Hero%20Images/developers-write-secure.jpg","GitLab Secure is not just for your security team – it’s for developers too. Learn four ways to write secure code with GitLab.",[1113],"Vanessa Wegner","2019-09-03","developers-write-secure-code-gitlab",{"title":1117,"heroImage":1118,"category":894,"description":1119,"authors":1120,"date":1121,"slug":1122,"externalUrl":6},"An inside look at software testing at GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680800/Blog/Hero%20Images/softwaretestlaunch.jpg","Director of quality engineering Mek Stittri talks test technology and the future of automation at GitLab.",[881],"2019-08-30","software-test-at-gitlab",{"title":1124,"heroImage":1125,"category":894,"description":1126,"authors":1127,"date":1128,"slug":1129,"externalUrl":6},"Why building compliance as code in DevOps will benefit your entire company","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680734/Blog/Hero%20Images/compliance-as-code-header.jpg","Read here on how to integrate compliance as code into your DevOps cycle and why it's important to have in your business",[1113],"2019-08-19","get-started-compliance-as-code",{"title":1131,"heroImage":1132,"category":894,"description":1133,"authors":1134,"date":1135,"slug":1136,"externalUrl":6},"Why you need static and dynamic application security testing in your development workflows","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680714/Blog/Hero%20Images/intro-developer-sast-dast.jpg","Bolster your code quality with static and dynamic application security testing. Learn why you need SAST and DAST for your projects.",[1113],"2019-08-12","developer-intro-sast-dast",{"title":1138,"heroImage":1139,"category":706,"description":1140,"authors":1141,"date":1143,"slug":1144,"externalUrl":6},"How to trigger multiple pipelines using GitLab CI/CD","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666903/Blog/Hero%20Images/pipeline.jpg","Discover how to trigger and visualize pipelines when you set up GitLab CI/CD across multiple projects.",[1142],"Itzik Gan Baruch","2019-07-24","cross-project-pipeline",{"title":1146,"heroImage":1147,"category":291,"description":1148,"authors":1149,"date":1151,"slug":1152,"externalUrl":6},"GitLab is named a Challenger in The Forrester Wave™: Software Composition Analysis, Q2 2019","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669950/Blog/Hero%20Images/security-cameras.jpg","GitLab has been recognized by analysts as a challenger in Software Composition Analysis.",[1150],"Cindy Blake","2019-04-12","gitlab-is-an-sca-contender",{"title":1154,"heroImage":1155,"category":291,"description":1156,"authors":1157,"date":1159,"slug":1160,"externalUrl":6},"What to check out at Google Cloud Next 2019","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679235/Blog/Hero%20Images/cloud-native-predictions-2019.jpg","Support women who code by stopping by our booth, learn from a host of GitLab experts, and more.",[1158],"Mayank Tahilramani","2019-04-04","google-next-post",{"title":1162,"heroImage":1163,"category":716,"description":1164,"authors":1165,"date":1167,"slug":1168,"externalUrl":6},"A deep dive into the Security Analyst persona","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663736/Blog/Hero%20Images/a-deep-dive-into-the-security-analyst-persona.jpg","See how we created our new Security Analyst persona, and how we are already putting it to use.",[1166],"Andy Volpe","2019-02-12","a-deep-dive-into-the-security-analyst-persona",{"title":1170,"heroImage":1171,"category":1087,"description":1172,"authors":1173,"date":1175,"slug":1176,"externalUrl":6},"Streamline and shorten error remediation with Sentry’s new GitLab integration","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679964/Blog/Hero%20Images/sentry-io-blog.jpg","Your code has bugs, my code has bugs, everyone’s code has bugs (probably). Let’s fix that.",[1174],"Eva Sasson","2019-01-25","sentry-integration-blog-post",{"title":1178,"heroImage":1179,"category":706,"description":1180,"authors":1181,"date":1183,"slug":1184,"externalUrl":6},"What are the best and worst parts about being a development team lead?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668224/Blog/Hero%20Images/inside-our-new-development-team-lead-persona.jpg","Dev leads, we feel you. Here's a deep dive into our interviews with development team leads, and the new persona they informed.",[1182],"Katherine Okpara","2019-01-18","inside-our-new-development-team-lead-persona",{"title":1186,"heroImage":1187,"category":1087,"description":1188,"authors":1189,"date":1191,"slug":1192,"externalUrl":6},"How Wag! cut their release process from 40 minutes to just 6","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678923/Blog/Hero%20Images/dog-walking.jpg","The popular dog-walking app is rolling out new features faster and with more confidence as they adopt GitLab for more of their DevOps workflows.",[1190],"Aricka Flowers","2019-01-16","wag-labs-blog-post",{"title":1194,"heroImage":1195,"category":706,"description":1196,"authors":1197,"date":1198,"slug":1199,"externalUrl":6},"It's raining repos: The microservices repo explosion, and what we're doing about it","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662898/Blog/Hero%20Images/microservices-explosion.jpg","Microservices have spawned an explosion of dependent projects with multiple repos, creating the need for an integrated solution – we're working on it right now.",[1190],"2018-11-26","microservices-integrated-solution",{"title":1201,"heroImage":1202,"category":291,"description":1203,"authors":1204,"date":1206,"slug":1207,"externalUrl":6},"How we maintain product velocity with a monthly release cycle","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678822/Blog/Hero%20Images/monthlyrelease.jpg","This workplace has gone 85 months without missing a release.",[1205],"Suri Patel","2018-11-21","why-gitlab-uses-a-monthly-release-cycle",{"title":1209,"heroImage":1210,"category":894,"description":1211,"authors":1212,"date":1213,"slug":1214,"externalUrl":6},"What do product managers need to do their best work?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678857/Blog/Hero%20Images/investigating-how-product-managers-use-gitlab.jpg","Check out some of the findings that led to our new Product Manager Persona.",[1182],"2018-11-12","inside-our-new-product-manager-persona",{"title":1216,"heroImage":1217,"category":706,"description":1218,"authors":1219,"date":1220,"slug":1221,"externalUrl":6},"How we use personas to build empathy for different types of users","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678789/Blog/Hero%20Images/how-we-use-personas-to-gain-empathy.jpg","Welcome to our series on the new GitLab personas!",[1182],"2018-10-12","personas-and-empathy-building",{"title":1223,"heroImage":1224,"category":706,"description":1225,"authors":1226,"date":1227,"slug":1228,"externalUrl":6},"GitLab Auto DevOps in action","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664015/Blog/Hero%20Images/laptop.jpg","See how the only single application for the entire DevOps lifecycle helps you deliver better software, faster.",[1190],"2018-08-10","gitlab-auto-devops-in-action",{"title":1230,"heroImage":878,"category":894,"description":1231,"authors":1232,"date":1234,"slug":1235,"externalUrl":6},"Trust, but verify: The importance of software test automation","Guest author Steve Ropa explains what a Cold War era motto has to do with test automation (seriously) and bringing development and operations closer together.",[1233],"Steve Ropa","2018-04-23","test-automation-devops",{"title":1237,"heroImage":1238,"category":706,"description":1239,"authors":1240,"date":1242,"slug":1243,"externalUrl":6},"How GitLab switched to Headless Chrome for testing","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680270/Blog/Hero%20Images/headless-chrome-cover.jpg","A detailed explanation with examples of how GitLab made the switch to headless Chrome.",[1241],"Mike Greiling","2017-12-19","moving-to-headless-chrome",{"title":1245,"heroImage":1246,"category":894,"description":1247,"authors":1248,"date":1250,"slug":1251,"externalUrl":6},"Automate to accelerate: What you need to know about test and release automation","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671288/Blog/Hero%20Images/gitlab-live-event.png","If you’re not using automated testing, your competitors almost certainly are – catch up on our recent webcast to get started.",[1249],"Rebecca Dodd","2017-12-08","automate-to-accelerate-webcast-recap",1786803773756]