When you think of the business world, especially when it comes to something as high in specificity as software and digital programs, the last thing that comes to mind is chaos. It would seem that creating order and control is what would be at the top of the priority list of companies that are in this industry; however, there is a rapidly growing sector of the industry that focuses on creating a form of chaos that actually works towards producing more effective products. It is called chaos engineering.
On the surface, the explanation of chaos engineering is pretty simple. Chaos engineering is the process of breaking down existing devices and programs by using extreme conditions and mechanisms in order to determine why the product does not work the way he was designed to work. Chaos engineering can be viewed as a form of extreme reverse engineering in which something is purposes destroyed from the outside in to extract its non-functioning or poorly functioning components.
When speaking with the people who actually do this for a living, it appears that the process is also fun. Imagine getting paid to break stuff. Basically, the technicians that carry out chaos engineering break things repetitively until they get them to work at a very high level. As the chaos engineering concept continues to envolve the idea is to reach a point in which devices and software can be broken down and reconstructed to the point in which they not only work at a high level but they continue working. So, I guess you can say that at its apex, chaos engineering will be the science of breaking things so that they will not break again. I know, it sounds absurd; however, there is a wealth of empirical and pragmatic data that supports that chaos engineering is highly effective, and the effectiveness of the approach is improving at an exponential rate.
The challenge that chaos engineers face is that of finding ways to break things so that the performance is not degraded by enhanced. So, while these engineers get to purposely break things, they can’t take an arbitrary approach. Basically, at the end of the day, it seems that even chaos has a certain level of order.
For instance, Netflix uses chaos engineers to test its streaming systems, but they don’t want their system taken down by engineers that are trying to break it. This means that the engineers have to find a way to create the chaos without actually taking out the system. Now, this is where the order is introduced and infused into the chaos.
It is important to understand that chaos engineering, while highly valuable, should not be viewed as a replacement for the traditional testing approaches and concepts that have been used for years. It should be viewed more as an extreme supplemental mechanism that allows companies to push the limits of their testing procedure to ensure that their products and services are able to withstand the most extreme of conditions. This is why the future of chaos engineering has infinite potential. It will be exciting to see where it goes from here.
In a traditional sense, software testers have used what is known as a unit test, which is a process in which test code is written in order to test a specific section of code — a unit — to make sure that it is functioning properly. Unit testing can be used to check any specific point of coding, from the login to the checkout, with exceptional specificity as to what is being tested. One of the challenges that limit unit tests is that the coder who writes them has to be exceptional, so they are highly-relative to the individual coder — leading to varied results based on the quality of the code that is written (No universal standard).
Additionally, unit tests are not able to check for any issues that the test developer has not thought of and written into the test. With chaos engineering, it is possible to discover issues that were not initially considered prior to the initiation of the test. The great thing is that chaos engineering can be used in conjunction with unit testing to produce a more comprehensive response to problematic software programs. Even greater is the idea that we have only scratched the surface of what is possible with chaos engineering.