{"id":22808,"date":"2013-11-04T10:13:16","date_gmt":"2013-11-04T15:13:16","guid":{"rendered":"http:\/\/quotulatiousness.ca\/blog\/?p=22808"},"modified":"2013-11-04T10:13:16","modified_gmt":"2013-11-04T15:13:16","slug":"qotd-software-quality-assurance","status":"publish","type":"post","link":"https:\/\/quotulatiousness.ca\/blog\/2013\/11\/04\/qotd-software-quality-assurance\/","title":{"rendered":"QotD: Software quality assurance"},"content":{"rendered":"<blockquote><p>The fundamental purpose of testing\u2014and, for that matter, of all software quality assurance (QA) deliverables and processes \u2014 is to tell you just what you\u2019ve built and whether it does what you think it should do. This is essential, because you can\u2019t inspect a software program the same way you can inspect a house or a car. You can\u2019t touch it, you can\u2019t walk around it, you can\u2019t open the hood or the bedroom door to see what\u2019s inside, you can\u2019t take it out for spin. There are very few tangible or visible clues to the completeness and reliability of a software system \u2014 and so we have to rely on QA activities to tell us how well built the system is.<\/p>\n<p>Furthermore, almost any software system developed nowadays for production is vastly more complex than a house or car \u2014 it\u2019s more on the same order of complexity of a large petrochemical processing and storage facility, with thousands of possible interconnections, states, and processes. We would be (rightly) terrified if, say, Exxon build such a sprawling oil refining complex near our neighborhood and then started up production having only done a bare minimum of inspection, testing, and trial operations before, during and after construction, offering the explanation that they would wait until after the plant went into production and then handle problems as they crop up. Yet too often that\u2019s just how large software development projects are run, even though the system in development may well be more complex (in terms of connections, processes, and possible states) than such a petrochemical factory. And while most inadequately tested software systems won\u2019t spew pollutants, poison the neighborhood, catch fire, or explode, they can cripple corporate operations, lose vast sums of money, spark shareholder lawsuits, and open the corporation\u2019s directors and officers to civil and even criminal liability (particularly with the advent of Sarbanes-Oxley).<\/p>\n<p>And that presumes that the system can actually go into production. The software engineering literature and the trade press are replete with well-documented case studies of \u201csoftware runaways\u201d: large IT re-engineering or development projects that consume tens or hundreds of millions of dollars, or in a few spectacular (government) cases, billions of dollars, over a period of years, before grinding to a halt and being terminated without ever having put a usable, working system into production. So it\u2019s important not to skimp on testing and the other QA-related activities.<\/p>\n<p>Bruce F. Webster, <a href=\"http:\/\/andstillipersist.com\/2013\/10\/obamacare-and-the-testing-gap\/\" target=\"_blank\">&#8220;Obamacare and the Testing Gap&#8221;, <em>And Still I Persist&#8230;<\/em><\/a>, 2013-10-31<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>The fundamental purpose of testing\u2014and, for that matter, of all software quality assurance (QA) deliverables and processes \u2014 is to tell you just what you\u2019ve built and whether it does what you think it should do. This is essential, because you can\u2019t inspect a software program the same way you can inspect a house or [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[831,84,41,15],"tags":[140,590,58,92],"class_list":["post-22808","post","type-post","status-publish","format-standard","hentry","category-business","category-government","category-quotations","category-technology","tag-design","tag-engineering","tag-internet","tag-software"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2hpV6-5VS","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/quotulatiousness.ca\/blog\/wp-json\/wp\/v2\/posts\/22808","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/quotulatiousness.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/quotulatiousness.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/quotulatiousness.ca\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/quotulatiousness.ca\/blog\/wp-json\/wp\/v2\/comments?post=22808"}],"version-history":[{"count":1,"href":"https:\/\/quotulatiousness.ca\/blog\/wp-json\/wp\/v2\/posts\/22808\/revisions"}],"predecessor-version":[{"id":22809,"href":"https:\/\/quotulatiousness.ca\/blog\/wp-json\/wp\/v2\/posts\/22808\/revisions\/22809"}],"wp:attachment":[{"href":"https:\/\/quotulatiousness.ca\/blog\/wp-json\/wp\/v2\/media?parent=22808"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/quotulatiousness.ca\/blog\/wp-json\/wp\/v2\/categories?post=22808"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/quotulatiousness.ca\/blog\/wp-json\/wp\/v2\/tags?post=22808"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}