Chaos Testing: Identifying Weakness in Microservices-based Applications
07 December 2020
Distributed systems evolve and create dynamic behaviour and uncertainty that produce false outputs in cloud production. System testing is required to ensure autonomous and continuous execution in presence of faults and errors. However, testing needs prior requirements, such as oracle and assertion, and it is difficult to define them due to a multitude of system states. We introduce Chaos Testing, a framework for testing running network systems in cloud productions to reveal system weaknesses and evaluate system robustness. Chaos Testing injects perturbations on the fly to disrupt system execution. We avoid defining oracle and instead, we propose an evaluation procedure with principal component analysis (PCA) method to separate normal and chaotic outputs of the system. Based on the outputs, Chaos Testing helps developer to decide which execution leads to system failure. We apply Chaos Testing to a real-world use case in cloud environment to validate the practicability of our framework.