What does 'Cloud Testing' mean for Testers and QA professionals?
There is too much confusion in understanding Cloud testing. However, there are outright definitions on ‘Cloud Testing – it typically involves monitoring and reporting on real-world user traffic conditions as well as load balance and stress testing for a range of simulated usage conditions’, OR Wikipedia says, ‘Cloud computing is a jargon term without a commonly accepted non-ambiguous scientific or technical definition.’ But what does it mean for the testers and QA Professionals is a major concern.

In this blog lets us discuss Cloud Applications and Cloud Testing. Read below some common traits for ‘cloud applications’.

  • Run on a virtualized hardware and a software stack that can be moved and replicated between physical machines as needed.
  • Share common physical resources with other cloud applications (disk, network, data stores, etc.).
  • Cloud Applications are built to be highly scalable in real-time – meaning that they can handle high increase in load by dynamically scaling to more physical resources as needed.
  • Cloud Applications are predominately accessed using standard network protocols.
  • Use HTML and other web technologies for providing both their front-end and management UIs.
  • Provide APIs for integration and management – possibly made available to users or third-party application vendors.
  • Consume third-party APIs for providing common services and functionality – things like authentication (OpenID, Facebook), storage (DropBox, Google Drive), messaging (Twitter, Gmail), geo-functionality (GoogleMaps) etc.
  • Tend to use NoSQL data stores – primarily for managing large amounts of unstructured data.
Given the basic traits as mentioned above, what should be running in testers’ mind when testing a ‘cloud application’ or more likely, a web application or API? A tester may have doubts if there are any specific characteristics to a cloud application that requires extra consideration as opposed to if the application is deployed on a dilapidated server? The answer is indeed a BIG NO! A web application or API needs to be tested in the same way no matter how it is deployed. It still has to perform and function as required and testing doesn’t change for different deployment scenarios. Perhaps there are a number of aspects that a tester needs to consider carefully when tasked with testing a ‘cloud application’ – many of which are related to the infrastructural nature of the cloud. For example:
  1. Performance: Applications running in a cloud run on hardware that you might not have any control over and they share with other applications. Therefore, ensuring both performance and required scalability is crucial. Be sure to test performance in a cloud environment similar to the one you will be using in production. 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. In production, be sure to use monitoring as a means to continuously validate both performance and functionality while your application is in production – ensuring that it scales as required.
  2. Security: Be very careful when you 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 stands 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. You should understand that the applications should work as you want them to and also detect any ambiguity at the first go if any.
These aforesaid examples can be of help to understand ‘Cloud Testing’ to an extent. There are things to be aware of when testing an application in the cloud, cloud testing being something different than regular performance, integration or security testing. All of these just need some special consideration and understanding when applied to an application running in the cloud.
Happy Cloud Testing!
image credit: epiccloud.ca