{"id":65,"date":"2012-09-20T05:06:26","date_gmt":"2012-09-20T05:06:26","guid":{"rendered":"http:\/\/www.infosynergetics.com\/?p=65"},"modified":"2014-05-16T05:07:00","modified_gmt":"2014-05-16T05:07:00","slug":"test-driven-development-and-cots","status":"publish","type":"post","link":"https:\/\/www.infosynergetics.com\/?p=65","title":{"rendered":"Test Driven Development and COTS"},"content":{"rendered":"<p>COTS is traditionally taken to mean <a href=\"http:\/\/en.wikipedia.org\/wiki\/Commercial_off-the-shelf\" target=\"_blank\">Commercial Off The Shelf<\/a>.&nbsp; However, I&#8217;ve also heard it referred to Configurable Off The Shelf.&nbsp; This latter term more accurately describes a large class of systems implemented in business environments today.&nbsp; The package&nbsp;can largely be deployed as is, but typically has a significant number of configuration options to allow it to be more closely tailored to its&nbsp;target environment.<\/p>\n<p>When preparing to deploy one such system earlier this year, a colleauge and I thought it would be interesting to leverage Microsoft&#8217;s Test Manager(MTM) to create and record test results covering the final&nbsp;testing of the product.&nbsp; Both of us being new to automated testing and things of that nature, we didn&#8217;t foresee the challenges we would face.&nbsp; The largest challenge was the&nbsp;lack of detailed reporting available at the end to use as documentation for compliance purposes.&nbsp;&nbsp;In addition,&nbsp;the system is not very supportive&nbsp;of stopping and test mid stream and continuing later.&nbsp; If you stop a test you frequently need to&nbsp;declare it a failure,&nbsp;even if the issue you were facing isn&#8217;t strictly speaking a failure.&nbsp; Of course, this sort of testing is not really what Test Manager was meant for (or any other code testing tool).&nbsp; The end result was that we decided to that we wouldn&#8217;t use MTM for&nbsp;similar activities in the future.<\/p>\n<p>At the same time, I was&nbsp;working on another project that&nbsp;was all about code&nbsp;development, but where the&nbsp;significant code base&nbsp;had no tests written for it before.&nbsp; Typically, attempting to run tests against such code is likely to result in&nbsp;a bunch of errors, and very little, if any value.&nbsp; However, I was playing QA for an offsite developer, and I decided&nbsp;that it would be useful to have some predefined tests for me to run whenever the develope did a code check in.&nbsp; I turned out to be right.&nbsp; I didn&#8217;t have to rethink what steps to run through every time.&nbsp; I could also refine the test list, and hone it so that I was hitting all of the important parts.<\/p>\n<p>As I was going through this process, it occurred to me that testing tools, and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Test-driven_development\" target=\"_blank\">Test Driven Development<\/a> (TDD) techniques could actually be of benefit during a COTS implementation process.&nbsp; Since tests in a TDD environment actually serve as a form of requirement, you can write up your tests either as a copy of an existing requirements document, or have the test list serve as the requirements document.&nbsp; Of course, the important point here would be to make the test titles suitably descriptive (as they frequently are in a TDD environment).<\/p>\n<p>As configuration of the system progresses, you run all of the tests (skipping ones that you know haven&#8217;t been worked on yet), until you have all of your tests completed.&nbsp; This then tells you that you are ready to enter into the formal testing phase for compliance systems, or that you are ready to release.&nbsp; This also facilitates Agile implementation of a COTS system.&nbsp; As you progress through the various Sprints, User Stories turn into Test Cases, and as those cases test properly, you are done with a Sprint.<\/p>\n<p>I haven&#8217;t actually attempted this yet, but it seems reasonable, so I will definitely attempt it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>COTS is traditionally taken to mean Commercial Off The Shelf.&nbsp; However, I&#8217;ve also heard it referred to Configurable Off The Shelf.&nbsp; This latter term more accurately describes a large class of systems implemented in business environments today.&nbsp; The package&nbsp;can largely be deployed as is, but typically has a significant number of configuration options to allow [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.infosynergetics.com\/index.php?rest_route=\/wp\/v2\/posts\/65"}],"collection":[{"href":"https:\/\/www.infosynergetics.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.infosynergetics.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.infosynergetics.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infosynergetics.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=65"}],"version-history":[{"count":1,"href":"https:\/\/www.infosynergetics.com\/index.php?rest_route=\/wp\/v2\/posts\/65\/revisions"}],"predecessor-version":[{"id":66,"href":"https:\/\/www.infosynergetics.com\/index.php?rest_route=\/wp\/v2\/posts\/65\/revisions\/66"}],"wp:attachment":[{"href":"https:\/\/www.infosynergetics.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=65"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infosynergetics.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=65"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infosynergetics.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=65"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}