18FeatureService Virtualization Rises to Cloud AppTesting ChallengeService virtualization provides a way to get around that scale issue that is not only practical,but more importantly should lead to better code being deployed the first time every time.By Michael Vizard, IT Business EdgeOne of the challenges with building an applicationthese days is the number of dependencies thatapplication will actually have on other applications.Ideally in order to know how that application will actuallyperform, application developers would be able to test theirapplication against the application it depends on running inproduction. The odds of that happening, however, are slimto none, especially if that other application is running as acloud service that has to be always available to end users.To solve this problem developers are increasingly turning toservice virtualization, which is an emerging set of applicationtesting technologies that allows a developer to create areplica of another application in a testing environment. Infact, a recent survey of 200 in‐house software developmentexecutives and managers from enterprises with revenues ofmore than US $1 billion dollars in North America ‐ the majority(71%) with over $2 billion annual revenues – conductedby the market research firm Coleman Parkes Researchon behalf of CA Technologies, found that not only does theinability to adequately test applications result in misseddeadlines, entire functions wind up being eliminated andthe development team as whole lacks confidence that theapplication will work as advertised.Given the often limited scope of most application testingthat may not be all that surprising. In fact, interest in agiledevelopment methodologies aside, as the amount of liabilityattached to an application increases the more cautious anorganization becomes. What’s definitely needed, saysShridhar Mittal, general manager for service virtualization atCA Technologies, is a new approach to testing applicationsthat for the most part are mashups of any number of existingapplications that often have dramatically different servicecharacteristics. The challenge, of course, is figuring whichone of those applications might adversely affect the performanceof your application before your application discoversthat issue in a production environment, says Mittal.Otherwise, says Mittal, all any organization is doing is releasingcode on a little more than hope and a prayer that itwill actually work.As applications become increasingly borderless thanksmainly due to the proliferation of APIs that serve to makeapplications more accessible, the more tempting it becomesto invoke third-party APIs. But as we all know, thequality of APIs tends to vary widely across the Web. Rightnow many organizations are using agile development methodologiesthat in many instances amount to little more thantrial and error when it comes to invoking APIs.As the number of application releases and updates thatorganization are rolling out in a given year steadily increasesit’s pretty clear that existing approaches to testing applicationswon’t scale in the age of the cloud. Service virtualizationprovides a way to get around that scale issue that isnot only practical, but more importantly should lead to bettercode being deployed the first time every time. ■Originally published on ProgrammableWeb(programmableweb.com)About MichaelMichael is the Editor in Chief of InfoWorldMedia Group where he has beencovering computer technology for morethan 14 years. He is also a member ofthe senior leadership team, which providesthe strategic vision for InfoWorldMedia Group.W W W . L O G I G E A R M A G A Z I N E . C O M F E B R U A R Y 2 0 1 3 ǀ V O L V I I ǀ I S S U E 1
Glossar y : Sof tware Tes ting LandscapeVirtualization: Virtualization (or virtualisation) is thesimulation of the software and/or hardware uponwhich other software runs. This simulated environmentis called a virtual machine . There are manyforms of virtualization, distinguished primarily bycomputing architecture layer. Virtualized componentsmay include hardware platforms, operatingsystems (OS), storage devices, network devices orother resources.Big Data: A collection of data sets so large and complexthat it becomes difficult to process using onhanddatabase management tools or traditionaldata processing applications. The challenges includecapture, curation, storage, search, sharing,analysis, and visualization.ALM: A continuous process of managing the life ofan application through governance, developmentand maintenance. ALM is the marriage of businessmanagement to software engineering made possibleby tools that facilitate and integrate requirementsmanagement, architecture, coding, testing,tracking, and release management.Agile: Characterized by quickness, lightness, andease of movement; nimble. Not necessarily characterizedby fast speed.Agile software development is a software developmentpractice based on iterative and incrementaldevelopment where requirements and solutionsevolve through collaboration between selforganizing,cross-functional teams. It promotesadaptive planning, evolutionary development anddelivery, a time-boxed iterative approach, and encouragesrapid and flexible response to change.Kanban: Kanban is a method for developing softwareproducts & processes with an emphasis onjust-in-time delivery while not overloading the softwaredevelopers. It emphasizes that developers pullwork from a queue, and the process, from definitionof a task to its delivery to the customer, is displayedfor participants to see.,Offshoring/GSD/DSD: Global Software Development(GSD) is "software work undertaken at geographicallyseparated locations across nationalboundaries in a coordinated fashion involving realtime (synchronous) and asynchronous interaction".19Distributed development is a software developmentmodel in which IT teams spread across geographicallines collaborate on applications or various software.These teams are often separated by miniprojectsthat are brought together for a final softwarebuildout.Distributed development is a familiar IT approach,but source code control and other issues of the recentpast make it less than ideal. However, modernand advanced Web-based tools and collaborativetechniques allow teams to work effectively in a distributedfashion.Cloud computing: The use of computing resources(hardware and software) that are delivered as aservice over a network (typically the Internet). Thename comes from the use of a cloud-shaped symbolas an abstraction for the complex infrastructureit contains in system diagrams. Cloud computingentrusts remote services with a user's data, softwareand computation.Testing in the Cloud: Cloud Testing uses cloud infrastructurefor software testing. Organizations pursuingtesting in general, load, performance testing,and production service monitoring in particular arechallenged by several problems like limited testbudget, meeting deadlines. High costs per test,large number of test cases, and little or no reuse oftests and geographical distribution of users add tothe challenges.Testing cloud apps: Cloud testing is often seen asonly performance or load tests, however, as discussedearlier it covers many other types of testing.Cloud computing itself is often referred to as themarriage of software as a service (SaaS) and utilitycomputing. In regard to test execution, the softwareoffered as a service may be a transaction generatorand the cloud provider's infrastructure software, ormay just be the latter. Distributed Systems andParallel Systems mainly use this approach for testing,because of their inherent complex nature. D-Cloud is an example of such a software testing environment.SaaS: Sometimes referred to as "on-demand software",is a software delivery model in which softwareand associated data are centrally hosted onthe cloud. SaaS is typically accessed by users usinga thin client via a web browser.Sources: Wikipedia, TechopediaW W W . L O G I G E A R M A G A Z I N E . C O M F E B R U A R Y 2 0 1 3 ǀ V O L V I I ǀ I S S U E 1