Skip to main content

What does TDD really mean?


Test Driven Development is... everything. Before we get into specifics, let's consider some advantages of TDD. One major pro is that TDD allows us to easily update software to include new business rules. This directly impacts scalability. Additionally, debugging becomes less painful; we are forced to think critically about what we want our code to actually do; TDD makes us simplify our code, resulting in a quality, clean, maintainable code base.

So how is TDD done? There is an idea called Red Green Refactor. "Red" means that we create our test to fail. I like to go ahead and set up my dependencies, implementation method signatures returning null and any method level documentation. Now we write the tests. I'm a fan of JUnit and Mockito for Java and Mocha for Javascript. When you write tests, consider carefully what you want the code to do and account for negative scenarios like bad user input and empty data sets. Naturally, the tests will fail because we return null in implementation. Next, we minimally fill in our implementation code just enough to get the tests to pass. Now that we have red and green, it's time to consider how our code is behaving and can we optimize. You guessed it! Refactor time. A few questions to ask yourself here might be: Are my tests isolated? Can I reduce duplicate code in either test suite or implementation code? Do I have negative tests?

Good test driven development practices will strengthen the foundation of any application or service and allow for scalability. To further understand TDD consider the following topics: AAA(arrange, act, assert), Unit tests, Integration tests, System tests, Performance tests, User acceptance tests, Black box testing. 

Comments

Popular posts from this blog

Why Do I Code?

I've been a paid technology professional for half a decade and this is not my first career. Why do I bother to learn new tech and torture myself with daunting task after daunting task? Well, the brain exercise is great and so is the ultimate sweet satisfaction of writing and deploying a thing that works. I love the alchemy of it all, to forge interactive material FROM NOTHING that can change how we behave is the closest thing to magic we have... other than real magic of course. The overwhelming truth here, is that I code to bring my ideas to life. I wanted to be able to communicate my "million dollar ideas" effectively and drive innovation. Here's an idea, what if we could harness the power of traffic, like wind or water? There may not be a pure software solution for that, but I feel like I need to put that one out there. The idea that motivated me to get into tech, though, is about connecting crowdfunding and publishing/royalty distribution. I called it SoundStock, n...

Accessibility Is For Everyone

  Years ago, I attended a virtual conference sponsored by Microsoft where accessibility was the topic.  The idea was that we will all require some level of enhanced accessibility at some point in our lives, so we should design and build things for our future selves. Prior to this I had only thought of ADA compliant designs as a "ToDo" for others, though still a priority. I keep this new perspective with me and welcome opportunities to evangelize.  I recently found a website that stood out to me as real champion for accessibility. This site allows the visitor to dial in whichever option(s) they need and to variable degrees. Typically we'd have to rely on the browser or perhaps the operating system itself to specify, or in better scenarios search the page for accessibility options. Kudos to nc.gov  for making this easy to find and easy to use.

I Used ChatGPT At Work Today

AI has been fun, interesting, a little bit scary and today, useful. I was having trouble constructing the perfect regex involving a variable number of commas. After spinning my wheels for about 15 minutes and spending another 10 sifting though stack overflow posts, I thought to give ChatGPT a try. It worked like a charm, complete with examples and a detailed explanation.  The possibilities are endless. Does this mean we can (or will soon be able to) create anything we can think of? These are exciting times. Here's how I plan to dive in (courtesy of ChatGPT): Understand the basics: Start by familiarizing yourself with the basics of AI, including what it is, how it works, and its applications in various industries. Learn programming: AI is based on programming, so it's essential to learn programming languages like Python, R, Java, or C++. It's also crucial to understand data structures, algorithms, and software engineering principles. Explore machine learning: Machine learnin...