Native Apps At The Client & Cloud

Srinivasan Sundara Rajan

Subscribe to Srinivasan Sundara Rajan: eMailAlertsEmail Alerts
Get Srinivasan Sundara Rajan: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Related Topics: Cloud Computing, Cloudonomics Journal, Cloud Data Analytics

Article

Non-Functional Testing for Cloud

Testing for Cloud QoS

Functional & Non Functional Tests
As we know typical application testing will consist of the following types of test cycles:

Functional

  • Regression
  • Installation
  • Functional
  • Sanity Testing

Non Functional

  • Performance Test for Responsiveness of the application
  • Performance Test for a Given Load Profile (Load Test)
  • Performance Test for Abnormal Stress conditions (Stress Test)
  • Performance Test for System Availability

Functional Tests ensure that the system behaves as documented and non - functional tests ensure that the QoS (Quality Of Service) can be met.

Detailed  explanation of the above test types are available in various testing manuals and guides, however below we are elaborating some specific Test Scenarios that are more relevant to Cloud and how to plan for them.

Also there will not be any changes to the functional test planning and execution between a ‘On Premise' and  ‘Cloud Application', however the non functional test planning will differ and hence needs to be addressed.

Again for a SaaS application, the cloud provider takes care all the testing, but they also need to plan for the below  situations.

However, if you deploy your application on a PaaS or IaaS platform, the following scenarios are much valid  for you as a software development organization.

Additional Cloud Non Functional Test Types

1.  Cloud Burst Responsiveness Test : This will be a variation of the stress tests in the regular applications. However, elastic cloud applications will tend to have the following characteristics.

  • End-user access patterns contain a certain degree of randomness.
  • There are daily recurring cycles in people‘s behavior
  • Some variability is driven by industry dynamics.
  • Uncertain growth patterns

Cloud platform addresses these variations on the  usage patterns and dynamically scales the allocated resources.

However it is of utmost important such that the Cloud Test Cases / Test Planning and Test Execution includes the above mentioned scenarios.

So a Cloud Application needs to subject to unpredictable changes and fluctuations in demand and the same needs to be planned. This is also known as ‘Cloud Bursting',  which is the ability to load occasional surges without  significant capital  investments.

Some of the additional parameters to gather during the ‘Cloud Burst Responsiveness  Tests' are :

  • Business Transaction Size
  • Number of business users
  • Targeted Cloud Zone, for example most of the Cloud providers like Amazon EC2 have different regions and the speed can vary accordingly.
    • US- N Virginia
    • US - N California
    • EU - IreLand
    • APAC - Singapore
  • Instance size and other parameters like number of CPUs

2.  VM Migration & Availability  Test: Major efficiencies  of  Cloud Platform are possible through management of Virtual machines and migration of work load between the virtual machines.  Successful Virtual machine migrations ensure that the Availability of the Cloud applications are fully guaranteed.

The basic requirement when migrating virtual machines is the ability to fully save the running state of the virtual machine. This is far more involved than simply copying a virtual machine (configuration and image files) to another machine. The system needs to create a point in time snapshot of its memory, device I/O states, network connections and the contents of the virtual CPU registers.

While this is very difficult to simulate a Virtual Machine Migrations,   As a a consumer we can ask the Cloud Provider  to  help with simulating conditions for VM Migration and the behavior of the application can be looked into.

3. Multi Tenant Penetration Tests: A penetration test is a method of evaluating the security by simulating an attack by a malicious user. The intent of a penetration test is to determine feasibility of an attack and the amount of business impact of a successful exploit.

As indicated in my other article, attacks like SQL Injection, Cross Site Scripting are   possible to a greater extent in a multi  tenant application. (http://cloudcomputing.sys-con.com/node/1624391)

Test cases should be written to attack the system from the point of view of a  rogue user who possess the ID as one of the tenant of the application and that user's ability to penetrate the system and view the information of other tenants.

4.  Virtual IP Changes & Availability Test: The complex architecture of Cloud Infrastructure in itself  brings lot of challenges like  internal IP addresses, DNS names and mapping them appropriately.  For example if we consider Amazon EC2 , the following parameters affect the network connections.

  • All Amazon EC2 instances are allocated a private address by DHCP
  • Each instance is provided an internal DNS name that resolves to the private IP address of the instance from within Amazon EC2; it will not resolve outside of Amazon EC2.
  • Each instance is provided an external DNS name that resolves to the public IP address of the instance outside the Amazon EC2 network and the private IP address from within Amazon EC2 network.

So the issues around the IP addresses in a Virtualized environment poses  different testing needs .

Summary
Cloud Computing presents tangible benefits to businesses. However, along with these potential benefits comes a new set of concerns: security, privacy, availability, performance and integrity. Suitable testing must be at the core of any Cloud solution to ensure the delivery of a safe, integrated solution that meets the needs of the business it is to serve.

More Stories By Srinivasan Sundara Rajan

Highly passionate about utilizing Digital Technologies to enable next generation enterprise. Believes in enterprise transformation through the Natives (Cloud Native & Mobile Native).