This is a two-part series:
Part 1: Cloud Computing: An Overview
Part 2: Cloud Computing: Testing in the Cloud
Cloud Computing- Testing in the Cloud
In our last blog, we observed delivery models or components of Cloud that offer ‘as a service’ capabilities. This is based on resource sharing ideology, whereby allocation and availability of resources is ‘on demand via the internet’.
In this part, we will consider the Cloud Model from a testing perspective.
Let’s begin by understanding the concept of Cloud Testing.
In Cloud Testing, apps utilize cloud computing environment and cloud infrastructure available ‘as a service’ for QA software testing purposes to closely simulate the real world conditions and parameters.
With an ever-increasing number of apps moving to the Cloud, it has become imperative to develop a customized Cloud testing strategy that resonates well with the given scenario — when an application is built entirely on the Cloud, or when an application has been completely moved to the Cloud, or if an area of the application is in the process of moving onto the Cloud.
The focus of Cloud Testing hovers around apps, networks and infrastructure, including testing of functions, end to end business workflows, browser compatibility, testing under different network bandwidths, disaster recovery tests, backups, and storage policies. For this, apps business logic, offered virtualized infrastructure, network, data, and end-user experience management are significant parameters to be considered.
Now, with a basic idea about Cloud Testing, let us understand the different forms of Software Testing in Cloud.
Forms of Cloud Based Software Testing
Broadly, there are four forms of cloud-based software testing, each with different objectives.
1. Testing of a Cloud: Quality of Cloud is validated from an external view based on provided cloud specified capabilities and service features.Cloud and SaaS vendors, as well as end users, can perform this type of testing.
2. Testing Inside the Cloud: Quality of a Cloud is checked from an internal view based on internal infrastructures of cloud and specified cloud proficiencies. Here, testing can only be performed by Cloud Vendors.
3. Testing Across Clouds: This means testing service apps over the Clouds- Public, Private and Hybrid based on system level app service requirements and specifications. This is performed by Cloud based app system providers.
4. SaaS Testing in a Cloud: It assures the quality of a SaaS in a Cloud based on its functional and nonfunctional service requirements.
Source: Cloud Testing
Let us now move to Cloud-based test environments that provide testing teams an increased control to build and execute tests. Based on the app requirements, apps are deployed to specific environments to validate their quality in a Cloud Infrastructure.
Cloud Testing Environments
1. Public Cloud Environment is best for data storage, app hosting, auto scaling for large apps, and on demand hosting for microsites and apps.
2. Private Environment is a little expensive for small organizations but is best suited for highly regulated large organizations that need privately and securely hosted data. It offers more flexibility and greater adaptability.
3. A Hybrid Cloud Environment is best suited for large org’s that provide services for vertical markets requiring both customer interactions and privately hosted company data. Greater operational flexibility and scalability can be offered through a hybrid environment.
Now, as we are aware of the Cloud types, forms of Cloud testing and the different types of Cloud environments, we can move on to the types of testing that can be performed in the Cloud.
Types of Cloud Testing
1. Functional Testing: The aim is to meet the specified business requirements.It involves testing all features and functions of the system including both hardware and software QA testing. The different types of functional tests can broadly include System Verification Testing, Interoperability and User Acceptance Testing.
2. Non Functional Testing: The overall aim is to ensure that the web app meets specified performance requirements. Few significant types of non-functional tests include Availability Testing, Stress Testing, Multi-Tenancy Testing, Performance testing, Security Testing, Scalability Testing and Disaster Recovery Testing.
After a summarized view of Cloud Testing, we should now understand the real benefits that Cloud Testing offers, and some of the associated challenges.
Benefits of Cloud Testing
Let’s list down some of the benefits Cloud Testing offers:
Dynamic Availability of Test Environments: A Cloud-based service can meet the changing business requirements near-instantaneously due to the dynamic availability of testing environments that can be customized.
Reconfiguration and Tear-down: In Cloud, a test bed can be created almost instantly, and virtual infrastructure can be easily reconfigured or completely decommissioned. Further, environments can be cloned for parallel testing efforts.
Automatic Software Integration/Updates: Whereas software integrations occur automatically, Cloud also allows for easy customization. The best part is that vendors take care of the servers and roll out security and software updates saving your time, effort and costs to maintain the system.
Cost Savings and ROI: The reduced cost of infrastructure equipment management and maintenance helps in faster time to market and increased ROI.
24×7 Access: QA teams in different time zones and geographic regions can easily access the information anywhere, anytime, allowing for increased test coverage.
Viable Payment Options: Usually, orgs get the flexibility to pay as per their business cash flow- One-off payment, Scalable models or Pay-as-you-go options are normally available. The most common is the metered subscription model.
Better Collaboration: Cloud-based tools enable continuous collaboration among the remote and local teams. The real benefits of DevOps can be truly accrued through Cloud allowing for configuration of similar development, test, and production environments, easy deployment, redeployment, and reconfiguration of apps and services, along with remote monitoring from varied locations. Critical updates can be shared in real-time.
Overcoming Fragmentation Issues: Through Cloud, varied device types, configurations and screen sizes can be tested across a variety of testing platforms. User-centric environments can be emulated through customization.
Scalability: The computing resources can be increased or reduced as per the need. This is especially helpful within the context of altering business requirements.
Reduced Recovery Time: Disaster recovery is cost effective with reduced recovery times as the complete server can be bundled quickly as a single composite entity on a virtual server.
Overall, Cloud testing offers better collaboration, virtualization-based benefits, speedy testing, reduced management and maintenance efforts, and faster time to market.
Here are some of the challenges associated with Cloud testing:
Security and Privacy issues: As everything is on Cloud, and services are being outsourced, security ranks as a topmost concern for businesses. The major issues that need to be tackled include user privacy protection, data integrity issues, service availability, and setting up robust security standards for Cloud.
Data Migration: Moving from one Cloud provider to another can be a big challenge, especially when both have different database schemas. And businesses are quite uncertain about interoperability of the apps hosted on the Cloud.
Upgrades on ad hoc basis: When users are notified about the upgrades at a very short notice, validating the changes manually for your SaaS app becomes a huge problem. Likewise, live upgrades may impact the existing users.
Performance Issues: The network bandwidth offered may negatively impact execution and delivery of complex apps.
Replicating the User Environment: It is not always possible to get the right configuration to emulate specific customer environments required for testing purposes, as the Cloud service provider may not support the same.
Testing Expertise: Keeping the testing needs in view, testers are required to validate the interaction across various components and layers along with anticipating risks like connection losses, crashes and so on. Anticipating and testing beyond the aspects under control in the existing environment is a challenging task for the testers. For this, testing expertise is required, and lack of expert resources is a major concern in Cloud Testing.
Though these challenges are real, it is important to address these to ensure effective and secure operation of business apps on the Cloud, so businesses can gain a competitive edge in the market.
After getting to know all about Cloud, it is time to formulate a test strategy, plan the infrastructure required, choose an efficient service provider, check the SLAs, and execute the test. Happy Cloud Testing!!