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