After a successful career in web based testing, it was time for a change. While feeling nervous and hesitant to work in the complex world of cloud, I took the plunge and joined the Buttonwood team as a Quality Assurance Tester one year ago. I am responsible for ensuring our products meets the established standards of quality including reliability, usability and performance, as well as cloud application testing. Over the year, I have found myself in several discussions about “cloud”. What it is, what it isn’t and what it means for testing and QA professionals. The major source of confusion in my mind usually revolves around the definition of “cloud” itself. If you try to search cloud computing on the internet, you will find it hard to get a proper definition.

What I understood so far is that cloud computing remains a hot topic in the IT industry, as a model that provides computing resources on demand with reduced administration costs. The main service layers are Infrastructure as a Service (IaaS), Platform as a Service (PaaS) and Software as a Service (SaaS). Cloud computing supports an everything-as-a-service (XaaS) delivery model, providing internet services ranging from security and databases to storage and integration.
Since my primary goal is to talk about cloud applications and testing those applications, I found that the “cloud” itself comes down to being the infrastructure that hosts a “cloud application”. It is usually either public (AWS, Microsoft Azure etc.), private, or a combination of two and can offer many different levels of service (IaaS, PaaS, SaaS etc.)

Public Cloud Computing

Public clouds, hosted through providers such as Amazon and Microsoft Azure, have a number of benefits for the enterprise.

1. Utility Model

Public clouds typically deliver a pay-as-you go model, where you pay by the hour for the compute resources you use. This is an economical way to go if you are spinning up and tearing down development servers on a regular basis.

2. No Contracts

Along with the utility model, you are only paying by the hour- if you want to shut down your server after only 2 hours of use, there is no contract requiring your ongoing use of the server.
Shared Hardware – Because the public cloud is by definition a multi-tenant environment, your server shares the same hardware, storage and network devices as the other tenants in the cloud.

3. Self-Managed

With the pay-as- you- go utility model, self-managed systems are required for this business model to make sense. There is an advantage here for the technical buyers that like to setup and manage the details of their servers, but a disadvantage for those that want a fully managed solution.

Most public cloud deployments are used for web servers or development systems where security and compliance requirements are less of an issues for larger organisations and their customers.

Private Cloud Computing

Private cloud hosting is a single-tenant environment where the hardware, storage and network are dedicated to a single client or company. A more common type of a private cloud computing solution is a multiple-tenant environment where companies achieve networking isolation while keeping costs down, by buying hardware slices with other tenants and creating private subnets.

Private Cloud computing also has a number of benefits:

1. Security

Because private clouds are dedicated to a single organisation, the hardware, data storage and network can be designed to assure a high level of security that cannot be accessed by the other clients in the same data centre.

2. Customisation

Hardware performance, network performance and storage performance can be specified and customized in the private cloud.

3. Hybrid Deployments

If a dedicated server is required to run a high speed database application, that hardware can be integrated into a private cloud, in effect, hybridizing the solution between virtual servers and dedicated servers. This can’t be achieved solely in a public cloud.

As opposed to public clouds, fully private clouds are not derived through a utility model or pay-as-you-go basis because the hardware is dedicated. However, Virtual Private Clouds offers the same pay-as-you-go model as public clouds, with the added bonus of specifically provisioned hardware, network and storage configurations. Private clouds, including Virtual Private Clouds are generally preferred by mid and large size enterprises because they meet the security and compliance requirements of these larger organisations and their customers.

There are many benefits of moving an enterprise to the Cloud. Namely, higher efficiency, flexibility, disaster management / recovery, easy updates/upgrades, better collaboration, anywhere/anytime access giving a competitive edge. Additionally, it also makes the work environment eco-friendlier.

So, based on these basic characteristics, what should I (the tester) be thinking of when tasked with testing a “cloud application” or a web application that is running “in the cloud “? Are there any specific ways of testing cloud applications, which needs extra consideration? My immediate answer to this question used to be “no”. A web application needs to be tested in the same way no matter how it is deployed. It still has to work and perform as required and testing is no different for different deployment scenarios.

Cloud Application Testing Challenges

The rest of this article intends to deliberate on the testing challenges in the Cloud Computing environment, as it is imperative to get a quick grab on the challenges that the Cloud poses to successfully test applications.

Below are some highlights:

1. Performance

Applications in the cloud run on hardware that you might not have any control over, and that is shared with other applications. Therefore, ensuring both performance and, if required, scalability, is extremely important. If you know that your application shares resources with other applications under your control, run load tests on both, at the same time, to see if they affect each other.

2. Security

Since cloud applications usually share resources and infrastructure with others, you have to give extra consideration to data privacy and access control issues. Is sensitive data encrypted when stored? Are access control mechanisms in place in all possible situations and at all levels? This is just as valid for applications hosted in a private cloud; data intrusion and “theft” could even happen “by accident” if, for example, a backup for one cloud application happens to access resources or data related to another application.

3. Third-party dependencies

Cloud applications are likely to consume external APIs and services for providing some of their functionality. You should consider testing and monitoring these as if they were part of your own solution (since that’s what they are from your users’ point of view). You want to make sure they work as you need them to and you want to be the first to know when they don’t.

Should I have been nervous and hesitant to move to working in cloud? No! I do agree that there are things I needed to be aware of when testing an application in the cloud, but I now believe that “cloud testing” isn’t separate to regular performance, integration or security testing.

In Cloud based development and testing we follow an agile approach, which lets organisations address customer needs faster. Because we do not need to set up huge environments, we are able to go and say, OK, these are the requirements, let’s build it, and after one or two weeks, let’s look at it. What do you like about it? What don’t you like? Make changes, and agree, Ok, the product fits the need.

This summarises what I understand about “the cloud” and testing the “Cloud Application”. I do not know if this blog has helped you understand cloud testing, but please don’t hesitate to share your experience with cloud application testing.