6 ways to test in Prod.
A/B testing
With an A/B test, you deploy two versions of the same functionality; some users see either the "A" or the "B" version.
You are then able to see which version of the functionality performs best.
Use this when deciding between two different approaches for how something.
For example, you might try two different customer registration forms to see which is more effective in driving sign-ups.
Canary release
You allow some of your users to see the new functionality release.
If this new functionality works well, you can increase the number of users who see it until all users can see the new version.
If the new functionality doesn't work as intended, you will only affect a few of your users.
You can either revert the change or try fixing any problem.
Parallel run
You execute two similar implementations of the same functionality with a parallel run.
Any request is routed to both versions so you can compare their results, although the user sees only one.
This is very useful when we want to understand better the change, such as how it is performing.
Smoke Tests
You run these after deploying your new version in Prod, but before releasing it.
These tests are often automated and can go from very simple activities (is a service running?) to executing complex operations.
It acts as a quick validation step to catch major issues early.
Synthetic transactions
Fake user interaction with the system.
It's often very close to the end-to-end test you might write.
Placing an Order is a great example.
Chaos engineering
Chaos engineering is the injection of faults into a production system to ensure it can handle it.
The best-known example of this technique is probably Netflix's Chaos Monkey.
Chaos Monkey can turn off virtual machines in Production. The idea is that the system is robust enough that these shutdowns don't interrupt the end user.
A couple of things to consider:
• Set some fake users in Production.
• If you order products, make sure they are fake (you don't want 200 sofas arriving at your head office).