{"id":1636,"date":"2016-12-07T18:51:47","date_gmt":"2016-12-08T02:51:47","guid":{"rendered":"https:\/\/www.genrocket.com\/?p=1636"},"modified":"2026-06-10T14:46:29","modified_gmt":"2026-06-10T14:46:29","slug":"how-the-mvcs-design-pattern-enables-automated-white-box-testing","status":"publish","type":"post","link":"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/","title":{"rendered":"How the MVCS Design Pattern enables Automated White Box Testing"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">The only way to fully test your software is by writing white box tests. However, writing white box tests by hand is a slow, manual, and complex process. There is a new automated white box testing approach from GenRocket that leverages the Model View Controller Service (MVCS) design pattern and we thought you would find this interesting.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The MVCS design pattern further extends the Model View Controller (MVC) design pattern and improves upon the implementation and long-term maintenance and growth of a software application and allows for code that is in the controller and service tier to be fully white box tested. <\/span><\/p>\n<h2><span style=\"font-weight: 400;\">MVC Components<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">In order to understand the Model View Controller Service (MVCS) framework we must have a basic understanding of the Model View Controller (MVC) Framework. The MVC framework is a proven design pattern used to implement small to large scale complex applications. There are three components to the MVC framework:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\"><b>Model: <\/b><span style=\"font-weight: 400;\">The model manages the data an application. \u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>View:<\/b><span style=\"font-weight: 400;\"> The view presents the user interface that allows the user to interact and communicate with the computer. <\/span><\/li>\n<li style=\"font-weight: 400;\"><b>Controller: <\/b><span style=\"font-weight: 400;\">The controller is the layer that sits between the View and the Model; it takes user input, and uses the application&#8217;s business logic to route, save, update, delete and retrieve data. <\/span><\/li>\n<\/ol>\n<h2><span style=\"font-weight: 400;\">Why MVC needs to be extended to MVCS<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">MVC presents a few negative challenges. Since the business logic between the Controller and Model is not encapsulated, many errors in business logic occur. The business logic is also difficult to test and this design pattern does not enforce good coding practices between the controller and the model tiers. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">In our next blog post, we&#8217;ll dive into the details and benefits of MVCS design pattern and how this can enable your team to use automated White Box testing. If you want to learn more now, take a look at <\/span><a href=\"https:\/\/genrocket.helpjuice.com\/\"><span style=\"font-weight: 400;\">our documentation of the MVCS framework.<\/span><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The only way to fully test your software is by writing white box tests. However, writing white box tests by hand is a slow, manual, and complex process. There is a new automated white box testing approach from GenRocket that [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[347,353],"tags":[],"class_list":["post-1636","post","type-post","status-publish","format-standard","hentry","category-software-testing","category-white-box-testing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How the MVCS Design Pattern enables Automated White Box Testing - GenRocket Blog<\/title>\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.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How the MVCS Design Pattern enables Automated White Box Testing - GenRocket Blog\" \/>\n<meta property=\"og:description\" content=\"The only way to fully test your software is by writing white box tests. However, writing white box tests by hand is a slow, manual, and complex process. There is a new automated white box testing approach from GenRocket that [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/\" \/>\n<meta property=\"og:site_name\" content=\"GenRocket Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-12-08T02:51:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-10T14:46:29+00:00\" \/>\n<meta name=\"author\" content=\"Garth Rose\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Garth Rose\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/\"},\"author\":{\"name\":\"Garth Rose\",\"@id\":\"https:\/\/www.genrocket.com\/blog\/#\/schema\/person\/d54031a3b2c8c6851d93d8ea43596028\"},\"headline\":\"How the MVCS Design Pattern enables Automated White Box Testing\",\"datePublished\":\"2016-12-08T02:51:47+00:00\",\"dateModified\":\"2026-06-10T14:46:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/\"},\"wordCount\":326,\"publisher\":{\"@id\":\"https:\/\/www.genrocket.com\/blog\/#organization\"},\"articleSection\":[\"Software Testing\",\"White Box Testing\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/\",\"url\":\"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/\",\"name\":\"How the MVCS Design Pattern enables Automated White Box Testing - GenRocket Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.genrocket.com\/blog\/#website\"},\"datePublished\":\"2016-12-08T02:51:47+00:00\",\"dateModified\":\"2026-06-10T14:46:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.genrocket.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How the MVCS Design Pattern enables Automated White Box Testing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.genrocket.com\/blog\/#website\",\"url\":\"https:\/\/www.genrocket.com\/blog\/\",\"name\":\"GenRocket Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.genrocket.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.genrocket.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.genrocket.com\/blog\/#organization\",\"name\":\"GenRocket Blog\",\"url\":\"https:\/\/www.genrocket.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.genrocket.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.genrocket.com\/blog\/wp-content\/uploads\/2024\/03\/favicon.png\",\"contentUrl\":\"https:\/\/www.genrocket.com\/blog\/wp-content\/uploads\/2024\/03\/favicon.png\",\"width\":32,\"height\":32,\"caption\":\"GenRocket Blog\"},\"image\":{\"@id\":\"https:\/\/www.genrocket.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.genrocket.com\/blog\/#\/schema\/person\/d54031a3b2c8c6851d93d8ea43596028\",\"name\":\"Garth Rose\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.genrocket.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2c40d6db1f3ab6c2e6417c2c295e9542?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2c40d6db1f3ab6c2e6417c2c295e9542?s=96&d=mm&r=g\",\"caption\":\"Garth Rose\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How the MVCS Design Pattern enables Automated White Box Testing - GenRocket Blog","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.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/","og_locale":"en_US","og_type":"article","og_title":"How the MVCS Design Pattern enables Automated White Box Testing - GenRocket Blog","og_description":"The only way to fully test your software is by writing white box tests. However, writing white box tests by hand is a slow, manual, and complex process. There is a new automated white box testing approach from GenRocket that [&hellip;]","og_url":"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/","og_site_name":"GenRocket Blog","article_published_time":"2016-12-08T02:51:47+00:00","article_modified_time":"2026-06-10T14:46:29+00:00","author":"Garth Rose","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Garth Rose","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/#article","isPartOf":{"@id":"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/"},"author":{"name":"Garth Rose","@id":"https:\/\/www.genrocket.com\/blog\/#\/schema\/person\/d54031a3b2c8c6851d93d8ea43596028"},"headline":"How the MVCS Design Pattern enables Automated White Box Testing","datePublished":"2016-12-08T02:51:47+00:00","dateModified":"2026-06-10T14:46:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/"},"wordCount":326,"publisher":{"@id":"https:\/\/www.genrocket.com\/blog\/#organization"},"articleSection":["Software Testing","White Box Testing"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/","url":"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/","name":"How the MVCS Design Pattern enables Automated White Box Testing - GenRocket Blog","isPartOf":{"@id":"https:\/\/www.genrocket.com\/blog\/#website"},"datePublished":"2016-12-08T02:51:47+00:00","dateModified":"2026-06-10T14:46:29+00:00","breadcrumb":{"@id":"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.genrocket.com\/blog\/how-the-mvcs-design-pattern-enables-automated-white-box-testing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.genrocket.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How the MVCS Design Pattern enables Automated White Box Testing"}]},{"@type":"WebSite","@id":"https:\/\/www.genrocket.com\/blog\/#website","url":"https:\/\/www.genrocket.com\/blog\/","name":"GenRocket Blog","description":"","publisher":{"@id":"https:\/\/www.genrocket.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.genrocket.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.genrocket.com\/blog\/#organization","name":"GenRocket Blog","url":"https:\/\/www.genrocket.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.genrocket.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.genrocket.com\/blog\/wp-content\/uploads\/2024\/03\/favicon.png","contentUrl":"https:\/\/www.genrocket.com\/blog\/wp-content\/uploads\/2024\/03\/favicon.png","width":32,"height":32,"caption":"GenRocket Blog"},"image":{"@id":"https:\/\/www.genrocket.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.genrocket.com\/blog\/#\/schema\/person\/d54031a3b2c8c6851d93d8ea43596028","name":"Garth Rose","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.genrocket.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2c40d6db1f3ab6c2e6417c2c295e9542?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2c40d6db1f3ab6c2e6417c2c295e9542?s=96&d=mm&r=g","caption":"Garth Rose"}}]}},"_links":{"self":[{"href":"https:\/\/www.genrocket.com\/blog\/wp-json\/wp\/v2\/posts\/1636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.genrocket.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.genrocket.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.genrocket.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.genrocket.com\/blog\/wp-json\/wp\/v2\/comments?post=1636"}],"version-history":[{"count":2,"href":"https:\/\/www.genrocket.com\/blog\/wp-json\/wp\/v2\/posts\/1636\/revisions"}],"predecessor-version":[{"id":12135,"href":"https:\/\/www.genrocket.com\/blog\/wp-json\/wp\/v2\/posts\/1636\/revisions\/12135"}],"wp:attachment":[{"href":"https:\/\/www.genrocket.com\/blog\/wp-json\/wp\/v2\/media?parent=1636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.genrocket.com\/blog\/wp-json\/wp\/v2\/categories?post=1636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.genrocket.com\/blog\/wp-json\/wp\/v2\/tags?post=1636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}