Just like with the development of serverless applications, their testing involves a paradigm shift from testing traditional software applications.
The main serverless architectural traits behind this paradigm shift are:
- Use of cloud-native services that have no local equivalent (see [[A fully local development workflow is impossible for most serverless applications]])
- [[Event-driven architecture]] necessitates asynchronous data flows and [[Asynchronous data flows are more complex to test]]
- [[Configuration constitutes a significant share of a serverless application's codebase]]
There are many [[Pains with testing serverless applications]] that both new and experienced serverless developers experience. Many of these challenges are due to the more general challenges brought from [[Testing microservices]] and [[Distributed systems]], whereas some are new to serverless.
But before deciding on "how" to test your application, it's important to reflect upon "why" you are writing tests in the first place. If the overall goal is to identify bugs before they get to production, then you need to understand the [[Failure modes of serverless workloads]].