“I need a faster feedback loop.”
You chose serverless so you could move quickly. Not having to manage servers and outsourcing your scaling concerns to AWS frees up a large chunk of your time to focus on delivering real value for your users.
At least that’s the story you were told.
But when it came to building out your first serverless application, you realised that this stuff still needs testing as there’s still a lot that can go wrong. And what’s more, your existing approaches to testing your code are no longer as effective.
You could run local simulators of cloud-native services, but these aren’t like-for-like and many cloud services don’t have a local equivalent.
So you start writing more integration tests against the real cloud services. But this is a slooow process. Having to redeploy your code changes to the cloud every time is a productivity killer.
You can speed things up by mocking out all the cloud service calls and running everything locally. But now you’re missing out on catching the whole category of “configuration error” bugs (IAM permissions, anyone?). And given that most of your code now seems to be simply passing data between cloud services, are these unit tests worth the effort it takes to write them?
Professional engineers move fast while minimising breakages.
It’s hard to beat that warm feeling of assurance you get when pushing a PR for a new API endpoint with a comprehensive set of passing tests against a real cloud environment. When you know the chances of it breaking the CI build or of a frontend developer or real user finding a bug in it are miniscule.
You’re a pragmatist and you understand that it’s impossible to write tests to cover every permutation. But how do you reach a sufficient level of confidence with a serverless architecture without burning hours or days on writing different types of tests?
That’s why I created the Serverless Testing Workshop
In the workshop, you’ll learn a framework for approaching testing of any serverless use cases you will encounter, along with concrete patterns for use with specific AWS services.
After completing the workshop, you’ll understand:
- How to identify test cases by applying an event-based approach to your feature scenarios
- Patterns for writing tests for commonly used AWS services such as Lambda, API Gateway, DynamoDB, EventBridge, SNS, SQS, Cognito, S3 and more
- How and when to deploy the different categories of test: unit, integration and end-to-end
- The typical failure modes that your automated tests should aim to detect
- How to structure your Lambda functions to make them more testable
- How to test configured behaviour that’s not defined inside a Lambda function
- Techniques for setting up and tearing down test data that integration tests rely upon
- How to manage configuration for your tests to maximise their reusability across developer testing and your deployment pipelines
- How to avoid flaky tests
I’m so glad I took this workshop!
I was able to apply many of the testing techniques as well as some larger architectural patterns to my professional and personal projects.
Paul was a great teacher with deep knowledge of Serverless testing and applications as a whole.
The other students were also very engaged which led to lots of productive discussions during the sessions.
While the main focus of the workshop of course was testing - which was thoroughly delivered with great insight and immediately useful techniques - I also really enjoyed that we worked with a realistic and high quality sample codebase packed with typical architectural patterns including auth, queues, event buses and streams.
I learned a lot from attending this workshop.
May 6–27, 2021
Thursday @ 4:00pm BST
Group Office Hours
4-week, self-paced video lessons with weekly office hours.
All 6 modules of video content
4x weekly office hours
Private Slack channel
GitHub repository with sample application
Testing cheat sheets
1-year access to content, including all updates
Access to office hours recordings
Get customised expert help with applying testing strategies to your own serverless project.
Everything from Group Office Hours
2x1hr private 1-on-1 coaching sessions with Paul
Can’t make the live sessions and just want access to the workshop materials?
Get immediate access to all the course videos, code and exercises for £300.
100% Money Back Guarantee
If you’re not satisfied with the workshop, you can take it again or ask for your money back within 30 days of completion and I’ll refund your full fee.
Hi, I’m Paul Swail, your instructor for this workshop.
I’m the founder of Serverless First, where I help development teams make the transition to serverless within the AWS ecosystem. I write regularly about serverless and the opportunities and challenges that it brings.
I’ve been a professional software developer/architect for almost 20 years and I’ve also been running a SaaS business on AWS since 2014.
Module 1: Fundamentals of software testing
- Why we test
- Testing levels
- Where to run your tests
Module 2: Introduction to testing serverless applications
- How testing serverless applications is different
- Structuring your test cases
- Failure modes and testing levels
Module 3: Setting up our test tooling
- Introduction to Jest
- Structuring our codebase
- Interactive debugging in VSCode
Module 4: Testing synchronous flows
- Integration testing an API Gateway Lambda handler - Part 1
- Integration testing an API Gateway Lambda handler - Part 2
- E2E testing an API Gateway endpoint
- Two tests for the price of one
- Testing an authenticated API Gateway endpoint
Module 5: Testing asynchronous flows
- Challenges with asynchronous testing
- Consuming EventBridge events
- Publishing events to EventBridge
- Consuming S3 events
Module 6 - Batch Processing and Streaming
- Processing batches in SQS
- Writing unit tests for an SQS handler
- Writing E2E tests for an SQS Handler
- Processing DynamoDB Streams
- Writing unit tests for a DynamoDB Stream handler
What are the pre-requisites for taking the workshop?
- A basic knowledge of AWS
- Your own laptop or desktop computer
- A code editor/IDE and command line terminal. I will be using VSCode in the lessons, but you can use your preferred editor.
- Access to an AWS account that you have administrator privileges for (all resources used in the exercises should be covered by the AWS Free Tier)
- Webcam & microphone for participation in weekly live sessions
How much time is this going to take?
Your average time commitment will be 3–4 hours per week. This includes time reviewing the videos, completing exercises and attending the weekly live session.
Will you be covering “testing in production” techniques?
No, this workshop is focused on helping developers write automated tests to detect defects before they get into production. While techniques and practices such as monitoring and chaos engineering can be very valuable to an engineering team, we don’t have the time to cover them in this course. More specialised forms of pre-production testing, such as load testing or penetration testing are also out of scope.
Will you be covering any frontend testing?
No. While some of the testing strategies and tools in the workshop can also be used in frontend development, we will be focusing entirely on backend workloads.
What programming runtime will you be using?
Do you offer a volume discount?
Yes. If you have 3 or more students to register, you’ll get 15% off. Just email me at email@example.com to get a discount code.
Do you offer private workshops for an entire team?
Yes. If you wish to register 10 or more students from your company, I can arrange to run the workshop privately (and remotely) for them. Just email me at firstname.lastname@example.org to schedule this.
I have other questions about the workshop...
I’d love to help. Email me at email@example.com.