# [[Types of chaos experiments]] A chaos experiment is an activity designed to test the way a system responds to failures by inducing the failures in a controlled, methodical way. The use of the word "experiment" emphasizes that these activities are carried out with scientific rigor. Chaos experiments can encompass the following specific tests, usually using purpose-built tools. ## Resource Resource attacks involve artificially using increasing a server's CPU, memory, disk, or I/O to see how it responds. ### CPU ### Memory ### Disk ### I/O ## State ### Shutting down instances randomly [[Chaos Monkey]] Sometimes developers hardcode references to environments, and they shouldn't. ### Time travel Changing clock time on servers to test for daylight savings or how to handle expired security certificates ### Process killer ## Network ### Blackhole A blackhole attack drops targeted IP packets at the transport level, effectively shutting off communication to and from a component. ### Injecting latency Purposefully increasing the latency (or response time) between components ### Packet loss and corruption Mimics poor or mobile internet connections by seeing how components or the whole application responds to missing or faulty data. ## Fault Injection - [[AWS Fault Injection Simulator]] - [[Gremlin]] makes a distinction between "ALFI" (application-level fault injection) and "ILFI" (infrastructure-level fault injection) - Creates a "small blast radius" experiment that induces a very small and specific failure. ## References - [[Chaos Engineering Bootcamp with Gremlin]]