Cloud Computing- Part II

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 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 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 provides 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 orgs that provide services for vertical markets requiring both customer interactions and privately hosted company data. Greater operational flexibility and scalability can be offered through 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 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 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.

Challenges

Here’s some of the challenges associated with Cloud testing:

Security and Privacy issues: As everything is on the 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!!

Cloud Computing- Part I

This is a two-part series:

Part 1: Cloud Computing: An Overview
Part 2: Cloud Computing: Testing in the Cloud

Cloud Computing: An Overview

Cloud Computing has opened up new avenues for the testing world, especially when business applications are growing in complexity, making it no longer feasible to build and maintain capital intensive in-house testing facilities that can mimic real-time environments.

Cloud Computing offers companies to utilize applications and other resources stored on high-end server computers and networks managed by third party vendors. The services offered are capable of handling almost any business demand from varied testing and development environments to full-scale enterprise platforms at a reasonable cost with on-demand flexibility, enhanced collaboration, higher efficiency, and an optimized approach.

In this part, we’ll discuss some of the main types of delivery models or components of Cloud that offer “as a service” capabilities:

Infrastructure as a Service (IaaS)

IaaS constitutes the basic layer of Cloud. Customers are offered pre-installed and configured hardware and software through a virtualized interface. Pay-per-usage is the normal approach, typically by the hour, week or month.

Computing infrastructure resources offered includes server resources, network resources, and storage capabilities ensuring persistent data storage. IaaS providers host users’ applications and manage system maintenance, data centre management, backup, and resiliency planning.

Overall, the benefits of IaaS model may be summarized as:

  • Offers access to enterprise grade IT resources and infrastructure
  • Saves ownership cost and capital expenditures
  • Reduces cost through Pay-per-usage
  • Offers flexibility of scaling infrastructure up and down as per demand
  • Reduces time to market the product
  • Offers better security

However, users shall be required to monitor their IaaS environments carefully for being charged unfairly or for unauthorized access. Also, users are responsible for all aspects of VM management. Additionally, the services must be checked for efficiency and reliability before finalizing the deal, as users’ workloads may be highly affected if the IaaS provider experiences downtime quite frequently.

Platform as a Service (PaaS)

In addition to infrastructure, PaaS service providers offer a computing platform and solution stack as a service. It includes middleware, development tools, BI services and more. The entire web app life cycle is supported with PaaS- from building, testing, deploying and managing to updating.

A development framework is offered to create cloud based apps using built-in software components. Scalability and multi-tenant capability features are included to reduce the coding requirements. And additionally, BI tools are offered along with workflow, directory, scheduling and security services.

Overall, the benefits of PaaS model may be summarized as:

  • Saves ownership cost and capital expenditures
  • Offers the combination of both- infrastructure and application
  • Reduces costs by paying only for what you use
  • Handles all upgrades, patches and routine software maintenance
  • Maintains testing and deployment infrastructure
  • Provides capabilities to efficiently manage the entire application lifecycle.
  • Offers better Security

The major area of concern with PaaS is vendor/platform-lock-in, especially when data-driven PaaS systems are used. This means that apps will be required to be completely rewritten to migrate to another PaaS or non PaaS environment. Besides, PaaS systems are not a preferred choice for high volume, low latency transactional apps or for developers in highly regulated industries.

Function as a Service (FaaS)

FaaS provides a platform to develop, run, and manage app functionalities without the complexity of building and maintaining the infrastructure. FaaS moves the server side code from long running components to ephemeral function instances. The key difference between FaaS and PaaS is scaling. Whereas with PaaS, you need to give a thought about scaling, but with a FaaS app scaling is entirely transparent.

With FaaS, you do not need to worry about managing your own server systems or your own server applications. Simply write a piece of code to be executed whenever a certain event takes place. And FaaS provider will take care of where the code will run, and will scale up when needed. The user is charged only for the resources consumed when the code is run, and at the end of code execution, containers utilized to run the code are withdrawn.

Overall, the benefits of FaaS model may be summarized as:

  • Needs no server apps to run deployment
  • Requires payment only for the compute you need
  • Gears up to bring entire app up and down for every request
  • Enables horizontal scaling to be completely automatic, elastic and managed by the provider.
  • Offers event-driven instantaneously scalable services
  • Reduces packaging and deployment complexity

Despite the above benefits, FaaS functions have significant restrictions when it comes to local machine/instance state because for any given invocation of a function, none of the host state created will be available to any subsequent invocation. Moreover, FaaS functions are restricted in how long each invocation is allowed to run. Further, these services are not suitable for low latency trading apps; and debugging, app bundling, configuration and monitoring are matters of concern.

Software as a Service (SaaS)

SaaS is a fully-functional software licensing and delivery model that hosts apps over the internet-as a service- on demand basis. It allows users to connect to, and use cloud-based apps over the internet. All the required infrastructure, middleware, app software, maintenance, support, update or backups are managed by SaaS providers.

The services are available on pay-as -you-go model, and are generally paid for by subscription or by use.  SaaS allows users to get quickly up and running with their app at minimal upfront costs.

Overall, the benefits of SaaS model may be summarized as:

  • Enables access to sophisticated enterprise grade apps at affordable prices
  • Reduces costs by paying only for what you use
  • Offers high scalability and easy customization
  • Enables access to app data from anywhere
  • Ensures better data security

The major drawback of this model is dealing with the risk of vendor going out of business, which simply infers that consumers need to ensure that their SLA allows them to export data from their provider in such a case. Moreover, compatibility of the devices can be a cause of concern. And there may be hidden costs involved in the process, which can cause customers to end up paying more than they should. .

Apart from these delivery models, the other popular models include SECaaS (Security as a Service) and DaaS (Disaster Recovery as a Service)

SECaaS offers agility in securing workloads irrespective if they are moving to different physical hardware, different data centers or changing numbers. It further offers segmentation, anti-virus,  threat identification, and compliance checking, and is charged based on usage. A recent survey indicates that SECaaS is coming up as a leading cloud computing model being adopted by companies followed by IaaS and DRaaS (Disaster Recovery as a Service).

DRaaS, as the name suggests, is reliance on a remotely hosted disaster recovery services to ensure reliability of your data and apps by avoiding any data loss. With variety of security threats and cyber-crime instances, DRaaS providers usually support subscription based recovery services, managed hosting, and managed back-up services. The aim is continuous replication of critical apps, infrastructure, data and systems for quick recovery after an IT outrage or downtime. As per Gartner, the size of DraaS market is approximately $1.7 billion with a compound annual growth rate of 25%.

Cloud Computing is definitely increasing at a rapid pace, and companies are becoming less and less hesitant to use these services. They are looking for better ways to make cloud work for them. These enhanced consumer needs have lead to the evolution in the Anything as a Service (XaaS) market. XaaS collectively describes a range of services related to cloud computing and remote access offering obvious benefits in the form of enhanced efficiency and reduced costs.

But there are certain things to consider before signing an agreement to avail these services. The services must be chosen based on need analysis, priorities, areas of specialization, and business processes. SLA’s must be carefully read and understood beforehand. And once this is done, you are ready to use Cloud computing, and accrue the benefits offered.

In the next blog, ‘Cloud Computing: Testing in the Cloud’, we will find out how these cloud computing environments can be used for software testing purposes simulating the real-world environments and devices, and the challenges they pose.