[{"data":1,"prerenderedAt":1371},["ShallowReactive",2],{"/en-us/blog/tags/testing":3,"navigation-en-us":18,"banner-en-us":429,"footer-en-us":439,"testing-tag-posts-en-us":681},{"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",{"data":19},{"logo":20,"freeTrial":25,"sales":30,"login":35,"items":40,"search":349,"minimal":380,"duo":399,"switchNav":408,"pricingDeployment":419},{"config":21},{"href":22,"dataGaName":23,"dataGaLocation":24},"/","gitlab logo","header",{"text":26,"config":27},"Get free trial",{"href":28,"dataGaName":29,"dataGaLocation":24},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":31,"config":32},"Talk to sales",{"href":33,"dataGaName":34,"dataGaLocation":24},"/sales/","sales",{"text":36,"config":37},"Sign in",{"href":38,"dataGaName":39,"dataGaLocation":24},"https://gitlab.com/users/sign_in/","sign in",[41,68,163,168,270,330],{"text":42,"config":43,"cards":45},"Platform",{"dataNavLevelOne":44},"platform",[46,52,60],{"title":42,"description":47,"link":48},"The intelligent orchestration platform for DevSecOps",{"text":49,"config":50},"Explore our Platform",{"href":51,"dataGaName":44,"dataGaLocation":24},"/platform/",{"title":53,"description":54,"link":55},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":56,"config":57},"Meet GitLab Duo",{"href":58,"dataGaName":59,"dataGaLocation":24},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":61,"description":62,"link":63},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":64,"config":65},"Learn more",{"href":66,"dataGaName":67,"dataGaLocation":24},"/why-gitlab/","why gitlab",{"text":69,"left":13,"config":70,"link":72,"lists":76,"footer":145},"Product",{"dataNavLevelOne":71},"solutions",{"text":73,"config":74},"View all Solutions",{"href":75,"dataGaName":71,"dataGaLocation":24},"/solutions/",[77,101,124],{"title":78,"description":79,"link":80,"items":85},"Automation","CI/CD and automation to accelerate deployment",{"config":81},{"icon":82,"href":83,"dataGaName":84,"dataGaLocation":24},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[86,90,93,97],{"text":87,"config":88},"CI/CD",{"href":89,"dataGaLocation":24,"dataGaName":87},"/solutions/continuous-integration/",{"text":53,"config":91},{"href":58,"dataGaLocation":24,"dataGaName":92},"gitlab duo agent platform - product menu",{"text":94,"config":95},"Source Code Management",{"href":96,"dataGaLocation":24,"dataGaName":94},"/solutions/source-code-management/",{"text":98,"config":99},"Automated Software Delivery",{"href":83,"dataGaLocation":24,"dataGaName":100},"Automated software delivery",{"title":102,"description":103,"link":104,"items":109},"Security","Deliver code faster without compromising security",{"config":105},{"href":106,"dataGaName":107,"dataGaLocation":24,"icon":108},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[110,114,119],{"text":111,"config":112},"Application Security Testing",{"href":106,"dataGaName":113,"dataGaLocation":24},"Application security testing",{"text":115,"config":116},"Software Supply Chain Security",{"href":117,"dataGaLocation":24,"dataGaName":118},"/solutions/supply-chain/","Software supply chain security",{"text":120,"config":121},"Software Compliance",{"href":122,"dataGaName":123,"dataGaLocation":24},"/solutions/software-compliance/","software compliance",{"title":125,"link":126,"items":131},"Measurement",{"config":127},{"icon":128,"href":129,"dataGaName":130,"dataGaLocation":24},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[132,136,140],{"text":133,"config":134},"Visibility & Measurement",{"href":129,"dataGaLocation":24,"dataGaName":135},"Visibility and Measurement",{"text":137,"config":138},"Value Stream Management",{"href":139,"dataGaLocation":24,"dataGaName":137},"/solutions/value-stream-management/",{"text":141,"config":142},"Analytics & Insights",{"href":143,"dataGaLocation":24,"dataGaName":144},"/solutions/analytics-and-insights/","Analytics and insights",{"title":146,"items":147},"GitLab for",[148,153,158],{"text":149,"config":150},"Enterprise",{"href":151,"dataGaLocation":24,"dataGaName":152},"/enterprise/","enterprise",{"text":154,"config":155},"Small Business",{"href":156,"dataGaLocation":24,"dataGaName":157},"/small-business/","small business",{"text":159,"config":160},"Public Sector",{"href":161,"dataGaLocation":24,"dataGaName":162},"/solutions/public-sector/","public sector",{"text":164,"config":165},"Pricing",{"href":166,"dataGaName":167,"dataGaLocation":24,"dataNavLevelOne":167},"/pricing/","pricing",{"text":169,"config":170,"link":172,"lists":176,"feature":261},"Resources",{"dataNavLevelOne":171},"resources",{"text":173,"config":174},"View all resources",{"href":175,"dataGaName":171,"dataGaLocation":24},"/resources/",[177,210,233],{"title":178,"items":179},"Getting started",[180,185,190,195,200,205],{"text":181,"config":182},"Install",{"href":183,"dataGaName":184,"dataGaLocation":24},"/install/","install",{"text":186,"config":187},"Quick start guides",{"href":188,"dataGaName":189,"dataGaLocation":24},"/get-started/","quick setup checklists",{"text":191,"config":192},"Learn",{"href":193,"dataGaLocation":24,"dataGaName":194},"https://university.gitlab.com/","learn",{"text":196,"config":197},"Product documentation",{"href":198,"dataGaName":199,"dataGaLocation":24},"https://docs.gitlab.com/","product documentation",{"text":201,"config":202},"Best practice videos",{"href":203,"dataGaName":204,"dataGaLocation":24},"/getting-started-videos/","best practice videos",{"text":206,"config":207},"Integrations",{"href":208,"dataGaName":209,"dataGaLocation":24},"/integrations/","integrations",{"title":211,"items":212},"Discover",[213,218,223,228],{"text":214,"config":215},"Customer success stories",{"href":216,"dataGaName":217,"dataGaLocation":24},"/customers/","customer success stories",{"text":219,"config":220},"Blog",{"href":221,"dataGaName":222,"dataGaLocation":24},"/blog/","blog",{"text":224,"config":225},"The Source",{"href":226,"dataGaName":227,"dataGaLocation":24},"/the-source/","the source",{"text":229,"config":230},"Remote",{"href":231,"dataGaName":232,"dataGaLocation":24},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":234,"items":235},"Connect",[236,241,246,251,256],{"text":237,"config":238},"GitLab Services",{"href":239,"dataGaName":240,"dataGaLocation":24},"/services/","services",{"text":242,"config":243},"Community",{"href":244,"dataGaName":245,"dataGaLocation":24},"/community/","community",{"text":247,"config":248},"Forum",{"href":249,"dataGaName":250,"dataGaLocation":24},"https://forum.gitlab.com/","forum",{"text":252,"config":253},"Events",{"href":254,"dataGaName":255,"dataGaLocation":24},"/events/","events",{"text":257,"config":258},"Partners",{"href":259,"dataGaName":260,"dataGaLocation":24},"/partners/","partners",{"textColor":262,"title":263,"text":264,"link":265},"#000","What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":266,"config":267},"Read the latest",{"href":268,"dataGaName":269,"dataGaLocation":24},"/releases/whats-new/","whats new",{"text":271,"config":272,"lists":274},"Company",{"dataNavLevelOne":273},"company",[275],{"items":276},[277,282,288,290,295,300,305,310,315,320,325],{"text":278,"config":279},"About",{"href":280,"dataGaName":281,"dataGaLocation":24},"/company/","about",{"text":283,"config":284,"footerGa":287},"Jobs",{"href":285,"dataGaName":286,"dataGaLocation":24},"/jobs/","jobs",{"dataGaName":286},{"text":252,"config":289},{"href":254,"dataGaName":255,"dataGaLocation":24},{"text":291,"config":292},"Leadership",{"href":293,"dataGaName":294,"dataGaLocation":24},"/company/team/e-group/","leadership",{"text":296,"config":297},"Team",{"href":298,"dataGaName":299,"dataGaLocation":24},"/company/team/","team",{"text":301,"config":302},"Handbook",{"href":303,"dataGaName":304,"dataGaLocation":24},"https://handbook.gitlab.com/","handbook",{"text":306,"config":307},"Investor relations",{"href":308,"dataGaName":309,"dataGaLocation":24},"https://ir.gitlab.com/","investor relations",{"text":311,"config":312},"Trust Center",{"href":313,"dataGaName":314,"dataGaLocation":24},"/security/","trust center",{"text":316,"config":317},"AI Transparency Center",{"href":318,"dataGaName":319,"dataGaLocation":24},"/ai-transparency-center/","ai transparency center",{"text":321,"config":322},"Newsletter",{"href":323,"dataGaName":324,"dataGaLocation":24},"/company/contact/#contact-forms","newsletter",{"text":326,"config":327},"Press",{"href":328,"dataGaName":329,"dataGaLocation":24},"/press/","press",{"text":331,"config":332,"lists":333},"Contact us",{"dataNavLevelOne":273},[334],{"items":335},[336,339,344],{"text":31,"config":337},{"href":33,"dataGaName":338,"dataGaLocation":24},"talk to sales",{"text":340,"config":341},"Support portal",{"href":342,"dataGaName":343,"dataGaLocation":24},"https://support.gitlab.com","support portal",{"text":345,"config":346},"Customer portal",{"href":347,"dataGaName":348,"dataGaLocation":24},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":350,"login":351,"suggestions":358},"Close",{"text":352,"link":353},"To search repositories and projects, login to",{"text":354,"config":355},"gitlab.com",{"href":38,"dataGaName":356,"dataGaLocation":357},"search login","search",{"text":359,"default":360},"Suggestions",[361,363,367,369,373,377],{"text":53,"config":362},{"href":58,"dataGaName":53,"dataGaLocation":357},{"text":364,"config":365},"Code Suggestions (AI)",{"href":366,"dataGaName":364,"dataGaLocation":357},"/solutions/code-suggestions/",{"text":87,"config":368},{"href":89,"dataGaName":87,"dataGaLocation":357},{"text":370,"config":371},"GitLab on AWS",{"href":372,"dataGaName":370,"dataGaLocation":357},"/partners/technology-partners/aws/",{"text":374,"config":375},"GitLab on Google Cloud",{"href":376,"dataGaName":374,"dataGaLocation":357},"/partners/technology-partners/google-cloud-platform/",{"text":378,"config":379},"Why GitLab?",{"href":66,"dataGaName":378,"dataGaLocation":357},{"freeTrial":381,"mobileIcon":386,"desktopIcon":391,"secondaryButton":394},{"text":382,"config":383},"Start free trial",{"href":384,"dataGaName":29,"dataGaLocation":385},"https://gitlab.com/-/trials/new/","nav",{"altText":387,"config":388},"Gitlab Icon",{"src":389,"dataGaName":390,"dataGaLocation":385},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":387,"config":392},{"src":393,"dataGaName":390,"dataGaLocation":385},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":395,"config":396},"Get Started",{"href":397,"dataGaName":398,"dataGaLocation":385},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":400,"mobileIcon":404,"desktopIcon":406},{"text":401,"config":402},"Learn more about GitLab Duo",{"href":58,"dataGaName":403,"dataGaLocation":385},"gitlab duo",{"altText":387,"config":405},{"src":389,"dataGaName":390,"dataGaLocation":385},{"altText":387,"config":407},{"src":393,"dataGaName":390,"dataGaLocation":385},{"button":409,"mobileIcon":414,"desktopIcon":416},{"text":410,"config":411},"/switch",{"href":412,"dataGaName":413,"dataGaLocation":385},"#contact","switch",{"altText":387,"config":415},{"src":389,"dataGaName":390,"dataGaLocation":385},{"altText":387,"config":417},{"src":418,"dataGaName":390,"dataGaLocation":385},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":420,"mobileIcon":425,"desktopIcon":427},{"text":421,"config":422},"Back to pricing",{"href":166,"dataGaName":423,"dataGaLocation":385,"icon":424},"back to pricing","GoBack",{"altText":387,"config":426},{"src":389,"dataGaName":390,"dataGaLocation":385},{"altText":387,"config":428},{"src":393,"dataGaName":390,"dataGaLocation":385},{"title":430,"button":431,"config":436},"See how agentic AI transforms software delivery",{"text":432,"config":433},"Watch GitLab Transcend now",{"href":434,"dataGaName":435,"dataGaLocation":24},"/events/transcend/virtual/","transcend event",{"layout":437,"icon":438,"disabled":13},"release","AiStar",{"data":440},{"text":441,"source":442,"edit":448,"contribute":453,"config":458,"items":463,"minimal":670},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":443,"config":444},"View page source",{"href":445,"dataGaName":446,"dataGaLocation":447},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":449,"config":450},"Edit this page",{"href":451,"dataGaName":452,"dataGaLocation":447},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":454,"config":455},"Please contribute",{"href":456,"dataGaName":457,"dataGaLocation":447},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":459,"facebook":460,"youtube":461,"linkedin":462},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[464,511,565,609,636],{"title":164,"links":465,"subMenu":480},[466,470,475],{"text":467,"config":468},"View plans",{"href":166,"dataGaName":469,"dataGaLocation":447},"view plans",{"text":471,"config":472},"Why Premium?",{"href":473,"dataGaName":474,"dataGaLocation":447},"/pricing/premium/","why premium",{"text":476,"config":477},"Why Ultimate?",{"href":478,"dataGaName":479,"dataGaLocation":447},"/pricing/ultimate/","why ultimate",[481],{"title":482,"links":483},"Contact Us",[484,487,489,491,496,501,506],{"text":485,"config":486},"Contact sales",{"href":33,"dataGaName":34,"dataGaLocation":447},{"text":340,"config":488},{"href":342,"dataGaName":343,"dataGaLocation":447},{"text":345,"config":490},{"href":347,"dataGaName":348,"dataGaLocation":447},{"text":492,"config":493},"Status",{"href":494,"dataGaName":495,"dataGaLocation":447},"https://status.gitlab.com/","status",{"text":497,"config":498},"Terms of use",{"href":499,"dataGaName":500,"dataGaLocation":447},"/terms/","terms of use",{"text":502,"config":503},"Privacy statement",{"href":504,"dataGaName":505,"dataGaLocation":447},"/privacy/","privacy statement",{"text":507,"config":508},"Cookie preferences",{"dataGaName":509,"dataGaLocation":447,"id":510,"isOneTrustButton":13},"cookie preferences","ot-sdk-btn",{"title":69,"links":512,"subMenu":521},[513,517],{"text":514,"config":515},"DevSecOps platform",{"href":51,"dataGaName":516,"dataGaLocation":447},"devsecops platform",{"text":518,"config":519},"AI-Assisted Development",{"href":58,"dataGaName":520,"dataGaLocation":447},"ai-assisted development",[522],{"title":523,"links":524},"Topics",[525,530,535,540,545,550,555,560],{"text":526,"config":527},"CICD",{"href":528,"dataGaName":529,"dataGaLocation":447},"/topics/ci-cd/","cicd",{"text":531,"config":532},"GitOps",{"href":533,"dataGaName":534,"dataGaLocation":447},"/topics/gitops/","gitops",{"text":536,"config":537},"DevOps",{"href":538,"dataGaName":539,"dataGaLocation":447},"/topics/devops/","devops",{"text":541,"config":542},"Version Control",{"href":543,"dataGaName":544,"dataGaLocation":447},"/topics/version-control/","version control",{"text":546,"config":547},"DevSecOps",{"href":548,"dataGaName":549,"dataGaLocation":447},"/topics/devsecops/","devsecops",{"text":551,"config":552},"Cloud Native",{"href":553,"dataGaName":554,"dataGaLocation":447},"/topics/cloud-native/","cloud native",{"text":556,"config":557},"AI for Coding",{"href":558,"dataGaName":559,"dataGaLocation":447},"/topics/devops/ai-for-coding/","ai for coding",{"text":561,"config":562},"Agentic AI",{"href":563,"dataGaName":564,"dataGaLocation":447},"/topics/agentic-ai/","agentic ai",{"title":566,"links":567},"Solutions",[568,570,572,577,581,584,588,591,593,596,599,604],{"text":111,"config":569},{"href":106,"dataGaName":111,"dataGaLocation":447},{"text":100,"config":571},{"href":83,"dataGaName":84,"dataGaLocation":447},{"text":573,"config":574},"Agile development",{"href":575,"dataGaName":576,"dataGaLocation":447},"/solutions/agile-delivery/","agile delivery",{"text":578,"config":579},"SCM",{"href":96,"dataGaName":580,"dataGaLocation":447},"source code management",{"text":526,"config":582},{"href":89,"dataGaName":583,"dataGaLocation":447},"continuous integration & delivery",{"text":585,"config":586},"Value stream management",{"href":139,"dataGaName":587,"dataGaLocation":447},"value stream management",{"text":531,"config":589},{"href":590,"dataGaName":534,"dataGaLocation":447},"/solutions/gitops/",{"text":149,"config":592},{"href":151,"dataGaName":152,"dataGaLocation":447},{"text":594,"config":595},"Small business",{"href":156,"dataGaName":157,"dataGaLocation":447},{"text":597,"config":598},"Public sector",{"href":161,"dataGaName":162,"dataGaLocation":447},{"text":600,"config":601},"Education",{"href":602,"dataGaName":603,"dataGaLocation":447},"/solutions/education/","education",{"text":605,"config":606},"Financial services",{"href":607,"dataGaName":608,"dataGaLocation":447},"/solutions/finance/","financial services",{"title":169,"links":610},[611,613,615,617,620,622,624,626,628,630,632,634],{"text":181,"config":612},{"href":183,"dataGaName":184,"dataGaLocation":447},{"text":186,"config":614},{"href":188,"dataGaName":189,"dataGaLocation":447},{"text":191,"config":616},{"href":193,"dataGaName":194,"dataGaLocation":447},{"text":196,"config":618},{"href":198,"dataGaName":619,"dataGaLocation":447},"docs",{"text":219,"config":621},{"href":221,"dataGaName":222,"dataGaLocation":447},{"text":214,"config":623},{"href":216,"dataGaName":217,"dataGaLocation":447},{"text":229,"config":625},{"href":231,"dataGaName":232,"dataGaLocation":447},{"text":237,"config":627},{"href":239,"dataGaName":240,"dataGaLocation":447},{"text":242,"config":629},{"href":244,"dataGaName":245,"dataGaLocation":447},{"text":247,"config":631},{"href":249,"dataGaName":250,"dataGaLocation":447},{"text":252,"config":633},{"href":254,"dataGaName":255,"dataGaLocation":447},{"text":257,"config":635},{"href":259,"dataGaName":260,"dataGaLocation":447},{"title":271,"links":637},[638,640,642,644,646,648,650,654,659,661,663,665],{"text":278,"config":639},{"href":280,"dataGaName":273,"dataGaLocation":447},{"text":283,"config":641},{"href":285,"dataGaName":286,"dataGaLocation":447},{"text":291,"config":643},{"href":293,"dataGaName":294,"dataGaLocation":447},{"text":296,"config":645},{"href":298,"dataGaName":299,"dataGaLocation":447},{"text":301,"config":647},{"href":303,"dataGaName":304,"dataGaLocation":447},{"text":306,"config":649},{"href":308,"dataGaName":309,"dataGaLocation":447},{"text":651,"config":652},"Sustainability",{"href":653,"dataGaName":651,"dataGaLocation":447},"/sustainability/",{"text":655,"config":656},"Diversity, inclusion and belonging (DIB)",{"href":657,"dataGaName":658,"dataGaLocation":447},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":311,"config":660},{"href":313,"dataGaName":314,"dataGaLocation":447},{"text":321,"config":662},{"href":323,"dataGaName":324,"dataGaLocation":447},{"text":326,"config":664},{"href":328,"dataGaName":329,"dataGaLocation":447},{"text":666,"config":667},"Modern Slavery Transparency Statement",{"href":668,"dataGaName":669,"dataGaLocation":447},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":671},[672,675,678],{"text":673,"config":674},"Terms",{"href":499,"dataGaName":500,"dataGaLocation":447},{"text":676,"config":677},"Cookies",{"dataGaName":509,"dataGaLocation":447,"id":510,"isOneTrustButton":13},{"text":679,"config":680},"Privacy",{"href":504,"dataGaName":505,"dataGaLocation":447},[682,694,705,716,726,735,744,754,765,775,784,794,803,814,814,825,835,845,856,866,876,887,897,907,917,927,937,947,957,967,977,986,995,1006,1016,1026,1034,1043,1052,1061,1070,1080,1091,1101,1101,1111,1120,1130,1140,1149,1159,1170,1180,1189,1199,1208,1217,1226,1236,1246,1256,1266,1276,1286,1296,1305,1315,1324,1333,1342,1351,1361],{"content":683,"config":692},{"title":684,"heroImage":685,"category":686,"description":687,"authors":688,"date":691},"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.",[689,690],"Matt DeLaney","Darwin Sanoy","2025-10-02",{"slug":693,"externalUrl":-1},"how-gitlab-transforms-embedded-systems-testing-cycles",{"content":695,"config":703},{"title":696,"heroImage":697,"category":698,"description":699,"authors":700,"date":702},"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.",[701],"Fernando Diaz","2025-09-17",{"slug":704,"externalUrl":-1},"comprehensive-guide-to-gitlab-dast",{"content":706,"config":714},{"title":707,"heroImage":708,"category":709,"description":710,"authors":711,"date":713},"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-ml","Learn how GitLab Duo with Amazon Q improves the QA process by automatically generating comprehensive unit tests.",[712],"Cesar Saavedra","2025-07-03",{"slug":715,"externalUrl":-1},"enhance-application-quality-with-ai-powered-test-generation",{"content":717,"config":724},{"title":718,"heroImage":719,"category":709,"description":720,"authors":721,"date":723},"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.",[722],"Byron Boots","2024-12-17",{"slug":725,"externalUrl":-1},"automating-with-gitlab-duo-part-3-validating-testing",{"content":727,"config":733},{"title":728,"heroImage":729,"category":709,"description":730,"authors":731,"date":732},"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.",[722],"2024-12-10",{"slug":734,"externalUrl":-1},"automating-with-gitlab-duo-part-2-complex-testing",{"content":736,"config":742},{"title":737,"heroImage":738,"category":709,"description":739,"authors":740,"date":741},"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.",[722],"2024-12-02",{"slug":743,"externalUrl":-1},"automating-with-gitlab-duo-part-1-generating-tests",{"content":745,"config":752},{"title":746,"heroImage":747,"category":549,"description":748,"authors":749,"date":751},"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.",[750],"Fatima Sarah Khalid","2024-07-02",{"slug":753,"externalUrl":-1},"develop-c-unit-testing-with-catch2-junit-and-gitlab-ci",{"content":755,"config":763},{"title":756,"heroImage":757,"category":709,"description":758,"authors":759,"date":762},"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.",[760,761],"Mark Lapierre","Vincy Wilson","2024-06-03",{"slug":764,"externalUrl":-1},"inside-look-how-gitlabs-test-platform-team-validates-ai-features",{"content":766,"config":773},{"title":767,"heroImage":768,"category":698,"description":769,"authors":770,"date":772},"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.",[771],"Sara Meadzinger","2024-05-13",{"slug":774,"externalUrl":-1},"detect-application-vulnerabilities-with-gitlabs-browser-based-dast",{"content":776,"config":782},{"title":777,"heroImage":778,"category":698,"description":779,"authors":780,"date":781},"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.",[701],"2024-05-01",{"slug":783,"externalUrl":-1},"migration-guide-github-advanced-security-to-gitlab-ultimate",{"content":785,"config":792},{"title":786,"heroImage":787,"category":698,"description":788,"authors":789,"date":791},"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",{"slug":793,"externalUrl":-1},"integrate-external-security-scanners-into-your-devsecops-workflow",{"content":795,"config":801},{"title":796,"heroImage":797,"category":698,"description":798,"authors":799,"date":800},"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).",[701],"2024-02-27",{"slug":802,"externalUrl":-1},"how-to-integrate-custom-security-scanners-into-gitlab",{"content":804,"config":812},{"title":805,"heroImage":806,"category":807,"description":808,"authors":809,"date":811},"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.",[810],"Josh Feehs","2023-11-28",{"slug":813,"externalUrl":-1},"how-gitlabs-red-team-automates-c2-testing",{"content":815,"config":823},{"title":816,"heroImage":817,"category":698,"description":818,"authors":819,"date":822},"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.",[820,821],"Julie Byrne","Jerez Solis","2023-11-14",{"slug":824,"externalUrl":-1},"tips-to-configure-browser-based-dast-scans",{"content":826,"config":833},{"title":827,"heroImage":828,"category":698,"description":829,"authors":830,"date":832},"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.",[831],"Cameron Swords","2023-10-10",{"slug":834,"externalUrl":-1},"dast-release-first-gitlab-active-check",{"content":836,"config":843},{"title":837,"heroImage":838,"category":686,"description":839,"authors":840,"date":842},"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.",[841],"Madou Coulibaly","2023-09-27",{"slug":844,"externalUrl":-1},"microcks-and-gitlab-part-one",{"content":846,"config":854},{"title":847,"heroImage":848,"category":686,"description":849,"authors":850,"date":853},"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.",[851,852],"Mike Eddington","Eugene Lim","2023-05-09",{"slug":855,"externalUrl":-1},"building-gitlab-with-gitlab-api-fuzzing-workflow",{"content":857,"config":864},{"title":858,"heroImage":859,"category":686,"description":860,"authors":861,"date":863},"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.",[862],"Michael Friedrich","2022-12-14",{"slug":865,"externalUrl":-1},"how-to-continously-test-web-apps-apis-with-hurl-and-gitlab-ci-cd",{"content":867,"config":874},{"title":868,"heroImage":869,"category":686,"description":870,"authors":871,"date":873},"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.",[872],"Jeremy Wagner","2022-11-01",{"slug":875,"externalUrl":-1},"how-to-automate-testing-for-a-react-application-with-gitlab",{"content":877,"config":885},{"title":878,"heroImage":879,"category":880,"description":881,"authors":882,"date":884},"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.",[883],"Isaac Dawson","2022-10-19",{"slug":886,"externalUrl":-1},"browser-based-dast-feature-announcement",{"content":888,"config":895},{"title":889,"heroImage":890,"category":549,"description":891,"authors":892,"date":894},"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.",[893],"GitLab","2022-09-20",{"slug":896,"externalUrl":-1},"get-started-with-microservices-architecture",{"content":898,"config":905},{"title":899,"heroImage":900,"category":549,"description":901,"authors":902,"date":904},"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.",[903],"Valerie Silverthorne","2022-08-18",{"slug":906,"externalUrl":-1},"the-gitlab-guide-to-modern-software-testing",{"content":908,"config":915},{"title":909,"heroImage":910,"category":686,"description":911,"authors":912,"date":914},"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.",[913],"David O'Regan","2022-07-21",{"slug":916,"externalUrl":-1},"quickly-onboarding-engineers-successfully",{"content":918,"config":925},{"title":919,"heroImage":900,"category":920,"description":921,"authors":922,"date":924},"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",[923],"Lauren Minning","2022-07-05",{"slug":926,"externalUrl":-1},"how-to-leverage-modern-software-testing-skills-in-devops",{"content":928,"config":935},{"title":929,"heroImage":930,"category":698,"description":931,"authors":932,"date":934},"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.",[933],"Sandra Gittlen","2022-05-09",{"slug":936,"externalUrl":-1},"one-devops-platform-can-help-you-achieve-devsecops",{"content":938,"config":945},{"title":939,"heroImage":940,"category":549,"description":941,"authors":942,"date":944},"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.",[943],"Lauren Gibbons Paul","2022-04-25",{"slug":946,"externalUrl":-1},"career-spotlight-sre-vs-devops-engineer-vs-devops-platform-engineer",{"content":948,"config":955},{"title":949,"heroImage":950,"category":686,"description":951,"authors":952,"date":954},"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.",[953],"Mek Stittri","2022-04-05",{"slug":956,"externalUrl":-1},"gitlab-top-devops-tooling-metrics-and-targets",{"content":958,"config":965},{"title":959,"heroImage":960,"category":273,"description":961,"authors":962,"date":964},"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.",[963],"William Arias","2022-04-01",{"slug":966,"externalUrl":-1},"engineering-director-shadow",{"content":968,"config":975},{"title":969,"heroImage":970,"category":971,"description":972,"authors":973,"date":974},"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.",[893],"2022-03-24",{"slug":976,"externalUrl":-1},"heres-how-to-get-integrated-secure-coding-advice-in-gitlab",{"content":978,"config":984},{"title":979,"heroImage":980,"category":698,"description":981,"authors":982,"date":983},"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.",[701],"2022-02-02",{"slug":985,"externalUrl":-1},"graphql-vulnerability-api",{"content":987,"config":993},{"title":988,"heroImage":989,"category":549,"description":990,"authors":991,"date":992},"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.",[903],"2021-09-30",{"slug":994,"externalUrl":-1},"want-faster-releases-your-answer-lies-in-automated-software-testing",{"content":996,"config":1004},{"title":997,"heroImage":998,"category":999,"description":1000,"authors":1001,"date":1003},"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",[1002],"Aakriti Gupta","2021-03-17",{"slug":1005,"externalUrl":-1},"collaborating-on-a-cross-stage-feature",{"content":1007,"config":1014},{"title":1008,"heroImage":1009,"category":686,"description":1010,"authors":1011,"date":1013},"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.",[1012],"Zeger-Jan van de Weg","2021-01-21",{"slug":1015,"externalUrl":-1},"high-availability-git-storage-with-praefect",{"content":1017,"config":1024},{"title":1018,"heroImage":1019,"category":999,"description":1020,"authors":1021,"date":1023},"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!",[1022],"Yevgeny Pats","2020-12-10",{"slug":1025,"externalUrl":-1},"why-continuous-fuzzing",{"content":1027,"config":1032},{"title":1028,"heroImage":1019,"category":999,"description":1029,"authors":1030,"date":1031},"How to fuzz Go code with go-fuzz continuously","Learn how (and why!) to fuzz Go code",[1022],"2020-12-03",{"slug":1033,"externalUrl":-1},"how-to-fuzz-go",{"content":1035,"config":1041},{"title":1036,"heroImage":1019,"category":999,"description":1037,"authors":1038,"date":1040},"Scaling down: How we shrank image transfers by 93%","Our approach to delivering an image scaling solution to speed up GitLab site\nrendering",[1039],"Matthias Käppler","2020-11-02",{"slug":1042,"externalUrl":-1},"scaling-down-how-we-prototyped-an-image-scaler-at-gitlab",{"content":1044,"config":1050},{"title":1045,"heroImage":1046,"category":920,"description":1047,"authors":1048,"date":1049},"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.",[903],"2020-10-30",{"slug":1051,"externalUrl":-1},"future-proof-your-developer-career",{"content":1053,"config":1059},{"title":1054,"heroImage":1055,"category":920,"description":1056,"authors":1057,"date":1058},"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.",[903],"2020-10-28",{"slug":1060,"externalUrl":-1},"ai-in-software-development",{"content":1062,"config":1068},{"title":1063,"heroImage":1064,"category":698,"description":1065,"authors":1066,"date":1067},"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.",[701],"2020-10-23",{"slug":1069,"externalUrl":-1},"container-network-security-is-important",{"content":1071,"config":1078},{"title":1072,"heroImage":1073,"category":920,"description":1074,"authors":1075,"date":1077},"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.",[1076],"Phil Hughes","2020-09-08",{"slug":1079,"externalUrl":-1},"efficient-code-review-tips",{"content":1081,"config":1089},{"title":1082,"heroImage":1083,"category":999,"description":1084,"authors":1085,"date":1088},"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.",[1086,1087],"Erick Banks","John McGuire","2020-09-03",{"slug":1090,"externalUrl":-1},"risk-mapping",{"content":1092,"config":1099},{"title":1093,"heroImage":1094,"category":686,"description":1095,"authors":1096,"date":1098},"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.",[1097],"Joni Klippert","2020-08-21",{"slug":1100,"externalUrl":-1},"align-engineering-security-appsec-tests-in-ci",{"content":1102,"config":1109},{"title":1103,"heroImage":1104,"category":999,"description":1105,"authors":1106,"date":1108},"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.",[1107],"Huldra","2020-08-19",{"slug":1110,"externalUrl":-1},"arctic-engine-fuzz-testing-blog",{"content":1112,"config":1118},{"title":1113,"heroImage":1114,"category":698,"description":1115,"authors":1116,"date":1117},"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.",[883],"2020-08-11",{"slug":1119,"externalUrl":-1},"how-to-benchmark-security-tools",{"content":1121,"config":1128},{"title":1122,"heroImage":1123,"category":999,"description":1124,"authors":1125,"date":1127},"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.",[1126],"Matt Nohr","2020-08-06",{"slug":1129,"externalUrl":-1},"gitlab-pages-for-covid",{"content":1131,"config":1138},{"title":1132,"heroImage":1133,"category":686,"description":1134,"authors":1135,"date":1137},"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.",[1136],"Roman Kuba","2020-07-31",{"slug":1139,"externalUrl":-1},"use-gitlab-with-vscode",{"content":1141,"config":1147},{"title":1142,"heroImage":1019,"category":999,"description":1143,"authors":1144,"date":1146},"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.",[1145],"Jason Yavorska","2020-06-03",{"slug":1148,"externalUrl":-1},"collaboration-in-product-planning",{"content":1150,"config":1157},{"title":1151,"heroImage":1152,"category":686,"description":1153,"authors":1154,"date":1156},"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.",[1155],"Grant Young","2020-02-18",{"slug":1158,"externalUrl":-1},"how-were-building-up-performance-testing-of-gitlab",{"content":1160,"config":1168},{"title":1161,"heroImage":1162,"category":1163,"description":1164,"authors":1165,"date":1167},"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.",[1166],"Erin Krengel, Pulumi","2020-01-27",{"slug":1169,"externalUrl":-1},"kubecon-na-2019-are-you-about-to-break-prod",{"content":1171,"config":1178},{"title":1172,"heroImage":1173,"category":686,"description":1174,"authors":1175,"date":1177},"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.",[1176],"Stan Hu","2019-11-15",{"slug":1179,"externalUrl":-1},"tracking-down-missing-tcp-keepalives",{"content":1181,"config":1187},{"title":1182,"heroImage":1183,"category":920,"description":1184,"authors":1185,"date":1186},"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.",[903],"2019-10-07",{"slug":1188,"externalUrl":-1},"auto-devops-explained",{"content":1190,"config":1197},{"title":1191,"heroImage":1192,"category":920,"description":1193,"authors":1194,"date":1196},"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.",[1195],"Vanessa Wegner","2019-09-03",{"slug":1198,"externalUrl":-1},"developers-write-secure-code-gitlab",{"content":1200,"config":1206},{"title":1201,"heroImage":1202,"category":920,"description":1203,"authors":1204,"date":1205},"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.",[903],"2019-08-30",{"slug":1207,"externalUrl":-1},"software-test-at-gitlab",{"content":1209,"config":1215},{"title":1210,"heroImage":1211,"category":920,"description":1212,"authors":1213,"date":1214},"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",[1195],"2019-08-19",{"slug":1216,"externalUrl":-1},"get-started-compliance-as-code",{"content":1218,"config":1224},{"title":1219,"heroImage":1220,"category":920,"description":1221,"authors":1222,"date":1223},"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.",[1195],"2019-08-12",{"slug":1225,"externalUrl":-1},"developer-intro-sast-dast",{"content":1227,"config":1234},{"title":1228,"heroImage":1229,"category":686,"description":1230,"authors":1231,"date":1233},"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.",[1232],"Itzik Gan Baruch","2019-07-24",{"slug":1235,"externalUrl":-1},"cross-project-pipeline",{"content":1237,"config":1244},{"title":1238,"heroImage":1239,"category":273,"description":1240,"authors":1241,"date":1243},"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.",[1242],"Cindy Blake","2019-04-12",{"slug":1245,"externalUrl":-1},"gitlab-is-an-sca-contender",{"content":1247,"config":1254},{"title":1248,"heroImage":1249,"category":273,"description":1250,"authors":1251,"date":1253},"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.",[1252],"Mayank Tahilramani","2019-04-04",{"slug":1255,"externalUrl":-1},"google-next-post",{"content":1257,"config":1264},{"title":1258,"heroImage":1259,"category":698,"description":1260,"authors":1261,"date":1263},"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.",[1262],"Andy Volpe","2019-02-12",{"slug":1265,"externalUrl":-1},"a-deep-dive-into-the-security-analyst-persona",{"content":1267,"config":1274},{"title":1268,"heroImage":1269,"category":1163,"description":1270,"authors":1271,"date":1273},"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.",[1272],"Eva Sasson","2019-01-25",{"slug":1275,"externalUrl":-1},"sentry-integration-blog-post",{"content":1277,"config":1284},{"title":1278,"heroImage":1279,"category":686,"description":1280,"authors":1281,"date":1283},"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.",[1282],"Katherine Okpara","2019-01-18",{"slug":1285,"externalUrl":-1},"inside-our-new-development-team-lead-persona",{"content":1287,"config":1294},{"title":1288,"heroImage":1289,"category":1163,"description":1290,"authors":1291,"date":1293},"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.",[1292],"Aricka Flowers","2019-01-16",{"slug":1295,"externalUrl":-1},"wag-labs-blog-post",{"content":1297,"config":1303},{"title":1298,"heroImage":1299,"category":686,"description":1300,"authors":1301,"date":1302},"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.",[1292],"2018-11-26",{"slug":1304,"externalUrl":-1},"microservices-integrated-solution",{"content":1306,"config":1313},{"title":1307,"heroImage":1308,"category":273,"description":1309,"authors":1310,"date":1312},"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.",[1311],"Suri Patel","2018-11-21",{"slug":1314,"externalUrl":-1},"why-gitlab-uses-a-monthly-release-cycle",{"content":1316,"config":1322},{"title":1317,"heroImage":1318,"category":920,"description":1319,"authors":1320,"date":1321},"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.",[1282],"2018-11-12",{"slug":1323,"externalUrl":-1},"inside-our-new-product-manager-persona",{"content":1325,"config":1331},{"title":1326,"heroImage":1327,"category":686,"description":1328,"authors":1329,"date":1330},"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!",[1282],"2018-10-12",{"slug":1332,"externalUrl":-1},"personas-and-empathy-building",{"content":1334,"config":1340},{"title":1335,"heroImage":1336,"category":686,"description":1337,"authors":1338,"date":1339},"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.",[1292],"2018-08-10",{"slug":1341,"externalUrl":-1},"gitlab-auto-devops-in-action",{"content":1343,"config":1349},{"title":1344,"heroImage":900,"category":920,"description":1345,"authors":1346,"date":1348},"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.",[1347],"Steve Ropa","2018-04-23",{"slug":1350,"externalUrl":-1},"test-automation-devops",{"content":1352,"config":1359},{"title":1353,"heroImage":1354,"category":686,"description":1355,"authors":1356,"date":1358},"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.",[1357],"Mike Greiling","2017-12-19",{"slug":1360,"externalUrl":-1},"moving-to-headless-chrome",{"content":1362,"config":1369},{"title":1363,"heroImage":1364,"category":920,"description":1365,"authors":1366,"date":1368},"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.",[1367],"Rebecca Dodd","2017-12-08",{"slug":1370,"externalUrl":-1},"automate-to-accelerate-webcast-recap",1777493640745]