The best-known example of chaos, as in chaos theory, is the butterfly flapping its wings and setting off a reaction that culminates in a tornado on another continent. The underlying concept is that the world is more complex when viewed close up than remotely, and that applies to computer programs and software testing too. Applying a little chaos theory can help in understanding the use of software testing tools in situations where systems become disorganized and ultimately unmanageable. Complexity theory, the follow-on, so to speak, from chaos theory can then help in managing situations with a large number of subsystems.
A Bit More About Chaos Theory
Chaos theory in mathematical terms explains that it is possible to get random results from well-defined equations. Small occurrences can significantly affect the outcomes of apparently unrelated events. Chaos theory also goes by the name of ‘non-linear dynamics’. So working backwards, the idea is that it may be possible to detect underlying structure and connections in complex systems that on the face of it do not show any particular order. Global economic and education systems are further examples of chaos theory in action.
The First Chaos Theory Software Experience
Edward Lorenz, a meteorologist, discovered the effects of chaos theory when running a computer program to model weather conditions (he was also the author of the butterfly-tornado example above). He ran the program, stopped it halfway through, then resumed it from that point using what he thought was the halfway result from the program. The results were significantly different from a previous run that had used the same starting point. The reason was alarmingly simple. Instead of using the exact halfway result of 0.506127, he had entered just 0.506. The minute difference was enough to cause large differences afterwards.
Chaos Theory and Software Testing Tools
The results from deliberations about chaos theory and software are explanations why software can become unpredictable, why top-down views (architecture) cannot be dissociated from bottom-up views (lines of code), and a principal rule of resolving the most important issue first. Understanding these issues can encourage a software tester to recognize the need to dig deeper into systems, the possibility to trace strange behavior back to a deterministic cause, and the need to be precise about the conditions that provoke error situations in software.
Meet the Chaos Monkey
While software testing might want to understand, manage and contain chaos, some people have thought up another application of chaos for software testing tools. Netflix built a program called Chaos Monkey that deliberately provokes failures in software systems in the cloud. The idea is to get any bad news about possible failures in a way that allows software engineers to react ahead of time. Chaos Monkey was built for Netflix’s own needs when using Amazon Web Services as the infrastructure for its business. It runs around the network, randomly pulling plugs out in a virtual sense and stopping virtual machines from working to see what needs to be fixed in the system to make it more resilient.
Finally, Automated Testing and Chaos are Not Incompatible
There’s still a place for automated testing with software testing tools in these times of chaos. Correctly combined with manual approaches, automated testing can then yield valuable results in areas like in randomized testing (like Chaos Monkey), capacity assessment (simulations of large user groups), and structural testing (between different parts of a system), to name just some examples.
If you’d like to know how Testing Anywhere, the automated software testing tool , can help you and your team to higher efficiency and better results, try a free Testing Anywhere trial to see what it can do for you.