(1) Background: Testing Applications for Cloud Migration
The dawn of the digital era brings a new set of challenges for companies today. With cloud, mobile, analytics, and social media forming the cornerstones of digital transformation initiatives, unanticipated obstacles often appear along the road to digitization. These digital roadblocks may stall the overall digital evolution, sending developers back to the drawing board to draft alternate routes around the problem. Finally, these obstacles may actually be the product of individuals seeking to bring such digital initiatives to life.
In the past, testers have relied on well-maintained applications and a scope of testing limited to both functionality and the ability to scale. The traditional way of testing was to work on requirements, create a test strategy, design test cases, and then execute them in a closed environment. This testing almost always lacked certain infrastructural components; such elements were considered a function of in-house IT teams and therefore taken care whenever the need arose. Testers hardly considered security, as most of the application-hosting infrastructure—servers, firewalls and ingress or egress points—were all under direct control of the enterprise itselves. Tester tasks were therefore confined to verifying that the new functionality was available in the migrated environment, that it worked as designed, and that it could scale to the demands of end users.
However, when it comes to testing an application in the cloud, the entire equation shifts. Cloud brings in scenarios and uncertainties that were previously ignored or deemed trivial. In my earlier blog [reference -1], I discussed key considerations for testing the cloud migration of applications.
In this blog, we take a look at the need for change in the mindset of company individuals pursuing digital transformation. It is important that all stakeholders be prepared to ensure the success of transition. We will examine an enterprise taking the first step towards transformation by moving an on-premise application to a cloud platform and what this means to a test team responsible for validating the success of the overall migration.
With enterprises now embracing cloud solutions for application hosting, test teams must know how to address the new realities of testing in the cloud environment.
(2) What Must Testers Prepare for when Testing Applications on Cloud
Testing the invisible: First and foremost, testing on the cloud demands a fundamental change in tester mindset. The confidence and reassurance provided by on-premise solutions is no longer available. The tester now needs to test something that cannot be seen but exists somewhere in the network. Also, testers do not have the liberty or convenience of making hardware and software changes as before. Therefore, careful planning and collaboration with the cloud support team is crucial. Following this changed perspective, testers must be better prepared to both test and address the ambiguities that come from not being able to see the platforms that host the applications under test.
Understanding the distance: Cloud solutions can include applications hosted by third party providers like AWS, Microsoft Azure, and others. There may also be instances of private clouds within an organization that are located at a centralized data center or even public clouds that may host non-sensitive data. It is essential for testers to realize that the application under test will not be co-located. This brings in another aspect of "latency," or the time taken for a response to reach or arrive from the point a command issued by the tester. In on-premise applications, latency is typically insignificant and is a factor of the WAN bandwidth available in the enterprise. In cloud, applications are hosted on platform that may be far from test teams. As a result, the links or paths that connect them may also incur a significant amount of latency. In many large enterprises, datacenters hosting applications can be on different continents. Thus testing in these scenarios requires a recalibration of tester response time expectations. A tester should be able to raise a flag if the response time is slower than with on-premise applications.
Breaking the communication barriers: Distance itself brings in a new aspect of for communications. Problems arising due to communication were trivial for on-premise applications as all teams were co-located. Resolution was just a matter of a coffee break discussion, an informal phone call, or a friendly chat. This may not be the case with the cloud as it may be maintained by another provider or by a geographically separated team. In this case, it is of utmost importance that the tester communicate in the best possible manner, look inward, and take adequate measures to resolve this otherwise nonexistent bottleneck.
Securing the application: Just as we decide whether to store our personal photos on a local drive or on a Google drive, applications hosted on the cloud need not be on premise and can therefore be hosted on other platforms at a distance. With this design, the need for secure access, self containment, and code quality becomes important. Cloud platforms are designed to house applications on a tenancy basis; this may also include applications that belong to other enterprises. In such a situation, concerns about privacy, integrity, and security take precedence over functionality. It is therefore extremely important for a tester to ensure that an application is secure by performing a security assessment of the path and cloud containers along with the application code itself. Testers need to understand the security risks and consequences the organization may experience in cases of neglect.
Replicating the platform: Traditional test organizations had test environments that mimicked the production-hosting environment. Testers did not need to worry about the performance, scalability, and stability of a project as long as platform specifications were maintained. However, when it comes to applications hosted on the cloud, this may not be the case. Cloud platforms are typically designed and built to support multiple applications using widely available commodity hardware such as servers and storage arrays to make them commercially viable. Hence, when testers test applications hosted on the cloud, the underlying platform also plays a vital role. Testers need to ensure that the cloud platform demonstrates the same performance requirements as an on-premise solution. Therefore, the ability to translate performance readings to enterprise benchmarks is critical.
Using the right tools: The on-premise model allowed the tester to select their tool of choice for testing. There were hardly any challenges with the test data stored by these tools as it was confined within the physical enterprise. When it comes to testing applications on the cloud, the choice of tools depends on the platform’s ability to support the tool. It is also determined by the ability of the tool vendor to provide it in a pay-as-you-use mode. Testers need to understand that the fundamental virtue of cloud is to minimize the operating expenses of an on-premise platform and derive cost efficiencies through sharing. The same holds true for the tools as well. While we can still have an on-premise tool to test an application on the cloud, this would still be considered an overhead if the tool is used infrequently. Testers need to appreciate that cloud testing may require them to relearn how to use tools that are specifically designed to support an ”on-demand” mode as offered by vendors and supported by the cloud.
Shattering the delusion: Applications hosted on the cloud present a unique set of challenges a tester needs to address. Test teams tasked with the responsibility of quality assurance must ensure that the same level of secure service is delivered by the applications with no degradation of experience to end users. To achieve this goal, testers need to understand the foundation, building blocks, and limitations of cloud architecture.. This involves a radical change in the way testers think today and include utilizing the following skills:
- An ability to accept the unseen
- An understanding that security is integral to testing
- The acceptance of remote testing as a new norm
- A willingness to equip themselves with new toolsets and skills
The cloud is here to stay, and its use will only increase over time. This is because it provides advantages far greater than its on-premise counterpart. These include technologically superior hosting platforms, guaranteed cost savings, robust security features, and almost infinite scalability. It’s time that we as testers prepare ourselves to master and test this inevitable technological asset that is invisible yet omnipresent.
 Renu Rajani - Blog “Key testing considerations in migrating applications to cloud environment”.
Main Author: Renu Rajani, Vice President, Capgemini India; email@example.com
Contributing Author: Ashish Velankar, Senior Director, Capgemini India; firstname.lastname@example.org