7 ways to build a robust testing in production (TiP) practice

7 ways to build a robust testing in production (TiP) practice

This story highlights the importance of ensuring that the testing environment matches the production environment precisely. Even seemingly minor differences, like a BIOS setting, can lead to unexpected issues. The point is that any disparity between test and production environments can cause significant problems.

In reality, maintaining test environments as consistently as the anecdote is challenging. Despite this, production systems often behave as expected. Why?

One reason is the increasing adoption of Testing in Production (TiP). In TiP, code is tested directly in the live production environment after release. Ongoing tests are conducted during regular operations, and issues are identified and addressed promptly. TiP has become a standard and crucial practice in modern web development organizations.

Robust Testing in production (TIP)

The role of QA professionals is evolving, particularly with cloud or web-based applications. Instead of solely focusing on finding bugs in a specific software release, testers now act as guardians and stewards of the entire development process. Their goal is to ensure that defects are identified and resolved before reaching the production environment.

Testing in Production (TiP) plays a crucial role in this shift. It doesn’t replace traditional testing but complements it by introducing test procedures that are best conducted in the production environment. As demonstrated in the earlier story, replicating an exact clone of the production environment for testing can be challenging, making certain tests more meaningful when performed directly in production.

TiP offers a structured approach to conducting tests using the live site and real users, as this is the only way to obtain meaningful results for some tests. There are various types of TiP that software testers should be familiar with, each serving a unique purpose in enhancing the overall testing process.

Canary testing

Before organizations like PETA existed, coal miners used to bring caged canaries into mines. If there was poisonous gas, like methane, the canary, being more fragile, would succumb before the humans, serving as an early warning system. In simple terms, if the bird died, it meant danger.

In Testing in Production (TiP), canary testing involves deploying new code to a small subset of production machines before releasing it widely. It’s similar to a smoke test for Software as a Service (SaaS). If these machines continue to function as expected with live traffic, it provides confidence that there’s no hidden issue, and the full deployment can be approved.

Controlled test flight


In a canary test, you’re checking hardware, but in a controlled test flight, you’re testing users. In this type of Testing in Production (TiP), you expose a chosen group of real users to software changes to observe their behavior. For instance, if your release involves altering your app’s navigation structure, and you’ve already conducted usability tests, a controlled test flight allows you to test it with a specific group of users before making it visible to everyone.

You implement the change but limit its exposure to a particular set of users. By observing how they interact with it, you can assess if everything goes according to plan. If it does, you can then extend the change to a broader audience.

robust testing

A/B split testing


At times, you might not be certain about user preferences, and the best way to find out is by observing their behavior. A/B split tests are commonly used in web-based apps as an effective way to use user behavior data for decision-making. In this scenario, you create two (or more) experiences – the “A” experience and the “B” experience – and expose an equal group of users to each experience. Then, you measure the results.

A/B testing is a powerful tool when used correctly because it enables a development organization to track user preferences accurately. While it requires more effort and coordination, the benefits can be substantial when executed properly.

Synthetic user testing

Synthetic user testing means creating and overseeing fake users that interact with the actual website. These users follow predefined scripts to perform different functions and transactions within the web app. For instance, they might visit the site, browse an eCommerce store, add items to their cart, and proceed to checkout. While these scripts run, you monitor relevant performance metrics of the synthetic user to understand the kind of experience real users are likely having.

Synthetic monitoring is an essential part of any website’s strategy for monitoring the performance of its applications.

Fault injection

Here’s an interesting, though perhaps unsettling, concept: intentionally create a problem in your production environment to see how well it handles it. This is the idea behind fault injection. Despite having safeguards in place to protect against certain errors, it’s crucial to actively test those processes.

Netflix is well-known in testing circles for its Chaos Monkey routine. This service randomly shuts down a virtual machine or terminates a process, introducing errors that the service is expected to manage. Surprisingly, this approach has significantly improved the reliability of the application and keeps the operational staff alert and responsive.

Recovery testing

Similar to fault injection, it’s crucial to ensure that your app and organization can bounce back from a serious problem when necessary. Some procedures, like switching to a backup site or recovering from a previous backup, are rarely tested in production environments. Recovery testing involves practicing these processes.

Think of it like running fire drills for your app. Choose a time when usage is low and put your environment through the challenges it’s supposed to handle. This ensures that both your technology and your team can manage real problems in a controlled manner, providing confidence that they’ll handle unexpected issues properly when they arise.

Data-driven quality

Lastly, and this is probably obvious, establish systems that allow your QA team to receive and analyze operational data for quality measurement. Ensure that testers can access logs, performance metrics, alerts, and other information from the production environment. This way, they can actively identify and address problems, taking a proactive approach to maintaining and improving quality.

Conclusion

Testing while people are actually using the app can be super helpful, but it has its risks. Not testing with real users also has its own dangers. But if you make good rules for testing this way, it can make the app much better overall. It’s like trying out a new game with friends before releasing it to everyone. There are risks, but it helps make the game really awesome!

You can visit our site TechMe Today to get more tips. We hope this tips are helpful.

Related Posts
Leave a Reply

Your email address will not be published.Required fields are marked *