Towards Improving the Testability of Cloud Application Services

Towards Improving the Testability of Cloud Application Services

Tariq M. King (North Dakota State University, USA), Annaji S. Ganti (North Dakota State University, USA & Microsoft Corporation, USA) and David Froslie (Microsoft Corporation, USA)
Copyright: © 2015 |Pages: 18
DOI: 10.4018/978-1-4666-6539-2.ch089

Abstract

In cloud computing, applications are hosted, deployed, and delivered as services over the Internet. New cloud application services can be developed by tailoring existing ones, while hiding the complexity of the underlying implementation. Cloud applications may be able to adapt to changes in their environment, which should be secure and reliable. The infrastructure on which cloud applications are built is characterized by power, storage, and virtualization. But how does all of this affect the ability to adequately test cloud applications? This chapter investigates the testability of cloud application services. It focuses on the specific problem of reduced controllability and observability of software services hosted in the cloud, and proposes a novel solution referred to as Test Support as-a-Service (TSaaS). A prototype of TSaaS is also presented, and is used to discuss the feasibility, challenges, and benefits of the approach.
Chapter Preview
Top

Introduction

Cloud application services use computing resources to deliver Software-as-a-Service (SaaS) over the Internet (Armbrust, 2009). Like conventional applications, SaaS is designed to help a user perform a task, but is hosted and deployed in a cloud computing environment. A provider hosts the application service and the user’s data in the cloud, allowing them to be accessed from any location via the World Wide Web. From a software construction perspective, one advantage of such a model is that new application services can be built by tailoring existing ones, while hiding the complexity of the underlying implementation (Greiler, 2009). The cloud provides ubiquitous access to several reusable software services, thereby facilitating rapid application development.

Although much work is being done to model and build cloud application services, there is significantly less research devoted to testing them (Chan, 2009; Rimal 2009). For the software tester, the use of remotely-hosted services within an application represents a significant challenge. When testing an application that uses another service over the Internet, controllability and observability over the remotely-hosted service is generally limited due to security and privacy concerns (King, 2010). As a result, testability is reduced since developers may not be able to stimulate the service with certain inputs, nor check whether actual test results match the expected results (Beizer, 1990; Binder, 1994). Since testing continues to be the primary means of validation used in the software development industry, it is important to study the impact of emerging paradigms such as cloud computing on software testability.

In this chapter we investigate the testability of cloud application services. As a preliminary step to our investigation, we analyze the characteristics of cloud computing that can make the resulting applications easier, or more difficult to test than non-cloud applications. Analyzing these characteristics provides a means for identifying the major challenges associated with testing cloud applications, and investigating ways in which the cloud infrastructure itself can be harnessed to mitigate those challenges. To narrow the scope of the chapter, we tackle the specific research problem of reduced testability of cloud application services due to remoteness and information hiding. Recommendations are made for improving the testability of cloud application services through the description of a novel approach, referred to as Test Support-as-Service (TSaaS). TSaaS leverages the automated tests and infrastructure, which were used to validate a service during development, for the provision of a set of test support operations to aid remote collaborators who are extending the service.

The major objectives of this chapter are to:

  • Identify and analyze the key factors that influence the testability of cloud applications,

  • Outline a development methodology for TSaaS and define the major architectural components of its implementation,

  • Describe the lessons learned from developing the first prototype of TSaaS, and

  • Discuss the viability and future directions of approaches to testing cloud application services.

Top

Background

Cloud computing is the use of computer technology to provide services over the Internet (Armbrust, 2009). Software-as-a-Service (SaaS) refers to applications that are designed to help users perform a task. Examples of SaaS include Google Docs, Salesforce, and Paypal. The concepts of Platform-as-a-Service (PaaS) and Infrastructure-as-a-Service (IaaS) are similar to that of SaaS. However, instead of application services, PaaS and IaaS deliver software development platforms and hardware infrastructures, respectively. An example of PaaS is Windows Azure (Microsoft, 2011), while the Elastic Compute Cloud (Amazon, 2011) is an implementation of IaaS. Hardware virtualization may be used in the cloud to create abstract computing resources from more powerful physical resources (Barham, 2003; Page, 2008). In a virtualization system, the component responsible for managing virtual resources is called a hypervisor.

Complete Chapter List

Search this Book:
Reset