{"id":27702,"date":"2024-05-29T14:41:51","date_gmt":"2024-05-29T12:41:51","guid":{"rendered":"https:\/\/www.solvinity.com\/?post_type=blog&#038;p=27702"},"modified":"2025-06-19T13:30:02","modified_gmt":"2025-06-19T11:30:02","slug":"software-ontwikkelen-voor-infrastructuur","status":"publish","type":"blog","link":"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/","title":{"rendered":"Software ontwikkelen voor infrastructuur"},"content":{"rendered":"<p class=\"attachment\"><a href='https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual.png'><img fetchpriority=\"high\" decoding=\"async\" width=\"300\" height=\"200\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual-300x200.png\" class=\"attachment-medium size-medium\" alt=\"De stille dreiging van schijnveiligheid\" srcset=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual-300x200.png 300w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual-1024x683.png 1024w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual-768x512.png 768w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual.png 1200w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"27702\" class=\"elementor elementor-27702\" data-elementor-post-type=\"blog\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-37d6b623 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"37d6b623\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8d19d7\" data-id=\"8d19d7\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4f7a5e17 elementor-widget elementor-widget-breadcrumbs\" data-id=\"4f7a5e17\" data-element_type=\"widget\" data-widget_type=\"breadcrumbs.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p id=\"breadcrumbs\"><span><span><a href=\"https:\/\/www.solvinity.com\/nl\/\"><i class=\"fas fa-home\"><\/i> <span class=\"home-text\">Home<\/span><\/a><\/span><\/span><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-546ed68a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"546ed68a\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-11c63eb4\" data-id=\"11c63eb4\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-11871564 elementor-widget elementor-widget-spacer\" data-id=\"11871564\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1cc2f5f7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1cc2f5f7\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-23d2a6d\" data-id=\"23d2a6d\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6f8707cf elementor-widget elementor-widget-shortcode\" data-id=\"6f8707cf\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">            <div class=\"werknemers\">                                                     <img decoding=\"async\" width=\"400\" height=\"400\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2022\/10\/vincent_van_beek_solvinity.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" srcset=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2022\/10\/vincent_van_beek_solvinity.jpg 400w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2022\/10\/vincent_van_beek_solvinity-300x300.jpg 300w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2022\/10\/vincent_van_beek_solvinity-150x150.jpg 150w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/>                            <div class=\"werknemer_info\">\n                                <span class=\"naam_werknemer\">Vincent van Beek<\/span>\n                                <span class=\"fucntie_werknemer\">Hoofd Software Engineering en Distinguished Engineer<\/span>\n                            <\/div>\n                                                        <\/div>\n            <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-474357ae elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"474357ae\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2497967f\" data-id=\"2497967f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-317cb552 blog-date elementor-widget__width-auto elementor-widget elementor-widget-text-editor\" data-id=\"317cb552\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t29 mei 2024\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4628340a elementor-widget__width-auto elementor-widget elementor-widget-heading\" data-id=\"4628340a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/www.solvinity.com\/nl\/category\/blog-nl\/\" rel=\"tag\">Blogs<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7a364c30 elementor-widget elementor-widget-heading\" data-id=\"7a364c30\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Software ontwikkelen voor infrastructuur<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-588e0dcf elementor-widget elementor-widget-text-editor\" data-id=\"588e0dcf\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>Het idee over hoe je software ontwikkelt, is in de loop der tijd erg veranderd. Voorheen ging dit volgens de watervalmethodiek, waarbij trapsgewijs van de ene fase naar de andere fase werd gegaan. Daarbij startte ontwikkelaars vanuit een heel uitgebreid ontwerp waarbij pas aan het einde werd gestart met testen. Op een gegeven moment ontdekte men echter dat deze manier van software ontwikkelen nooit leidde tot iets wat een eindklant echt wilde hebben. Bovendien duurden die processen eindeloos lang.<\/strong><\/p><p>Hieruit is de agile beweging ontstaan. Door te proberen de scope zo klein mogelijk te houden en te bedenken wat een eindklant echt wil, kan eerst een klein gedeelte gebouwd worden en daarop worden voortgebouwd. Zo ontwikkelen we tegenwoordig vanuit een eerste bouwsteen steeds complexere software. Daarbij zijn twee technieken essentieel om goed werkende software te maken. Test Driven Development (TDD) &#8211; waarbij de ontwikkelaars starten met het ontwikkelen van kleine units software &#8211; en de Behaviour Driven Development (BDD)-aanpak. Bij Behaviour Driven Development start het bij het vastleggen van de requirements in een voor stakeholders leesbare taal.<\/p><p>En dat is best een grote uitdaging. Als je software ontwikkelt, schrijf je dat namelijk op als logica. Alles wordt een expliciete keuze. Waar iets op het scherm moet komen te staan of waar en welke waardes in een veld ingevuld mogen worden. Door dit van tevoren duidelijk vast te stellen maakt de BDD-aanpak een betere samenwerking en communicatie mogelijk tussen alle belanghebbenden van een project.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-691bdffe elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"691bdffe\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5a131fec\" data-id=\"5a131fec\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7b8eff78 elementor-widget elementor-widget-testimonial\" data-id=\"7b8eff78\" data-element_type=\"widget\" data-widget_type=\"testimonial.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-testimonial-wrapper\">\n\t\t\t\t\t\t\t<div class=\"elementor-testimonial-content\">\u201cHet zorgt voor meer automatisering, waarbij kwaliteitsborging zoveel mogelijk naar voren wordt gehaald\u201d<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-testimonial-meta elementor-has-image elementor-testimonial-image-position-aside\">\n\t\t\t\t<div class=\"elementor-testimonial-meta-inner\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-image\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1200\" height=\"800\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1.png\" class=\"attachment-full size-full wp-image-12816\" alt=\"\" srcset=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1.png 1200w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1-300x200.png 300w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1-1024x683.png 1024w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1-768x512.png 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5bbccad9 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5bbccad9\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1e60f75f\" data-id=\"1e60f75f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6842b3a2 elementor-widget elementor-widget-heading\" data-id=\"6842b3a2\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Shift-Left<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-72f207d8 elementor-widget elementor-widget-text-editor\" data-id=\"72f207d8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>De BDD-aanpak heeft ook veel impact gehad op hoe het testproces eruitziet. De ontwikkelcycli zijn korter waardoor nieuwe handvatten nodig waren om de kwaliteit te borgen. En testen is essentieel om ervoor te zorgen dat de software klopt. Want hoewel wij meer complexe software ontwikkelen voor complexe problemen, zoals het automatiseren van processen in de IT-infrastructuur, hebben mensen hetzelfde verwachtingspatroon als bij reguliere applicaties: dat het gewoon altijd werkt. Maar dat is in een complexe omgeving vaak wel wat ingewikkelder. Het blijft gewoon mensenwerk.<\/p><p><span class=\"EOP SCXW24498147 BCX8\" data-ccp-props=\"{}\"><span class=\"TextRun SCXW33115293 BCX8\" lang=\"NL-NL\" xml:lang=\"NL-NL\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW33115293 BCX8\">De <\/span><span class=\"NormalTextRun SCXW33115293 BCX8\">BDD<\/span><span class=\"NormalTextRun SCXW33115293 BCX8\">-aanpak<\/span><span class=\"NormalTextRun SCXW33115293 BCX8\"> maakt het mogelijk om het testproces effectief naar links te schuiven, shift-<\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW33115293 BCX8\">left<\/span><span class=\"NormalTextRun SCXW33115293 BCX8\"> testen. <\/span><span class=\"NormalTextRun SCXW33115293 BCX8\">Bij deze<\/span><span class=\"NormalTextRun SCXW33115293 BCX8\"> benadering <\/span><span class=\"NormalTextRun SCXW33115293 BCX8\">begint <\/span><span class=\"NormalTextRun SCXW33115293 BCX8\">testen eerder in de levenscyclus van productontwikkeling. Het zorgt voor meer automatisering, waarbij <\/span><span class=\"NormalTextRun SCXW33115293 BCX8\">kwaliteitsborging<\/span><span class=\"NormalTextRun SCXW33115293 BCX8\"> zoveel mogelijk naar voren wordt gehaald. <\/span><span class=\"NormalTextRun SCXW33115293 BCX8\">Hierdoor<\/span><span class=\"NormalTextRun SCXW33115293 BCX8\"> worden defecten in een <\/span><span class=\"NormalTextRun SCXW33115293 BCX8\">vroeger <\/span><span class=\"NormalTextRun SCXW33115293 BCX8\">stadium ontdekt<\/span><span class=\"NormalTextRun SCXW33115293 BCX8\"> en<\/span><span class=\"NormalTextRun SCXW33115293 BCX8\"> verholpen door parallel met het ontwikkelingsteam te werken.<\/span> <span class=\"NormalTextRun SCXW33115293 BCX8\">Het voorkomt bovendien dataverlies en haalt ook de security en compliance naar voren. <\/span><span class=\"NormalTextRun SCXW33115293 BCX8\">En dat is goed nieuws want <\/span><span class=\"NormalTextRun SCXW33115293 BCX8\">hoe later in het proces er re<\/span><span class=\"NormalTextRun SCXW33115293 BCX8\">&#8211;<\/span><span class=\"NormalTextRun SCXW33115293 BCX8\">work nodig is of er incidenten zijn, hoe duurder een traject wordt.\u00a0<\/span><\/span><span class=\"EOP SCXW33115293 BCX8\" data-ccp-props=\"{}\">\u00a0<\/span>\u00a0<\/span><\/p><p>Testen vindt dus niet alleen plaats aan het eind van het ontwikkelproces <em>(unit test)<\/em>, maar ook tijdens het schrijven van code <em>(code review)<\/em> en op vele andere momenten in het leveringsproces. Zo zijn er onder andere integratietesten, loadtesten, acceptatietesten, testen voor specifieke gebruikersgroepen of securitytesten. Al onze code wordt bijvoorbeeld getest door <a href=\"https:\/\/www.securify.nl\/diensten\/code-review\/\" target=\"_blank\" rel=\"noopener\">Securify<\/a>. Zij checken de code op security aspecten en analyseren welk stukje code het grootste risico met zich meebrengt bij een wijziging.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7933f03f elementor-widget elementor-widget-heading\" data-id=\"7933f03f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Taal<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-77aaf8c0 elementor-widget elementor-widget-text-editor\" data-id=\"77aaf8c0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Het belangrijkste is dat BDD gebruikmaakt van een gemeenschappelijke taal, gebaseerd op eenvoudige en gestructureerde zinnen. Voor testen betekent dit dat zij beschrijven wat je wilt dat er als output komt, als je weet wat je er als input in stopt. Onze stakeholders zijn meestal IT-architecten. Als er een feature wordt bedacht, moeten zij snappen hoe dat getest gaat worden. Als zij die test kunnen lezen en begrijpen, kunnen zij meedenken en aangeven of dit inderdaad is wat zij willen hebben.<\/p><p>Daarvoor doorlopen wij heel gestructureerd verschillende stappen in projecten. Voor een klant bouwen wij bijvoorbeeld een private cloudplatform, waar twee verschillende organisatieonderdelen op dezelfde hardware in het datacenter draaien, maar virtueel strikt gescheiden moeten zijn. Om deze omgeving voor de klant te ontsluiten is een serviceportaal ontwikkeld met een standaardproduct van VMware, wat is uitgebreid met verschillende andere functionaliteiten van andere leveranciers. Via software van ons kunnen deze applicaties berichten met elkaar uitwisselen.<\/p><p><span class=\"TextRun SCXW260795583 BCX8\" lang=\"NL-NL\" xml:lang=\"NL-NL\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW260795583 BCX8\">Om daar grip op te krijgen en <\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">om dit te kunnen testen, moet je eerst heel goed weten hoe je <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SpellingErrorHighlight SCXW260795583 BCX8\">requirements<\/span><span class=\"NormalTextRun SCXW260795583 BCX8\"> op moet schrijven. Deze worden g<\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">eschreven <\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">i<\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">n <\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">een <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW260795583 BCX8\">framework<\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">, want je hebt harde kaders nodig<\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">, <\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">waarin drie fases te onderscheiden zijn<\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">: <\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">business <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW260795583 BCX8\">value<\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">, <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW260795583 BCX8\">acceptance<\/span><span class=\"NormalTextRun SCXW260795583 BCX8\"> criteria en non <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW260795583 BCX8\">functional<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW260795583 BCX8\">requirements<\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">. <\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">Het opstellen van de <\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">functionele <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW260795583 BCX8\">requirements<\/span><span class=\"NormalTextRun SCXW260795583 BCX8\"> start met het uitsplitsen van drie belangrijke componenten. Waarom bouw je iets, wat is de waarde en context, waarvoor bouw je iets (wat moet het doen?) en voor wie? Dat ziet er als volgt uit: Als een [functienaam], wil ik [<\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">deze <\/span><span class=\"NormalTextRun SCXW260795583 BCX8\">feature], zodat [benefit].<\/span><\/span><span class=\"EOP SCXW260795583 BCX8\" data-ccp-props=\"{}\">\u00a0<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3923ebfd elementor-section-stretched elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3923ebfd\" data-element_type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-bfd096a\" data-id=\"bfd096a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1cf7b642 elementor-widget elementor-widget-testimonial\" data-id=\"1cf7b642\" data-element_type=\"widget\" data-widget_type=\"testimonial.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-testimonial-wrapper\">\n\t\t\t\t\t\t\t<div class=\"elementor-testimonial-content\">\"Want achter de functionele wereld gaat nog een hele wereld schuil\"<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-testimonial-meta elementor-has-image elementor-testimonial-image-position-aside\">\n\t\t\t\t<div class=\"elementor-testimonial-meta-inner\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-image\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1200\" height=\"800\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1.png\" class=\"attachment-full size-full wp-image-12816\" alt=\"\" srcset=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1.png 1200w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1-300x200.png 300w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1-1024x683.png 1024w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1-768x512.png 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-10f78633 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"10f78633\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7763eab7\" data-id=\"7763eab7\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5c7dc1a1 elementor-widget elementor-widget-heading\" data-id=\"5c7dc1a1\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Testen<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1105a52c elementor-widget elementor-widget-text-editor\" data-id=\"1105a52c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In de volgende fase stellen we vervolgens acceptatiecriteria op hoe elke stap moet worden doorlopen. Gegeven deze situatie wil ik dat als dit gebeurt, er deze uitkomst uitkomt. Naast functionele requirements zijn er bovendien ook non-functionele requirements. Want achter de functionele wereld gaat nog een hele wereld schuil. We kijken dus heel concreet naar hoeveel impact bepaalde gebeurtenissen hebben op de performance, of er schalingsproblemen te verwachten zijn en wat een klant van ons verwacht.<\/p><p><span class=\"TextRun SCXW112392255 BCX8\" lang=\"NL-NL\" xml:lang=\"NL-NL\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW112392255 BCX8\">Pas daarna kunnen we gaan testen. Daarin zijn <\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">in deze casus <\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">vier lagen te onderscheiden: unit tests, integratietesten, systeemtesten en end<\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">&#8211;<\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW112392255 BCX8\">to<\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">-end<\/span><span class=\"NormalTextRun SCXW112392255 BCX8\"> testen<\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">. Gestart wordt met <\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">het testen op functieniveau, daarna <\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">kom je uit op integratieniveau want alle kleine stukjes software samen, moeten ook functioneren. <\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">Dit gaat uiteraard volledig geautomatiseerd. <\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">Na de <\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">systeemtesten <\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">komen we dan uiteindelijk uit bij de end<\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">&#8211;<\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW112392255 BCX8\">to<\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">&#8211;<\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">end testen<\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">. <\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">En dat is waar het bij <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW112392255 BCX8\">Behaviour<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW112392255 BCX8\">Driven<\/span><span class=\"NormalTextRun SCXW112392255 BCX8\"> Design uiteindelijk om draait<\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">. Als je <\/span><span class=\"NormalTextRun SCXW112392255 BCX8\">alles bij elkaar zet en met elkaar verbindt, wat moet het dan doen voor de klant?\u00a0<\/span><\/span><span class=\"EOP SCXW112392255 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">Naast dat je alle testen runt, moeten er nog wel meer dingen gebeuren, voordat je kunt zeggen dat een stuk functionaliteit echt af is. Daarvoor gebruiken we de Definition of Done checklist.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-44288b27 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"44288b27\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2f2e025a\" data-id=\"2f2e025a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2aebdd0b elementor-widget elementor-widget-heading\" data-id=\"2aebdd0b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Resultaat<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5aaed7a6 elementor-widget elementor-widget-text-editor\" data-id=\"5aaed7a6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Het voordeel van deze werkwijze ten opzichte van alleen geschreven documentatie is dat je door de tests uit te voeren, kunt checken of je documentatie klopt. Bovendien kunnen wij een stuk dashboarding en reporting teruggeven aan de klant. Als wij die hele testsuite uitrollen kunnen zij zien waar eventueel een bug is ge\u00efdentificeerd of hoe lang tests hebben geduurd. Het zorgt voor transparantie, want de essentie van testen is dat wij moeten \u00e9n willen bewijzen dat wat wij hebben ontwikkeld, doet wat in de requirements staat.<\/p><p>Alle voorgaande stappen hebben invloed op het daadwerkelijk op te leveren eindproduct. De sleutel tot succes daarbij is dat je bij het maken en testen van software van tevoren goed checkt of je wel dezelfde taal spreekt.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1bc76ca6 stay-inside-row elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-invisible\" data-id=\"1bc76ca6\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeInUp&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1ca1a7b\" data-id=\"1ca1a7b\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-599eac18 scrolling-logo-in-colored-background elementor-widget__width-auto elementor-absolute elementor-widget elementor-widget-image\" data-id=\"599eac18\" data-element_type=\"widget\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_effect&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_direction&quot;:&quot;negative&quot;,&quot;motion_fx_translateY_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:7,&quot;sizes&quot;:[]},&quot;_position&quot;:&quot;absolute&quot;,&quot;motion_fx_translateY_affectedRange&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"243\" height=\"250\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2022\/06\/solvinity-background-icon-3.png\" class=\"attachment-full size-full wp-image-20770\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-660e6d20 stay-inside-row elementor-section-boxed elementor-section-height-default elementor-section-height-default elementor-invisible\" data-id=\"660e6d20\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeInUp&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-180b24d3\" data-id=\"180b24d3\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-413d5e83 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"413d5e83\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-65725f22\" data-id=\"65725f22\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-479bbbbb text-green elementor-widget elementor-widget-heading\" data-id=\"479bbbbb\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Meld je aan voor de Solvinity Nieuwsbrief<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-47f970cc elementor-widget elementor-widget-heading\" data-id=\"47f970cc\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h6 class=\"elementor-heading-title elementor-size-default\">Ontvang het laatste nieuws, blogs, artikelen en events. <\/h6>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-57c9c3f9 elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-phone elementor-widget elementor-widget-shortcode\" data-id=\"57c9c3f9\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><script>\nvar gform;gform||(document.addEventListener(\"gform_main_scripts_loaded\",function(){gform.scriptsLoaded=!0}),document.addEventListener(\"gform\/theme\/scripts_loaded\",function(){gform.themeScriptsLoaded=!0}),window.addEventListener(\"DOMContentLoaded\",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>\"function\"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn(\"The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1.\"),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener(\"gform_main_scripts_loaded\",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener(\"gform\/theme\/scripts_loaded\",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener(\"DOMContentLoaded\",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook(\"action\",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook(\"filter\",o,r,e,t)},doAction:function(o){gform.doHook(\"action\",o,arguments)},applyFilters:function(o){return gform.doHook(\"filter\",o,arguments)},removeAction:function(o,r){gform.removeHook(\"action\",o,r)},removeFilter:function(o,r,e){gform.removeHook(\"filter\",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+\"_\"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){\"function\"!=typeof(t=o.callable)&&(t=window[t]),\"action\"==r?t.apply(null,e):e[0]=t.apply(null,e)})),\"filter\"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}});\n<\/script>\n\n                <div class='gf_browser_gecko gform_wrapper gform_legacy_markup_wrapper gform-theme--no-framework newsletter_wrapper' data-form-theme='legacy' data-form-index='0' id='gform_wrapper_1' ><div id='gf_1' class='gform_anchor' tabindex='-1'><\/div><form method='post' enctype='multipart\/form-data' target='gform_ajax_frame_1' id='gform_1' class='newsletter' action='\/nl\/wp-json\/wp\/v2\/blog\/27702#gf_1' data-formid='1' novalidate>\n                        <div class='gform-body gform_body'><ul id='gform_fields_1' class='gform_fields top_label form_sublabel_below description_below validation_below'><li id=\"field_1_3\" class=\"gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_1_3'>Comments<\/label><div class='ginput_container'><input name='input_3' id='input_1_3' type='text' value='' autocomplete='new-password'\/><\/div><div class='gfield_description' id='gfield_description_1_3'>Dit veld is bedoeld voor validatiedoeleinden en moet niet worden gewijzigd.<\/div><\/li><li id=\"field_1_2\" class=\"gfield gfield--type-text no-label news-one-third field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_1_2'>Voornaam<\/label><div class='ginput_container ginput_container_text'><input name='input_2' id='input_1_2' type='text' value='' class='large'    placeholder='Voornaam'  aria-invalid=\"false\"   \/><\/div><\/li><li id=\"field_1_1\" class=\"gfield gfield--type-email no-label news-two-third field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_1_1'>Email<\/label><div class='ginput_container ginput_container_email'>\n                            <input name='input_1' id='input_1_1' type='email' value='' class='large'   placeholder='E-mailadres'  aria-invalid=\"false\"  \/>\n                        <\/div><\/li><\/ul><\/div>\n        <div class='gform-footer gform_footer top_label'> <input type='submit' id='gform_submit_button_1' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' value='Sign up'  \/> <input type='hidden' name='gform_ajax' value='form_id=1&amp;title=&amp;description=&amp;tabindex=0&amp;theme=legacy&amp;styles=[]&amp;hash=c622f34a3aff3e19fcb99fbe171377fe' \/>\n            <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_1' value='iframe' \/>\n            <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_1' id='gform_theme_1' value='legacy' \/>\n            <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_1' id='gform_style_settings_1' value='[]' \/>\n            <input type='hidden' class='gform_hidden' name='is_submit_1' value='1' \/>\n            <input type='hidden' class='gform_hidden' name='gform_submit' value='1' \/>\n            \n            <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' \/>\n            <input type='hidden' class='gform_hidden' name='state_1' value='WyJbXSIsIjA3ZjQ1YWY1Yjk0NTBiMjliMzYxODEwMTgzN2JkYjA1Il0=' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_1' id='gform_target_page_number_1' value='0' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_1' id='gform_source_page_number_1' value='1' \/>\n            <input type='hidden' name='gform_field_values' value='' \/>\n            \n        <\/div>\n                        <\/form>\n                        <\/div>\n\t\t                <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_1' id='gform_ajax_frame_1' title='Dit iframe bevat de vereiste logica om Ajax aangedreven Gravity Forms te verwerken.'><\/iframe>\n\t\t                <script>\ngform.initializeOnLoaded( function() {gformInitSpinner( 1, 'https:\/\/www.solvinity.com\/wp-content\/plugins\/gravityforms\/images\/spinner.svg', true );jQuery('#gform_ajax_frame_1').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_1');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_1').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_1').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_1').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_1').removeClass('gform_validation_error');}setTimeout( function() { \/* delay the scroll by 50 milliseconds to fix a bug in chrome *\/ jQuery(document).scrollTop(jQuery('#gform_wrapper_1').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_1').val();gformInitSpinner( 1, 'https:\/\/www.solvinity.com\/wp-content\/plugins\/gravityforms\/images\/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [1, current_page]);window['gf_submitting_1'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_1').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_1').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [1]);window['gf_submitting_1'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_1').text());}else{jQuery('#gform_1').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger(\"gform_pre_post_render\", [{ formId: \"1\", currentPage: \"current_page\", abort: function() { this.preventDefault(); } }]);        if (event && event.defaultPrevented) {                return;        }        const gformWrapperDiv = document.getElementById( \"gform_wrapper_1\" );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( \"span\" );            visibilitySpan.id = \"gform_visibility_test_1\";            gformWrapperDiv.insertAdjacentElement( \"afterend\", visibilitySpan );        }        const visibilityTestDiv = document.getElementById( \"gform_visibility_test_1\" );        let postRenderFired = false;        function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            gform.core.triggerPostRenderEvents( 1, current_page );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate && !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) => {                mutations.forEach( ( mutation ) => {                    if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );} );\n<\/script>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7993769d custom-newsletter-ref-button elementor-widget elementor-widget-text-editor\" data-id=\"7993769d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><a href=\"https:\/\/acc.solvinity.com\/nl\/download\/solvinity-nieuwsbrief\/\">Aanmelden<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-41ec60b7 scrolling-logo-in-colored-background elementor-widget__width-auto elementor-absolute elementor-widget elementor-widget-image\" data-id=\"41ec60b7\" data-element_type=\"widget\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_effect&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_direction&quot;:&quot;negative&quot;,&quot;motion_fx_translateY_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:7,&quot;sizes&quot;:[]},&quot;_position&quot;:&quot;absolute&quot;,&quot;motion_fx_translateY_affectedRange&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"243\" height=\"250\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2022\/06\/solvinity-background-icon-3.png\" class=\"attachment-full size-full wp-image-20770\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7db734b9 elementor-section-stretched elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7db734b9\" data-element_type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7d44f23a\" data-id=\"7d44f23a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2557fc94 elementor-widget elementor-widget-heading\" data-id=\"2557fc94\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Lees ook<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2a8803ca elementor-align-center elementor-mobile-align-center icon-right no-absolute-mobile elementor-widget__width-auto elementor-absolute elementor-widget elementor-widget-button\" data-id=\"2a8803ca\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"\/nl\/resources\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-arrow-right\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Meer berichten<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-702a0fb8 text-behind-title elementor-widget__width-inherit elementor-absolute elementor-widget elementor-widget-heading\" data-id=\"702a0fb8\" data-element_type=\"widget\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_effect&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]},&quot;_position&quot;:&quot;absolute&quot;,&quot;motion_fx_translateY_affectedRange&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Meer<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4717da22 elementor-widget elementor-widget-shortcode\" data-id=\"4717da22\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><!-- Gridbuilder \u1d42\u1d3e Plugin (https:\/\/wpgridbuilder.com) -->\n<div class=\"wp-grid-builder wpgb-grid-6 equal-height-211 purple_grid\" data-options=\"{&quot;id&quot;:6,&quot;type&quot;:&quot;masonry&quot;,&quot;source&quot;:&quot;post_type&quot;,&quot;loader&quot;:false,&quot;layout&quot;:&quot;vertical&quot;,&quot;reveal&quot;:0,&quot;isMainQuery&quot;:0,&quot;lazyLoad&quot;:false,&quot;cardSizes&quot;:{&quot;9999&quot;:{&quot;columns&quot;:3,&quot;height&quot;:240,&quot;gutter&quot;:30,&quot;ratio&quot;:&quot;1.33333&quot;},&quot;1200&quot;:{&quot;columns&quot;:3,&quot;height&quot;:240,&quot;gutter&quot;:30,&quot;ratio&quot;:&quot;1.33333&quot;},&quot;992&quot;:{&quot;columns&quot;:3,&quot;height&quot;:220,&quot;gutter&quot;:30,&quot;ratio&quot;:&quot;1.33333&quot;},&quot;768&quot;:{&quot;columns&quot;:1,&quot;height&quot;:220,&quot;gutter&quot;:30,&quot;ratio&quot;:&quot;1.33333&quot;},&quot;576&quot;:{&quot;columns&quot;:1,&quot;height&quot;:200,&quot;gutter&quot;:30,&quot;ratio&quot;:&quot;1.33333&quot;},&quot;320&quot;:{&quot;columns&quot;:1,&quot;height&quot;:200,&quot;gutter&quot;:30,&quot;ratio&quot;:&quot;1.33333&quot;}},&quot;fitRows&quot;:false,&quot;equalRows&quot;:0,&quot;equalColumns&quot;:false,&quot;fillLastRow&quot;:0,&quot;centerLastRow&quot;:0,&quot;horizontalOrder&quot;:false,&quot;fullWidth&quot;:false,&quot;transitionDelay&quot;:100,&quot;gallerySlideshow&quot;:0,&quot;rowsNumber&quot;:1,&quot;slideAlign&quot;:&quot;left&quot;,&quot;groupCells&quot;:1,&quot;draggable&quot;:true,&quot;initialIndex&quot;:0,&quot;contain&quot;:false,&quot;freeScroll&quot;:false,&quot;freeFriction&quot;:&quot;0.075&quot;,&quot;friction&quot;:&quot;0.285&quot;,&quot;attraction&quot;:&quot;0.025&quot;,&quot;autoPlay&quot;:0,&quot;pageDotAriaLabel&quot;:&quot;Page dot %d&quot;,&quot;isPreview&quot;:false,&quot;isGutenberg&quot;:false,&quot;rightToLeft&quot;:false}\"><div class=\"wpgb-svg-icons\" hidden>\n\t<svg viewBox=\"0 0 120 24\" width=\"0\" height=\"0\">\n\t<defs>\n        <polygon id=\"wpgb-star-svg\" points=\"12 2.5 15.1 8.8 22 9.8 17 14.6 18.2 21.5 12 18.3 5.8 21.5 7 14.6 2 9.8 8.9 8.8\"><\/polygon>\n    <\/defs>\n    <symbol id=\"wpgb-rating-stars-svg\">\n        <use xlink:href=\"#wpgb-star-svg\"><\/use>\n        <use xlink:href=\"#wpgb-star-svg\" x=\"24\"><\/use>\n        <use xlink:href=\"#wpgb-star-svg\" x=\"48\"><\/use>\n        <use xlink:href=\"#wpgb-star-svg\" x=\"72\"><\/use>\n        <use xlink:href=\"#wpgb-star-svg\" x=\"96\"><\/use>\n    <\/symbol>\n<\/svg>\n<\/div>\n<div class=\"wpgb-wrapper\">\n\t<div class=\"wpgb-main\">\n\t<div class=\"wpgb-layout\">\n\t<div class=\"wpgb-viewport\">\n\t\t<div class=\"wpgb-masonry\">\n\t\t\t<article class=\"wpgb-card wpgb-card-5 wpgb-post-31831\" data-col=\"1\" data-row=\"1\" data-format=\"standard\"><div class=\"wpgb-card-wrapper\"><div class=\"wpgb-card-inner\" data-action><div class=\"wpgb-card-media wpgb-scheme-light\"><svg data-ratio style=\"padding-top:66.67%\" viewBox=\"0 0 768 512\"><\/svg><div class=\"wpgb-card-media-thumbnail\"><a href=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2026\/03\/Shadow-AI-blog-visual.png\" tabindex=\"-1\" class=\"wpgb-handle-lb wpgb-lightbox\" data-type=\"image\" data-rel=\"6\" data-title=\"Shadow-AI-blog-visual\" title=\"Enlarge photo\"><div style=\"background-image:url(https:\/\/www.solvinity.com\/wp-content\/uploads\/2026\/03\/Shadow-AI-blog-visual-768x512.png)\"><\/div><noscript><img loading=\"lazy\" decoding=\"async\" class=\"wpgb-noscript-img\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2026\/03\/Shadow-AI-blog-visual-768x512.png\" alt=\"\" height=\"512\" width=\"768\"><\/noscript><\/a><\/div><div class=\"wpgb-card-media-content\"><div class=\"wpgb-card-media-content-top\"><div class=\"wpgb-block-4 blog-category-grid\"><span class=\"wpgb-block-term\" data-id=\"64\">Blogs<\/span><\/div><\/div><\/div><\/div><div class=\"wpgb-card-content wpgb-scheme-dark\"><div class=\"wpgb-card-body\"><div class=\"wpgb-block-5\">12 maart 2026<\/div><h3 class=\"wpgb-block-1 wpgb-idle-scheme-1 wpgb-hover-accent-1\"><a href=\"https:\/\/www.solvinity.com\/nl\/blog\/shadow-ai-hoeveel-controle-heeft-jouw-organisatie-over-ai-gebruik\/\">Shadow AI: hoeveel controle heeft jouw organisatie over AI-gebruik?<\/a><\/h3><p class=\"wpgb-block-2 wpgb-idle-scheme-2\">Wat is Shadow AI, waarom verbieden organisaties publieke AI-tools en welke gevolgen heeft dat? Je leest...<\/p><a class=\"wpgb-block-3 grid-more-info-green\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/shadow-ai-hoeveel-controle-heeft-jouw-organisatie-over-ai-gebruik\/\">READ MORE <i aria-hidden=\"true\" class=\"grid-more-info-green fas fa-arrow-right\"><\/i><\/a><\/div><\/div><a class=\"wpgb-card-layer-link\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/shadow-ai-hoeveel-controle-heeft-jouw-organisatie-over-ai-gebruik\/\"><\/a><\/div><\/div><\/article><article class=\"wpgb-card wpgb-card-5 wpgb-post-31353\" data-col=\"1\" data-row=\"1\" data-format=\"standard\"><div class=\"wpgb-card-wrapper\"><div class=\"wpgb-card-inner\" data-action><div class=\"wpgb-card-media wpgb-scheme-light\"><svg data-ratio style=\"padding-top:66.67%\" viewBox=\"0 0 768 512\"><\/svg><div class=\"wpgb-card-media-thumbnail\"><a href=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Hybrid-Cloud-1.png\" tabindex=\"-1\" class=\"wpgb-handle-lb wpgb-lightbox\" data-type=\"image\" data-rel=\"6\" data-title=\"Hybrid Cloud\" title=\"Enlarge photo\"><div style=\"background-image:url(https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Hybrid-Cloud-1-768x512.png)\"><\/div><noscript><img loading=\"lazy\" decoding=\"async\" class=\"wpgb-noscript-img\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Hybrid-Cloud-1-768x512.png\" alt=\"\" height=\"512\" width=\"768\"><\/noscript><\/a><\/div><div class=\"wpgb-card-media-content\"><div class=\"wpgb-card-media-content-top\"><div class=\"wpgb-block-4 blog-category-grid\"><span class=\"wpgb-block-term\" data-id=\"64\">Blogs<\/span><\/div><\/div><\/div><\/div><div class=\"wpgb-card-content wpgb-scheme-dark\"><div class=\"wpgb-card-body\"><div class=\"wpgb-block-5\">19 november 2025<\/div><h3 class=\"wpgb-block-1 wpgb-idle-scheme-1 wpgb-hover-accent-1\"><a href=\"https:\/\/www.solvinity.com\/nl\/blog\/van-versnippering-naar-overzicht-de-kracht-van-de-hybrid-cloud\/\">Van versnippering naar overzicht: de kracht van de Hybrid Cloud<\/a><\/h3><p class=\"wpgb-block-2 wpgb-idle-scheme-2\">Wat is een Hybrid Cloud en wat zijn de voordelen? Ontdek wanneer een combinatie van een...<\/p><a class=\"wpgb-block-3 grid-more-info-green\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/van-versnippering-naar-overzicht-de-kracht-van-de-hybrid-cloud\/\">READ MORE <i aria-hidden=\"true\" class=\"grid-more-info-green fas fa-arrow-right\"><\/i><\/a><\/div><\/div><a class=\"wpgb-card-layer-link\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/van-versnippering-naar-overzicht-de-kracht-van-de-hybrid-cloud\/\"><\/a><\/div><\/div><\/article><article class=\"wpgb-card wpgb-card-5 wpgb-post-31149\" data-col=\"1\" data-row=\"1\" data-format=\"standard\"><div class=\"wpgb-card-wrapper\"><div class=\"wpgb-card-inner\" data-action><div class=\"wpgb-card-media wpgb-scheme-light\"><svg data-ratio style=\"padding-top:66.67%\" viewBox=\"0 0 768 512\"><\/svg><div class=\"wpgb-card-media-thumbnail\"><a href=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual.png\" tabindex=\"-1\" class=\"wpgb-handle-lb wpgb-lightbox\" data-type=\"image\" data-rel=\"6\" data-title=\"Blog 3 visual\" title=\"Enlarge photo\"><div style=\"background-image:url(https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual-768x512.png)\"><\/div><noscript><img loading=\"lazy\" decoding=\"async\" class=\"wpgb-noscript-img\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual-768x512.png\" alt=\"De stille dreiging van schijnveiligheid\" height=\"512\" width=\"768\"><\/noscript><\/a><\/div><div class=\"wpgb-card-media-content\"><div class=\"wpgb-card-media-content-top\"><\/div><\/div><\/div><div class=\"wpgb-card-content wpgb-scheme-dark\"><div class=\"wpgb-card-body\"><div class=\"wpgb-block-5\">11 november 2025<\/div><h3 class=\"wpgb-block-1 wpgb-idle-scheme-1 wpgb-hover-accent-1\"><a href=\"https:\/\/www.solvinity.com\/nl\/blog\/de-stille-dreiging-van-schijnveiligheid\/\">De stille dreiging van schijnveiligheid<\/a><\/h3><p class=\"wpgb-block-2 wpgb-idle-scheme-2\">Ontdek waarom organisaties wel in maatregelen investeren, maar vaak het overzicht en de kennis missen om...<\/p><a class=\"wpgb-block-3 grid-more-info-green\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/de-stille-dreiging-van-schijnveiligheid\/\">READ MORE <i aria-hidden=\"true\" class=\"grid-more-info-green fas fa-arrow-right\"><\/i><\/a><\/div><\/div><a class=\"wpgb-card-layer-link\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/de-stille-dreiging-van-schijnveiligheid\/\"><\/a><\/div><\/div><\/article>\t\t<\/div>\n\t<\/div>\n\t<\/div>\n\t<\/div>\n\t\t<\/div>\n<\/div>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Ontdek hoe de transitie van watervalmethodiek naar agile ontwikkeling de softwareontwikkeling voor IT-infrastructuur heeft getransformeerd. Leer over essenti\u00eble technieken zoals Test Driven Development (TDD) en Behaviour Driven Development (BDD) en hoe deze methoden kwaliteitsborging en samenwerking verbeteren. Begrijp hoe shift-left testen en geautomatiseerde processen helpen om defecten vroegtijdig op te sporen en te verhelpen, wat resulteert in robuustere en betrouwbaardere softwareoplossingen.<\/p>\n","protected":false},"featured_media":27707,"parent":0,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[64],"tags":[],"class_list":["post-27702","blog","type-blog","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-nl"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Software ontwikkelen voor infrastructuur - Solvinity<\/title>\n<meta name=\"description\" content=\"Ontdek hoe agile ontwikkeling met TDD en BDD software voor IT-infrastructuur verbetert. Leer over shift-left testen en geautomatiseerde kwaliteitsborging.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Software ontwikkelen voor infrastructuur - Solvinity\" \/>\n<meta property=\"og:description\" content=\"Ontdek hoe agile ontwikkeling met TDD en BDD software voor IT-infrastructuur verbetert. Leer over shift-left testen en geautomatiseerde kwaliteitsborging.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/\" \/>\n<meta property=\"og:site_name\" content=\"Solvinity\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-19T11:30:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2024\/05\/435x210.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"435\" \/>\n\t<meta property=\"og:image:height\" content=\"210\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/\",\"url\":\"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/\",\"name\":\"Software ontwikkelen voor infrastructuur - Solvinity\",\"isPartOf\":{\"@id\":\"https:\/\/www.solvinity.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2024\/05\/435x210.jpg\",\"datePublished\":\"2024-05-29T12:41:51+00:00\",\"dateModified\":\"2025-06-19T11:30:02+00:00\",\"description\":\"Ontdek hoe agile ontwikkeling met TDD en BDD software voor IT-infrastructuur verbetert. Leer over shift-left testen en geautomatiseerde kwaliteitsborging.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/#primaryimage\",\"url\":\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2024\/05\/435x210.jpg\",\"contentUrl\":\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2024\/05\/435x210.jpg\",\"width\":435,\"height\":210,\"caption\":\"kruisende wegen\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.solvinity.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Software ontwikkelen voor infrastructuur\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.solvinity.com\/nl\/#website\",\"url\":\"https:\/\/www.solvinity.com\/nl\/\",\"name\":\"Solvinity\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.solvinity.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.solvinity.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.solvinity.com\/nl\/#organization\",\"name\":\"Solvinity\",\"url\":\"https:\/\/www.solvinity.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/www.solvinity.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2019\/08\/solvinity-logo.png\",\"contentUrl\":\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2019\/08\/solvinity-logo.png\",\"width\":344,\"height\":72,\"caption\":\"Solvinity\"},\"image\":{\"@id\":\"https:\/\/www.solvinity.com\/nl\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Software ontwikkelen voor infrastructuur - Solvinity","description":"Ontdek hoe agile ontwikkeling met TDD en BDD software voor IT-infrastructuur verbetert. Leer over shift-left testen en geautomatiseerde kwaliteitsborging.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/","og_locale":"nl_NL","og_type":"article","og_title":"Software ontwikkelen voor infrastructuur - Solvinity","og_description":"Ontdek hoe agile ontwikkeling met TDD en BDD software voor IT-infrastructuur verbetert. Leer over shift-left testen en geautomatiseerde kwaliteitsborging.","og_url":"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/","og_site_name":"Solvinity","article_modified_time":"2025-06-19T11:30:02+00:00","og_image":[{"width":435,"height":210,"url":"https:\/\/www.solvinity.com\/wp-content\/uploads\/2024\/05\/435x210.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Geschatte leestijd":"6 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/","url":"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/","name":"Software ontwikkelen voor infrastructuur - Solvinity","isPartOf":{"@id":"https:\/\/www.solvinity.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/#primaryimage"},"image":{"@id":"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/#primaryimage"},"thumbnailUrl":"https:\/\/www.solvinity.com\/wp-content\/uploads\/2024\/05\/435x210.jpg","datePublished":"2024-05-29T12:41:51+00:00","dateModified":"2025-06-19T11:30:02+00:00","description":"Ontdek hoe agile ontwikkeling met TDD en BDD software voor IT-infrastructuur verbetert. Leer over shift-left testen en geautomatiseerde kwaliteitsborging.","breadcrumb":{"@id":"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/#primaryimage","url":"https:\/\/www.solvinity.com\/wp-content\/uploads\/2024\/05\/435x210.jpg","contentUrl":"https:\/\/www.solvinity.com\/wp-content\/uploads\/2024\/05\/435x210.jpg","width":435,"height":210,"caption":"kruisende wegen"},{"@type":"BreadcrumbList","@id":"https:\/\/www.solvinity.com\/nl\/blog\/software-ontwikkelen-voor-infrastructuur\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.solvinity.com\/nl\/"},{"@type":"ListItem","position":2,"name":"Software ontwikkelen voor infrastructuur"}]},{"@type":"WebSite","@id":"https:\/\/www.solvinity.com\/nl\/#website","url":"https:\/\/www.solvinity.com\/nl\/","name":"Solvinity","description":"","publisher":{"@id":"https:\/\/www.solvinity.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.solvinity.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/www.solvinity.com\/nl\/#organization","name":"Solvinity","url":"https:\/\/www.solvinity.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/www.solvinity.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/www.solvinity.com\/wp-content\/uploads\/2019\/08\/solvinity-logo.png","contentUrl":"https:\/\/www.solvinity.com\/wp-content\/uploads\/2019\/08\/solvinity-logo.png","width":344,"height":72,"caption":"Solvinity"},"image":{"@id":"https:\/\/www.solvinity.com\/nl\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/blog\/27702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/types\/blog"}],"version-history":[{"count":6,"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/blog\/27702\/revisions"}],"predecessor-version":[{"id":27730,"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/blog\/27702\/revisions\/27730"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/media\/27707"}],"wp:attachment":[{"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/media?parent=27702"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/categories?post=27702"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/tags?post=27702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}