logo

Emergent Load Testing: Rules for Organized Chaos

2023-04-19

Authors:   Nicole van der Hoeven


Summary

The presentation discusses emergence and its application in load testing. It also explores the concept of generative code and its potential benefits. The speaker emphasizes the importance of diverse and quality input in training AI for emergence.
  • Emergence is the evolution of the whole beyond its parts in unexpected ways
  • Generative code sets the when, not just the what or how
  • Imperative testing is still prevalent, but there is potential for declarative testing
  • To encourage emergence in load testing, define affordances, assign roles, rate tests, and allow imperfect evolution
  • Quality and diverse input is crucial in training AI for emergence
The speaker mentions that AI can produce horrible fake news that is incredibly racist due to poor input quality. This highlights the importance of quality and diverse input in training AI for emergence.

Abstract

When we write load testing scripts against our applications, we write them sequentially: A, then B, then C. But this doesn't accurately reflect the organized chaos of a system in production, nor does it prepare the system for the unexpected. Emergence is a phenomenon where parts of a whole independently develop properties not originally present in the whole. Emergence is what helps ant workers develop roles without leadership, prompts animals to evolve adaptive traits without forethought, and facilitates non-toxic communities without moderators. The growing field of emergent software applies this swarm logic to the programs that we write. What would it take to write emergent load testing scripts? It turns out that there are a few ingredients for emergence: a large population size, opportunities to interact, feedback, and an element of control. In this talk, Nicole van der Hoeven discusses how to bring these elements to load testing by writing a script in Grafana k6 that can independently decide what requests to make next, modify Kubernetes app pods, and disrupt services based on a continual feed of results during runtime-- all without manual intervention. She shows how to wield this new breed of load testing to improve confidence in the complex systems we build.

Materials: