Testing

Testing is the process of evaluating and verifying a software program to identify any bugs, defects, or deviations from its intended requirements. It involves executing the program under controlled conditions and analysing the results to ensure it

Purpose

The purpose of this testing is to ensure that a system behaves as expected under real-world conditions. Automated tests can capture a lot of issues but they also cannot validate everything such as user experience problems, unstable dependencies or edge-case scenarios.

Context

Industry Context

There is a direct correlation between the perceived quality and availability of software and business outcomes, as shown in the DORA research.

ZeroBlockers Context

The goal is for teams to work in a continuous deployment model, where they can release software after each commit. This means that there is no blocking testing phase. However, this does not mean that testing is not important, it just means that it happens in a different way. It is still crucial to have a good testing strategy in place to ensure that the software is of high quality and that it behaves as expected.

Methods

MethodDescriptionBenefits
Dark LaunchingReleasing features to production without user visibility to test performance and stability.Validates backend changes under real conditions without affecting user experience.
Testing in ProductionDeploying new features hidden behind flags, enabling testing in live environments without exposing them to all users.Allows safe testing in production with a bonus that it enables staged rollouts and A/B testing.
Exploratory TestingUnscripted testing focusing on discovering bugs by exploring software functionalities without predefined tests.Encourages creativity and intuition that can uncover subtle issues.
Chaos EngineeringIntroducing controlled disruptions to systems in production to test resilience and failure recovery processes.Improves system robustness; identifies critical points of failure.

Anti-patterns

  • Launching to Production without Flags: Releasing features to production without hiding them or testing them in a controlled manner, risking user experience and system stability.
  • Skipping Exploratory Testing: Relying solely on automated tests and missing out on the unique insights that human testers provide.
  • Blocking Test Phase: Holding up the release process to conduct extensive testing, delaying the delivery of value to users.

Case Studies

Was this page helpful?

Previous
Automatic Rollbacks
© ZeroBlockers, 2024. All rights reserved.