Testability is key to successful software delivery.
It is impossible to write software without bug. Therefore, we can do two things. Firstly, improve architecture, design and coding best practices to reduce number of bugs. Secondly, ensure that software code is testable to identify bugs. Let’s focus on the second part.
If we consider all functional, non-functional aspects of software system inside a black box, then output parameters of the black box should provide information of maximum possible states within the black box. This is precisely the “Observability” criterion defined in control theory. This is analogous to the measure of “Testability”. The key is to improve coverage of testability.
So, the next area of focus is on “how to improve coverage of testability”. This is where the simple mathematical concept of “Orthogonality” comes into mind. Orthogonality is an excellent measure of independence or lack-of-coupling (or, less-of-coupling) between components inside the black box. Mathematically, orthogonality measures independence of bases functions. Trivially, if we say X and Y axes are orthogonal to each other, it indicates X and Y are having no projections onto each other. In software programming sense, it means independence in terms of context.
Therefore,improvement in orthogonality shall improve test coverage. I recommend that “measure of orthogonality” be included in the software architecture, design, and coding best practices. As an example, the design and review group must have a template with the “measure of orthogonality”. The measure of cross-dependencies of various interfaces within the black box would indicate “measure of orthogonality”. There are many other indicators.
by: Hemen Goswami