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