software testing best practices for cloud

Introduction – Software Testing Best Practices for Cloud

Each day businesses are realizing the value of moving their applications to the cloud. Software testing best practices for cloud must be addressed. While the core reason for software testing doesn’t change; you are still validating that your application is bug-free and performs well, some tactical approaches will. Many companies are also going through a shift in how they develop and release applications quickly following DevOps methodology.

This article will go over common learnings on software testing best practices for cloud and how you can validate your application.

Why cloud?

In order to apply software testing best practices for cloud, you must understand the reason why businesses are moving their applications to the cloud. There are really 3 main reasons driving this.

  1. Save Money (Pay for what you need)
  2. Scale for Performance (Real-time corrections)
  3. Multi-device Progression Connectivity (Consumer friendly)

Saving money on operational costs is probably the #1 driver for CEO’s and Boards looking to adopt cloud vs on-premise solution. The reason why cloud can save companies money is because you really only have to pay for hardware and data storage at the point in time you need it. Instead of spending upfront money on a datacenter with many idle servers for the potential of sales or volume increase. This is even more important for small businesses that might not have the needed cash to prepare for growth.

Scaling for performance is also another key reason why businesses love the cloud. If the cloud architecture is setup correctly, your application performance needs can scale automatically by your cloud hosting provider. This scaling is usually immediate to account for spikes in traffic or application use. This removes the possibility for downtime for adding more servers and/or network changes.

As more devices(mobile and tables) are dominating the market, the need for businesses to support multi-device progression is needed. For example, if you have a sales lead from a mobile phone app and the potential consumer feels it might be easier for them to do complete purchase on their tablet or PC; businesses need to provide a continuous flow so they can pick-up where they left off. A cloud deployment is preferred to push data as your mobile, tablet, and website applications can connect to the same data source quickly and in real-time.

What doesn’t change?

The concept of software testing for cloud vs on-premise doesn’t change. You still need to validate a fully functional application prior to deployment in production. You still need a test plan, you still need test data, you still need test execution, you still need to identify costly bugs and fix them.

What changes?

So if the concept of software testing doesn’t change, why am I reading this article…

The changes come in place from a cultural perspective on who validates and technical validation changes. From a cultural perspective, your traditional software testing shifts from more of an execution method to a partnership and understanding of your cloud provider SLA (service level agreements). Since many deployments are hosted by the cloud provider, many of the traditional quality bugs fixes and security updates are now owned by cloud provider. You will also have to adjust to the reduced level of data access you will have with some cloud services such as PaaS (Platform as a Service). Many cloud providers will not give you access to environments that are shared with other clients they have.

To understand the changes needed, you must split up some common practices. The practice of software development vs software deployment.

Software Development and Deployment Changes

For cloud native solutions, cloud hosting providers offer many different services to help software engineers meet their requirements. Many of these services are pre-built, hosted, and managed by the cloud provider. Instead of the traditional software development, new ways of building code by leveraging hosted and managed services are being utilized. For example, instead of software engineers opening up visual studio and SQL management studio and starting from scratch or GitHub; they are leveraging cloud tools and products already built. They can also bypass a lot of the traditional methods for deploying their code changes by automating as much as possible to remove a lot of manual intervention that caused some bugs in the past.

We wouldn’t say that the volume of bugs found is decreased but the type of bug found is typically more infrastructure related vs code build or code deployment.

Software Testing Best Practices for Cloud

  1. Identify the cloud services that are being used for your application during design phase
  2. Update your test strategy and plan for a deployment to the cloud (migration and continual deployment validations)
  3. Identify how your will get test data ready for a sandbox or non-production environment deployment
  4. Review your cloud services SLAs (service level agreements) to understand who owns what type of validations (functional, performance, security, etc)
  5. Establish process to correct bugs with cloud provider
  6. For validations owned by your company, identify owners to validate
  7. Continue to educate others on how software testing changes with cloud

Other learning resources