Improve Your Custom Software with Test Driven Development

In this blog, I would like to discuss a topic that is often overlooked and not because of lack of available literature, there is tons of materials and books available, but because it really has to do with a state of mind, an open mind and realizing the benefits in the long run. Working as a software developer for the past 14 years has given me a lot of situations and food for thought on how to improve and deliver software that is high quality and well tested.

The Problem

Testing is a dirty word. Both the clients and developers understand the importance of it, but it always seems like deadlines and ‘more important’ things get in the way. Often times the software would get delivered to UAT with the expectation that the client would catch and report issues and bugs. If the UAT process is not as robust as expected (and that happens often) the final outcome is buggy software that has been deployed to production. The frustration and stress skyrocket at this point for both sides. Developers are scrambling to fix issues and the clients are unhappy and disappointed. Obviously, something is lacking in this process and there are certainly ways and steps that can be taken to improve it.

An Open Mind

There are many things that can affect the overall quality of custom software. I have discussed some of them in a previous blog and how some of them can be resolved by using the Agile methodology. In its, core Agile is tightly coupled with Test Driven Development (TDD) and it goes hand in hand with the software modularity, constant measuring, and checks. So what is test driven development and why should one consider it?

A very simple explanation is that TDD requires writing one or multiple unit or integration tests that ensure a piece of functionality (code) is working properly. Tests are simplistic in the sense that they perform straightforward tasks, for example, checking values for equality or making sure that a specific functionality is executed. The developers would write a test and then the minimum amount of code to ensure it is passed. The initial code is further expanded with more logic and more tests that support this new logic are also developed. So every step of the way code emerges with tests that ensure everything is working correctly. More importantly, if anything should change in the code in the future, a failing test would immediately prompt that a bug has been introduced. We often tend to concentrate on the ‘new’ without realizing something else in the system has been affected. This is where TDD is invaluable because an issue becomes apparent right away in the development process rather than being caught in UAT or much later in production. The tests are the knowledge base for your software that will keep expanding as the system is expanding. Does TDD require a little bit more development effort? Certainly, but keep an open mind because the long term benefits and cost outweigh the initial investment.

The Benefits

If you are considering having a custom software developed, make sure that TDD is part of this process. Don’t shy away from it thinking that it will take longer or that it will be more expensive. In fact having a poorly tested software delivered to production will cause much more expenses, stress, frustration and time. TDD would make apparent and crystal clear what parts of your system are working and what have problems. Isn’t it better to have confidence in your system rather than always having the nagging feeling of the next bug lurking like a time bomb waiting to explode? At KTL the customer satisfaction is a number one priority and the development team has successfully applied Agile and TDD methodologies on numerous projects.

KTL Solutions is a highly accredited company for their custom development procedures and skill. Looking for custom development or have questions for developers? Contact Svetlana via or by calling 301.360.0001.

SVETLANA DUDINA-CHESHMEDJIEVA | .Net Business Solutions Team Leader

Svetlana provides project direction, oversees tasks and project work orders, and is responsible for delivering projects on time and on-budget. She works closely with the whole development team, provides guidance and ensures that the latest technologies are being utilized as well as the Agile and test driven methodologies are followed. She has been involved in all aspects of the application development lifecycle including architecture, design, development, implementation, testing, troubleshooting, deployment and documentation. She has extensive knowledge in building custom web and windows applications as well integrating existing systems. Svetlana has more than 13 years of experience with nine years of .Net development. She is proficient in technologies such as C#, ASP.NET, Microsoft SQL Server and Transact SQL, Entity Framework, WPF, WCF, Windows Services, jQuery and javascript. She has gained more than 7 years of experience with solutions, integrations and development revolving around Microsoft Dynamics Great Plains and CRM. She is always eager to learn the new and latest technologies as well as resolving complicated and challenging development or design problems.

Share this post

Related Posts