The pace of digital transformation just went up

Digital transformation must happen faster than anticipated. These days, there is more dependency on applications to perform, with more customers consuming services concurrently and teams working remotely. Customer experience, communication and security are major factors in businesses’ ability to provide quality products to their customers.

 

Impact is felt everywhere

As mentioned above, this rushed digital transformation brought on by the current world situation has caused many changes that require urgent attention.

  1. Increased dependency on online systems for everyone: from experienced IT users to seniors and pretty much every person on Earth now uses IT solutions to coexist and develop themselves.
  2. Customers of these digital products have greater dependency on responsive systems. They also have a multitude of alternatives if the system you offer does not excel.
  3. Not only customers but employees also depend more than ever on the organizations’ infrastructure and IT solutions to perform. Any impact on them will severely decrease their productivity.
  4. On top of that, the people working on these systems are not only depending more than ever on remote work capabilities, but also require reliable environments to do their work, whether it’s development, testing or any other SDLC task.

A barrier to quality

One of the biggest barriers for organizations’ to be able to ensure the quality their users expect is to have reliable and adequate test environments.

Test environments consist of three components:

  1. The applications, code and 3rd party software components and services, all need to be in the right versions.
  2. The correct data sets for any SDLC process, especially for testing.
  3. The infrastructure that the software needs to be on – computers, network, security – whether in a private data center or in the public cloud.

 

Quality assurance processes are severely impaired when any of these three elements is defective.

To execute adequate QA practices, the environments used require:

  • To have the right application, such as versions, code, configurations, etc.
  • Have the needed datasets. Some require production, like datasets or auto change roll back.
  • Adequate infrastructure. Many QA processes require infrastructure to match prod.

Current approaches to test environments

Manual setup

 

Test environments are usually set up manually. This means needing to wait for someone to provision, set up the infrastructure, install needed software or apply the right solution versioning, and configure the environment.

This is a considerable bottleneck that also creates several issues. Most of them stem from the dependence of human interaction and manual execution of the tasks needed.

The first limitation is speed, as the manual processes are bound by human bandwidth limits. The second is the proneness to human error, as often steps are forgotten or erred. And third, not to mention the difficulties this approach poses for repeatability.

 

Static environments

Even as some organizations tend to move environments to the cloud, they still work on them as if they were an on a prem solution. In other words, static environments.

This counters most of the extended benefits of having your solutions on cloud environments. Since those static environments still pose the above-mentioned difficulties and error prone tasks that limit any added benefit.

 

Ad-hoc automation

The other solution is to try to implement some automation processes to the environment creation. Without an organized framework and a solution that eases this automation process, the task can become quite complex.

 

Done ad-hoc, this task will require specialized knowledge, advanced coding skills, maintenance tasks that are hard to sustain, and the list goes on.And for all practices, the decommission tasks for the environments need to be clean and easy as well in order to be sustainable.

Current status of QA

As well as environment management, multiple organizations are following obsolete QA practices that provide impaired results. These practices urgently require to be modernized to fulfil project needs leveraging as well as modern technologies and practices.

Some of these obsolete practices focus on manual executions, excessive amounts of front-end automations, intense focus on execution/defect counts, almost no attention to unit and service test automations, limited test environments that have considerable conflicts to be shared by different QA efforts, and the list goes on.

Most of these obsolete practices decrease the productivity of the QA areas and their capacity to produce meaningful results. In addition, these practices become unmanageable when the project is being managed under any agile methodology. The time and effort required is unmaintainable sprint by sprint and even a hardening sprint will prove to be insufficient.

QA needs to be tackled in a different way, a modern way that requires a different mindset, available environments, tests integrated on the solution and many more.

The desired state

All the mentioned practices and limitations above are considerably affecting the productivity and capacities of multiple organizations, worsened by the current pandemic situation around the world.

Organizations nowadays need more than ever to catch up on these best practices and environment capabilities. This will boost their productivity and fortitude towards change during these difficult times.

Modern QA practices and available automated on demand environments are key elements for a successful digital transformation and even digital survival.

Some of those modern QA practices that should be implemented are:

  • Stop focusing on front end automations and defect counts as QA progress metrics.
  • Prioritize QA automations according to the automation pyramid.
  • Wide coverage on Unit and code embedded automations, limited automation coverage on service tiers (API) and minimal amounts on front end and manual limited to critical processes.
  • Utilize production testing practices leveraging multiple prod environments, release patterns and feature toggles embedded in the code.
  • Enforce automated feedback from prod and tested environments into the productive and developed code.
  • Allow automated environment replication and generation to enable multiple and parallel QA practices.

These best practices rely heavily on quick and efficient environment availability with fidelity of their replication patterns.

There are multiple requirements as well for these environments:

  • Easy to bring up. Even the automated process that bring them up should be transparent, almost invisible.
  • Quick by leveraging automated processes that can bring them up almost as soon as they are needed.
  • Reliable, bringing easy exact copies of any other environment or instance.
  • Easy to decommission, as after any QA task is performed on them, no resources should be wasted keeping the environments on.

The benefits of QA modernization

Traditionally, to go through the whole cycle that has been described, the step flow consists of three phases.

  • Provisioning the QA environment (Instantiating it with all the right components)
  • Executing QA processes (manual, unit, integration, functional, performance, etc.)
  • Tearing down the environment (gather results, replicate needed changes, erase, turn off)

Each one of these phases tends to be long, complicated, and painful.

 

But with proper environment automation practices, the duration of the first and third phases is considerably decreased. Not only that, the organization earns the capacity of adding and decommission them on demand.
Adding to that, with the best modern QA practices, the duration of the initial, middle and processes of the last phase are greatly shortened. With automatic validations, code integrated tests, feature toggles, release mechanisms and many more, the QA process is optimized and hence its duration is greatly shortened.
And the cherry on top is that all the environment creations, defect detections, executions, and actions from the results to be done on the environments, can be automated as well, decreasing the need for interventions.
A great state that surely multiple organizations would love to achieve.

What would be the process?

The process to achieve this status and best practices is:

1.  Set up (only once!). To get started, you need access to the infrastructure, which is the basis of infrastructure automation, whether on-premise on in the public cloud. This is not always trivial – if you do not own the infrastructure you need to get the owner involved or get ownership.

2. Environment blueprint creation. Developing the automation plan for setting up an environment. The more repeatable the blueprint is, the better value is achieved from the automation It is possible to significantly increase reusability

 

3. Test environments on demand. Leveraging the blueprints, you will be able to instantiate any environment you need. Being from production, the latest version of dev or any intermediate state that you might need to use.

4. Execute tests. With modern QA practices, your environments will be instantiated with QA automations integrated that can start executions immediately. Even manual or production test

5. Fix-pass criteria. As the tests are executed, the pass and fail validations are automatically processed, even from manual executions, these can be typed and added as input for automated pass-fail processes.

 

6.Blueprint update. If the testing processes detect that any changes need to be done to the tested environment, the fixes are applied, and the respective blueprint gets updated with any relevant fix. In an advanced state, the blueprint is kept together with the code. It needs to be changed when the environment architecture changes, but by following best practices this would not happen very frequently – since the blueprint should not hold hard coded information or artifacts.

7.Decommission. The environment is automatically decommissioned. Erasing and turning off any component used, stopping there any further resource waste of any kind.

 

Conclusion

To be able to tackle modern QA best practices and optimize their quality processes, organizations must evolve in multiple manners. They must let go of obsolete QA practices and optimize their efforts. But to complement those modern practices it is useful to be able to make them on demand, quickly, parallel with other QA processes if needed – all done in a fast paced and automated flow of steps.