Author Date Comments
Emmanuel Odeke (Orijtech Inc) Tue-March-28th-2023

Preamble:

Test Driven Development is a software methodology that ordinarily focuses on ensuring that before code is written, tests and scenarios are written to exorcise that code. It is iterative and requires one to know the behavioral constraints. In this lecture/talk we shall see how to incorporate tips and methodologies so as to get more effective, safer and more productive with your code, preventing future regressions!

https://giphy.com/gifs/marvelstudios-marvel-avengers-3oxHQrAmG6bd6RRh4s

Modification:

In practice that can be constraining given that APIs can be changed often. One hybrid methodology is to ensure that along with your code, ensure that you have written tests.

Tests are meant to be your reasonable assurance and insurance that when code is modified, that subtle, fickle edge cases won’t take down your services in production. The better control you have over your logic and the more tested it is the easier it becomes to trust your code and be more reliable.

In writing your tests, ensure that your network calls are constrained within the local test and work end-to-end. You can usually setup a mock HTTP or gRPC server that can be hit from the client.

One tip to understand is that for better control of your code and to make it more malleable you’ll need to make it as hermetic as possible such that you can make local modifications as much without disrupting production services nor requiring a complex test harness.

The biggest problem that hinders bullet proofing of code is the lack of knowledge, lack of agility and finesse to write rigorous tests. The tips garnered from here will help you become much more productive and increase your knowledge, on the way from zero to hero!

Problem motivation:

Current software development processes are fickle, need to be scaled up, increasing the number of software developers able to work on different pieces and rapidly change the code without brittle/fickle pieces falling apart, while preserving specifications and behavioral expectations. Writing great tests and increasing coverage ensures that the code base is bullet proofed against bugs. With every change comes some unintended consequence which if not caught early can cause catastrophes later on!

Constraints that hold software developers back from effective TDD: