The simplicity thesis

My thoughts on automation engineering

 

Continuous Testing

re•li•a•ble - adjective
Consistently good in quality or performance; Able to be trusted
Giving the same result in successive trials


  1. The idea of continuous testing has its foundations in the philosophy and practices of Toyota in the early 50‘s. Based on the principles of W. E. Deming the engineers from Toyota have realized that the only way to ensure the overall reliability, is ensuring reliability at the lowest possible level. In other words, when Toyota builds a car using thousand of components and millions of electrical transistors, they don‘t need to test every single car to know that it will works as expected. Since the quality has been built in to the process and since that every single component has its own reliability, they just need to inspect it. Assuring reliability at lowest possible level, helps to reduce risks, continuous improve the process and eliminate waste. This is why in the 1970s sales of Japanese cars began to eclipse sales of U.S.-made cars. They were much more reliable and cheaper that their U.S. counterparts.

  2. Another - and also my favorite - principle followed by Toyota is called „Jidoka“ - Japanese for „autonomation“. It refers to the philosophy that quality always takes precedence. In the meanings of automation, Jidoka means that when a machine detects a problem, it will stop production automatically rather than continue to run and produce bad output. Toyota refers to every process, whether human or automatic, being enabled or empowered to autonomously detect abnormal conditions and stop. With that any employee has the authority to stop the production to signal a quality issue, even if the process chain is fully or semi-automated. This is from where the famous continuous integration speech „If the build fails stop the line“ came from :-)

  3. So as a bottom line, if we want to build software that are truly reliable, we have to assure reliability at the object level. which can only be achieved through successful unit testing. Of course that only unit tests doesn‘t necessarily guarantee reliability. I have worked in some software projects where thousands of unit tests were  successfully executed but in somehow the system behavior stills fails. The test must effectively exercise the use of the object in the meanings of a context; moreover, the test must be run often and provide feedback as fast as possible.

  4. The next picture illustrates my old concept of continuous testing implemented @ QuestBack