[{"data":1,"prerenderedAt":156},["ShallowReactive",2],{"technical-blog-page-content":3,"technical-blog-post-benefits-of-tdd":30,"technical-blog-author-benefits-of-tdd":144},{"id":4,"title":5,"author":6,"blogTags":6,"body":7,"customExcerpt":6,"date":6,"description":11,"excerpt":6,"extension":14,"h1":15,"image":6,"meta":16,"navigation":17,"path":18,"readingStats":19,"seo":24,"stem":28,"__hash__":29},"technicalBlogPage\u002Ftechnical-blog-page.md","Technical Blog Page",null,{"type":8,"value":9,"toc":10},"minimark",[],{"title":11,"searchDepth":12,"depth":12,"links":13},"",2,[],"md","Technical insights, stories and opinions from our team of consultants, analysts, developers and testers.",{},true,"\u002Ftechnical-blog-page",{"text":20,"minutes":21,"time":22,"words":23},"1 min read",0.29,17400,58,{"title":25,"description":26,"keywords":27},"Technology Insights | Audacia Digital Transformation","Technical insights, stories and opinions from leading software development company Audacia's teams of consultants, analysts, developers and testers.","Digital transformation technology, Technology blog, Technology insights, software development blog, software engineering blog","technical-blog-page","XD1gWfEur9Mu64WptQ5pF-e7Ej60LGiq7sRC58wOAeQ",{"id":31,"title":32,"author":33,"blogTags":34,"body":36,"customExcerpt":127,"date":128,"description":41,"excerpt":129,"extension":14,"h1":6,"image":130,"meta":131,"navigation":17,"path":132,"readingStats":133,"seo":138,"stem":142,"__hash__":143},"technicalBlog\u002Ftechnical-blog\u002Fbenefits-of-tdd.md","The Benefits of Test-Driven Development in Software Development Projects","Richard Brown",[35],"Code",{"type":8,"value":37,"toc":120},[38,42,47,50,53,57,79,83,86,90,93,97,110,117],[39,40,41],"p",{},"Test-Driven Development (TDD) is a fairly well established software development practice, with lots of companies (large, corporate companies as well as smaller software development houses and design agencies) advocating it. Despite this widespread adoption there is still resistance to it, from both software developers and managers, so for anyone not yet convinced, these are the five main reasons I use TDD.",[43,44,46],"h2",{"id":45},"automates-qa-software-testing","Automates QA Software Testing",[39,48,49],{},"This is the obvious one: doing TDD means that you have a suite of tests that can be run on demand to verify that the system under test is behaving correctly.",[39,51,52],{},"Automated tests should be run as part of a continuous integration process, and the software development team should be alerted to any test failure to allow it to be investigated and fixed straight away.",[43,54,56],{"id":55},"provides-software-product-documentation","Provides Software Product Documentation",[39,58,59,60,64,68,70,71,73,76,78],{},"Good test names succinctly describe the behaviour being tested.  The name of the class and method being tested should be avoided as these names may be changed in future; instead use plain English sentences that focus on",[61,62,63],"span",{}," ",[65,66,67],"em",{},"what",[61,69,63],{},"behaviour is being tested, not",[61,72,63],{},[65,74,75],{},"how",[61,77,63],{},"the system under test is performing that behaviour.",[43,80,82],{"id":81},"enables-safe-code-refactoring","Enables Safe Code Refactoring",[39,84,85],{},"Poorly designed, hard to understand code is a great hiding place for bugs and can be a maintenance headache.  A small amount of time spent refactoring code to make it easier to understand and work with can lead to big long-term benefits, as making changes to the code base can be done more quickly and easily.  Unit tests allow this refactoring to be done safely as they provide immediate feedback if the refactoring has introduced a bug.  Plus, in my experience, having the safety net of unit tests makes it much more likely that developers will carry out the refactoring in the first place.",[43,87,89],{"id":88},"drives-a-decoupled-design-to-software-development-qa-testing","Drives a Decoupled Design to Software Development & QA Testing",[39,91,92],{},"In order to unit test something (for example a class) we must be sure that the only behaviour being tested is in the class in question, so it must be decoupled from any dependencies it has.  This means that, during the unit tests of a class, any other object on which it depends must be ‘stubbed out’ somehow. Dependency injection is a widely-used pattern to achieve this decoupling.",[43,94,96],{"id":95},"allows-software-developers-to-compartmentalise-the-software-system","Allows Software Developers to Compartmentalise the Software System",[39,98,99,100,109],{},"Writing software is hard.  Especially if you want that software to be maintainable, readable, scalable, secure, and all of the other things we aim for when starting out on a project.  One of the things that makes writing software hard is the fact that we are often dealing with complex business processes, each with its own set of rules (and various edge cases).  It is infeasible for developers to keep all of this information in their head at one time, and I would go so far as to say that reducing their ‘working set’ of information to a manageable size is the single most important thing a developer can do to tackle the complexity inherent in most ",[101,102,108],"a",{"rel":103,"href":105,"target":106,"title":107},[104],"noopener","\u002Fprojects\u002F","_blank","Projects","software development projects",".  TDD allows the system to be compartmentalised as the developer can focus just on the unit being tested, reducing their working set to a single class, or at most a small set of interacting classes.",[39,111,112,115],{},[113,114],"br",{},[113,116],{},[39,118,119],{},"There a many more reasons, but in my opinion the five points above should be sufficient to persuade anyone to give it a try.",{"title":11,"searchDepth":12,"depth":12,"links":121},[122,123,124,125,126],{"id":45,"depth":12,"text":46},{"id":55,"depth":12,"text":56},{"id":81,"depth":12,"text":82},{"id":88,"depth":12,"text":89},{"id":95,"depth":12,"text":96},"Test-Driven Development (TDD) is a fairly well established software development practice, with lots of companies (large, corporate companies as well as smaller software development houses and design agencies) advocating it. Here are the five main reasons we use TDD at Audacia.","2016-11-24T00:00:00.000Z","[object Object]","\u002Fimg\u002Ftechnical-blog\u002Ftest-driven-development.jpg",{},"\u002Ftechnical-blog\u002Fbenefits-of-tdd",{"text":134,"minutes":135,"time":136,"words":137},"4 min read",3.32,199200,664,{"title":139,"description":140,"keywords":141},"The Benefits of Test-Driven Development in Software Development Projects | Audacia","Software development company, Audacia, discusses the benefits of Test-Driven software development in this latest insight.","Test driven development, Software testing, Bespoke software testing, Software development","technical-blog\u002Fbenefits-of-tdd","ArfMMjImDYMgXgvIVupQrsIWneh4QJrFXnGVm2CLMok",{"id":145,"title":33,"bio":146,"extension":14,"image":147,"meta":148,"stem":154,"__hash__":155},"author\u002Fauthors\u002Frichard-brown.md","Richard Brown is the Technical Director at Audacia, where he is responsible for steering the technical direction of the company and maintaining standards across development and testing. ","\u002Fimg\u002Fauthors\u002Frichard-brown-headshot-2022-.jpg",{"path":149,"description":11,"body":150},"\u002Fauthors\u002Frichard-brown",{"type":8,"value":151,"toc":152},[],{"title":11,"searchDepth":12,"depth":12,"links":153},[],"authors\u002Frichard-brown","ddr2beGclLK9074OplU1gm3Hm3XiCvTZLmJosfMG9CQ",1778145943883]