<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Towards Domain-Specific Testing Languages for Software-as-a-Service</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Dionny Santiago</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Adam Cando</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Cody Mack</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gabriel Nunez</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Troy Thomas</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tariq M. King</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Ultimate Software Group, Inc.</institution>
          <addr-line>2000 Ultimate Way, Weston, Florida 33326</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2013</year>
      </pub-date>
      <abstract>
        <p>There continues to be a trend towards using the power of cloud computing to tackle inherently large and complicated problem domains. Validating domain-intensive cloud applications presents a significant challenge because of the complexity of both the problem domain and the underlying cloud platform. In this paper, we describe an approach that leverages model-driven engineering to improve testing domain-intensive cloud applications. Our approach combines a set of abstract test commands with various domain and configuration models to define a domain-specific testing language. We have developed a prototype of our approach that provides language editing and platform configuration tools to aid test specification, execution and debugging.</p>
      </abstract>
      <kwd-group>
        <kwd>Testing</kwd>
        <kwd>Model-Driven Engineering</kwd>
        <kwd>Domain-Specific Languages</kwd>
        <kwd>Cloud Computing</kwd>
        <kwd>Human Capital Management Software</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Introduction
Validating software-as-a-service applications is difficult due to the large size of
the problem domain, coupled with the complexity of the underlying cloud
platform. Adequate functional testing is heavily dependent on domain expertise from
each product area, and typically requires extensive data setup. Since the
software is delivered as a service over the Internet, functional UI testing must be
performed using different browsers to ensure a good user experience. In addition,
engineers need to be able to set up tests to run on specific configurations of the
underlying cloud infrastructure.</p>
      <p>
        Model-driven engineering (MDE) seeks to simplify software development by
raising the level of abstraction through domain modeling, while promoting
communication between groups working on the same system [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Researchers and
practitioners have developed a number of MDE tools and techniques, most of
which have focused on exploiting domain models for automatic code generation.
However, there has also been research on MDE approaches to enhance software
testing [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ]. A more recent interest that has arisen is the use of MDE to support
emerging paradigms such as adaptive and cloud computing [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>
        In this paper, we describe an approach that leverages MDE to improve the
specification, execution, and debugging of functional tests for domain-intensive
cloud applications. Our approach is the result of investigating new and innovative
ways to test UltiPro, a comprehensive cloud-based human capital management
(HCM) solution [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Domain models and abstractions for common UI
interactions, data setup, environment and platform configurations are combined with
highly extensible testing frameworks [
        <xref ref-type="bibr" rid="ref6 ref7 ref8">6–8</xref>
        ]. The result is a powerful
domainspecific language (DSL) for creating automated functional tests. Our test
authoring DSL is supported by an editor that provides syntax checking and
highlighting, intelli-sense, tooltips, and debugging features.
      </p>
      <p>The major contributions of this research paper are as follows: (1) describes
a novel approach that integrates various domain and configuration models into
a test case specification language for cloud applications; (2) presents the design
of a prototype used to demonstrate the feasibility of the approach; and (3)
discusses our experience developing the prototype, focusing on the lessons learned.
The rest of this paper is organized as follows: the next section motivates the
research problem. Section 3 describes our domain-specific test case specification
approach for cloud applications. Section 4 presents a prototype that implements
the proposed approach. Section 5 discusses the lessons learned from building the
prototype. Section 6 is the related work and Section 7 concludes the paper.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Motivation</title>
      <p>
        Our research has been motivated by the challenges faced when testing UltiPro
[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Delivered on-demand as software-as-a-service in the cloud, UltiPro
provides HCM functionality including recruitment, onboarding, payroll, payment
services, benefits, compensation management, performance management and
reviews, succession planning, and more. Data is available across all areas of HCM,
and can be accessed by department, division, or country. Several reporting and
analysis features are also available through UltiPro’s web-based portal.
      </p>
      <p>The large size and complexity of the problem domain makes testing the
functionality of UltiPro challenging. Individual product areas (e.g., recruitment,
payroll) encompass so many features that each area could be considered as a
product itself. Adequately testing UltiPro requires each product area to be
validated, which is impossible without domain expertise. Although each product
area is large, UltiPro has been designed and developed as a unified solution
which seamlessly integrates all aspects of HCM. Validation of the overall
product therefore relies heavily on the collaboration of domain experts across all
product areas. This ensures that changes to one product area does not have an
adverse effect on other product areas.</p>
      <p>Testing UltiPro is further complicated because of its development and
delivery as a cloud application service. Cloud application services are hosted on
complex, distributed infrastructures with multiple servers and architectural
layers that extend from the underlying network up to the web-based user interface.
To ensure a good user experience, functional UI testing must be performed using
different web browsers. Other non-functional factors such as high performance
and security requirements also make it difficult to test cloud applications.
However, this paper limits the scope of the testing problem for cloud applications to
functional UI and platform compatibility testing.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Approach</title>
      <p>Our approach defines a test specification language that can be used to develop
automated tests for a particular application domain. As shown in Figure 1, we
leverage abstract test commands, domain and platform models, and test
automation frameworks for the purpose of creating a domain-specific language (DSL)
for testing cloud applications. The DSL allows us to provide test case editing,
execution, and debugging tools tailored for domain experts, test engineers, and
end users. Abstract tests defined using the DSL are translated into executable
scripts that run on the underlying testing tools and frameworks. For the
remainder of this section, we describe the various test abstractions and models used in
our approach. Transformation of abstract tests into tool-specific testing scripts
is discussed as part of the prototype design in Section 4.</p>
      <p>!"#$%&amp;'$()*#$(
+,--&amp;./#</p>
      <p>2+(/-'%
4-99*':"
2""#$(/-'%
4-99*':"
)*#$(+&amp;#*(01*'232'&amp;$2,.(4&amp;.56&amp;5*(7/2$,%
)*#$(+&amp;#*(01*'232'&amp;$2,.(4&amp;.56&amp;5*</p>
      <p>;;%.-9*/'&lt;68#+/)/+%==
)*#$(!6$,-&amp;$2,.(),,8#(&amp;./(9%&amp;-*:,%;#
!"#$%&amp;'(#$)*+#</p>
      <p>0*1#%
23"($*+(/-'"</p>
      <p>4-'($-5
23"($*+(/-'"</p>
      <p>&lt;,/*8#
4-')/17$*(/-'
05*()-$9
,*+$-%.#)/'/(/-'"</p>
      <p>.*(*%6#(78
&gt;'?/$-'9#'(
!"#$%&amp;'(#$*+(/-'
At the core of the language is a set of abstract test commands. There are two
types of commands: Action Commands and Assertion Commands (left of Figure
1). Action commands apply inputs that exercise the system under test (SUT).
This includes stimulating UI controls such as textboxes, dropdowns, and buttons,
as well as database-related actions. On the other hand, assertion commands
perform UI and database checks to verify the behavior of the SUT. Table 1
describes some of the key test commands defined under our approach.
3.2</p>
      <p>Application Domain Models
Domain concepts are introduced into our testing language through two types of
models: User Interface and Macro Definitions (right of Figure 1).
! Command Description</p>
      <p>Blur Loses focus of an element</p>
      <p>Clear Empties the value of an element
Actions CMloicukse Over PHroevsseerss tahnedmreolueasesepsominoteurseovbeurttaonnewlehmileenhtovering over an element
Mouse Out Of Move the mouse pointer from within the hover area of an element
Set Assigns a value to an element
Is Checks if the value of an element equals a given value
Is Like Checks if the value of an element contains a given value as a substring
Is Visible Checks if an element is visible
Assertions Is Enabled Checks whether an element used for input is enabled
Exists Checks if an element is present
Has Options Checks if a dropdown provides a specified list of values</p>
      <p>Has Number Of Options Checks if the size of a dropdown list is equal to a specified value
! Table 1. Web UI Abstract Test Commands
"#$%&amp;'!(')!"**+,$%&amp;'!-&amp;..(')*!&amp;'!/+0!12!-&amp;'$,&amp;3*!456$$&amp;'*7!-8+#90&amp;:+*7!;,&amp;&lt;)&amp;='*7!&gt;,%)*7!?+:$0&amp;:+*@!
!
User Interface This model is a generalization of the user interface of the SUT.
F!or exampCleo,mimnantdhe casDeesocfripUtilotniPro the UI model consists of abstractions
representing itsCAwldedearbRRooplllblabagcakceks aSRneedtmaocrveoestnaotrreersoptoolirsne.tpoToninhttheeosndeathtapebadaasgteaebaasend control objects encapsulate
theAcCtioSnSs seRleolclbtaocrks used Rteostoirdeepnretviifoyus wdaetabbaeselevmalueensts in the HTML source document
tree. Auto mExaectuetde tests tRhuenns ardeaftearbaesnecsceritphtese abstractions instead of the
implemendetaMilastc,hwhich mCahkecekss wtehsetthseretwaosideartasets amreaeqinuatlain as the application changes
t a!Atsisoerntions to
[8",#9$%&amp;].'!(F'u)!r"t*h*+e,$r%m&amp;'!o-r&amp;e.,.p('a)g*!e&amp;'a!/n+d0!1c2!o-n&amp;'t$r,o&amp;3l*!4o56b$$j&amp;e'c*t7!s-8a+#r9e0&amp;n:+a*m7!;,e&amp;d&lt;)&amp;u=s'in*7g!&gt;,%d)*o7!m?+a:$i0n&amp;-:s+p*@!ecific
concepts. For example, a grid control used for entering pay data would be named
Pa!yDataEntryGrid. Using such terms allows domain experts and end users to
e a!sily identify and specify various aspects of the SUT.</p>
      <p>!
M! acros A macro in computer science is a pattern that specifies how a sequence
of inputs is mapped to a replacement input sequence. Macros are often used
to! make programming tasks less repetitive and less error-prone. Our approach
le!verages the benefits of macros to improve test specification. Testers can define
frequently used test setup, input, or assertion command sequences, and store
th!em in a central location. These macros are then named using domain-specific
te!rms, and integrated into our testing language. Similar to our abstract test
commands, test macros can target user or database interactions.
!
!
3.3
!</p>
      <p>Configuration Models
S!everal abstractions for configuring the underlying platform and environment
of the SUT are integrated into our language. These include abstractions for:
S!erver Environment Configuration – Application servers, web servers, database
se!rvers, reporting servers that make up the test environment; OS/Platform
Configuration – Operating systems on which to test the desktop and mobile versions
of the cloud application; Web Browser Configuration – Clients to use during
cross-browser compatibility testing, e.g., Chrome, Firefox, Internet Explorer or
a combination thereof; and Test Harness Configuration – Modes and settings
that allow users to tweak aspects of test execution including timing
characteristics, logging, among others.
!"##$%&amp;'''''!
!!"#$%&amp;'(''')*+,-*.(!/#0!"*1$&amp;++!2(*.#$(!
!!3#.4&amp;$'!!!5,&amp;001!6*0.,*7&amp;8!3-*9!:*0-&amp;!
!!:&amp;0;,7'!!!&lt;=&gt;?8!"*1$&amp;++@AB!
()*+$%$,-./0!!''
''C+.,"$&amp;!1+,-2%.'
''
!),"3''''''
!!D,E(0!F!6(.#%!*!"*1$&amp;++!G&lt;&lt;&lt;H!
!!30-!+*#0I4!1+,-2%.'
!!30-!+&amp;7,0!*'!*!"*1$&amp;++!3-9,0,'.$*.&amp;$!
!!!!J1!'(..,07!.4(!C'($=*9(?(K.J&amp;K!.&amp;!L*-9,0L8!
!!!!!!!!!!!!!!!!!!!"*''M&amp;$-?(K.J&amp;K!.&amp;!L#+.,L!
!!!!30-!I+,IN,07!&amp;0!.4(!O&amp;7,0J#..&amp;0!
!
4)0,0'
''6I(0*$,&amp;P!"*1$&amp;++!64&amp;#+-!/#0!.&amp;!:&amp;9%+(.,&amp;0'
!!D,E(0!F!=*E,7*.(!.&amp;!.4(!"*1$&amp;++!QE($E,(M!!
!!R4(0!F!I+,IN!.4(!6.*$."*1$&amp;++J#..&amp;0!
!!?4(0!.4(!"$&amp;I(''6.*.#'O*S(+!,'!L:&amp;9%+(.(-&lt;L!
!!30-!.4(!:$(*.(J*.I4('J#..&amp;0!,'!(0*S+(-!
!
Fig!. 2. Example Test Case Specification
!
!
3.4</p>
      <p>!</p>
      <p>Illustrative Example
Figure 2 presents an example test case specification defined using our approach.
The example test consists of four main blocks: Summary, Declarations, Setup,
and Tests. The summary block (Lines 1-4) holds meta information about the test,
which includes a purpose, authors, and various configurations. In Line 4, .NET
is a configuration that runs tests against the UltiPro desktop web application
using three browsers for compatiblity testing. On the same line, Payroll-14 sets
up the test to run on a server environment configured for payroll processing.</p>
      <p>Applications and data that will be used throughout the test must appear
in the declarations block (Lines 6-7). In this block, automatic word completion
popups (i.e., intelli-sense) is filtered to a list of available application models and
database types. Line 7 of Figure 2 specifies that the UltiPro application model
will be referenced whenever the name UltiPro appears in the test.</p>
      <p>The setup block (Lines 9-15) contains a set of preconditions for the test,
written using a behavioral-driven development (BDD) style syntax. Line 10
illustrates the use of a database macro to Setup a Payroll. Note that elipses are
used to mask the actual parameters passed into the macro. Inline, users can
declare high-level test steps (Line 12), and define how those steps are implemented
as actions or assertions on the application model (Lines 13-15).</p>
      <p>Test cases appear within the block named Tests (Lines 17-22). Line 18
provides a name for the single test in the example, while Line 19 demonstrates the
usage of a UI navigation macro. The click action command is illustrated in Line
20, while Lines 21 and 22 show the Is and Is Enabled assertion commands.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Prototype</title>
      <p>
        This section presents the setup, design and implementation of the Legend
prototype, which was developed to demonstrate the feasibility of the proposed
approach. Legend primarily consists of tools for authoring, executing and
debugging tests written to validate UltiPro [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>Legend has been developed in C# as a Visual Studio (VS) extension. The
VS 2010 SDK provides components for extending the VS Editor with a
custom language service. The Legend language service supports many of the VS
SDK features including syntax coloring, error highlighting, intelli-sense,
outlining, tooltips, and debugging. Integration of application and configuration models
using domain concepts is a novel feature of Legend that separates it from other
test specification languages and tools.</p>
      <p>
        The underlying testing framework used to run Legend tests is an in-house
tool called Echo [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Echo was developed based on Selenium, a cross-browser
web UI automated testing framework [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Page and control abstractions for the
application domain model are defined using Echo, in accordance with the page
object pattern [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Frameworks such as MbUnit [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] are used to provide
capabilities such as test fixture setup and teardown, data-driven testing, and reporting.
The custom tooling developed for the prototype is divided into two categories:
Editing Tools and Configuration Tools.
      </p>
      <p>Editing Tools Figure 3 provides a UML package diagram showing the
design of Legend DSL Editor. As shown in Figure 3, the editor is comprised of
three major packages: EditorExtension, ApplicationModelIntegration and
CodeGeneration. Key classes from each package, along with their
interdependency relationships are also shown in the diagram.</p>
      <p>
        The EditorExtension subsystem (top of Figure 3) contains the components
that implement token colorization, syntax checking, block outlining, and
intellisense. This subsystem is the main point of interaction between the Visual
Studio editor and the Legend code extensions. The classes with the stereotypes
Providers, Controllers, Taggers, and Sources are derived from the Visual
Studio SDK, and directly interact with the .NET Managed Extensibility
Framework (MEF) [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Classes stereotyped Augmentors and Services represent our
custom extensions. The LanguageService class coordinates several of the
interactions between the editor and the application models.
      </p>
      <p>Integration with the application model is achieved via the
ApplicationModelIntegration subsystem (bottom-left of Figure 3). It contains two types of
classes: ModelProviders and Models. The ModelProvider classes use reflection
to read the page objects, control objects, macros and elements that make up
the Models. It is also responsible for filtering intelli-sense on the model, given a
specific test context. For example, at the point where a test declares access to
a particular web page, the ModelProvider scopes the word completion picklist
for elements to include only elements that appear on that page.</p>
      <p>Lastly, the CodeGeneration subsystem (bottom-right of Figure 3) provides
logic for translating the abstract tests written in Legend into code executable
&lt;&lt;Providers&gt;&gt;
TokenTaggerProvider
&lt;&lt;Taggers&gt;&gt;</p>
      <p>TokenTagger
&lt;&lt;Providers&gt;&gt;
CompletionSourceProvider</p>
      <p>&lt;&lt;Sources&gt;&gt;</p>
      <p>CompletionSource
&lt;&lt;Services&gt;&gt;
LanguageService</p>
      <p>Legend.EditorExtension</p>
      <p>&lt;&lt;Augmentors&gt;&gt;
TokenTagAugmentor
&lt;&lt;Augmentors&gt;&gt;
&lt;&lt;Interface&gt;&gt;</p>
      <p>ICompletionAugmentor
&lt;&lt;ModelProviders&gt;&gt;</p>
      <p>&lt;&lt;Interface&gt;&gt;
IApplicationModelProvider
+GetApplicationModels()
&lt;&lt;Models&gt;&gt;</p>
      <p>Element
&lt;&lt;ModelProviders&gt;&gt;
ApplicationModelProvider
&lt;&lt;Models&gt;&gt;</p>
      <p>PageObject
&lt;&lt;Models&gt;&gt;
AutomationContext
&lt;&lt;Models&gt;&gt;
MacroCategory
&lt;&lt;Models&gt;&gt;</p>
      <p>Macro
&lt;&lt;Models&gt;&gt;
ControlObject</p>
      <p>&lt;&lt;Augmentors&gt;&gt;
LanguageAugmentation
&lt;&lt;Services&gt;&gt;
&lt;&lt;Interface&gt;&gt;</p>
      <p>ILanguageService
+GetCurrentCompletions()
+GetTags()
+UpdateSnapshotState()
&lt;&lt;Generators&gt;&gt;</p>
      <p>EchoGenerator
+GenerateScript()
+GenerateAssembly()</p>
      <p>&lt;&lt;Generators&gt;&gt;
EchoAssemblyBuilder
&lt;&lt;Generators&gt;&gt;
EchoTestBuilder</p>
      <p>&lt;&lt;Parsers&gt;&gt;
EchoCommandParser
Legend.ApplicationModelIntegration
Legend.CodeGeneration
by the Echo framework. In order to support debugging at multiple levels of
abstraction, the EchoGenerator has two modes of generation: Script – generates
test scripts written in the Echo syntax; and Assembly – generates a Common
Intermediate Language (CIL) representation of the Echo test. Our prototype
maps the CIL to the domain-specific test steps. A test can therefore be executed
and debugged at the level of the domain-specific test language, or the script
language of the underlying Echo testing framework.</p>
      <p>Configuration Tools Abstractions for the test environment and platform
configurations are implemented in two distinct XML files called Environments.xml
and Parameters.xml. The environments XML contains a list of all the test
environments that are connected to a tool that can automatically request the
latest UltiPro build. The file is auto-generated and populated with the unique
identifiers used by each team to refer to their test environments. Information
related to the specific network and database servers, along with any credentials
for authentication are also stored in the Environments.xml file.</p>
      <p>The Parameters.xml allows users to specify a range of configurations ranging
from desktop web settings such as browsers and languages, to mobile web settings
such as device screen size and orientation. Although each team can create their
own configurations, there are a set of fixed configurations that are available for
use across all teams during regression testing. The data in both the environments
and parameters XML files are passed directly to the Echo testing framework prior
to test execution.
5</p>
      <sec id="sec-4-1">
        <title>Lessons Learned</title>
        <p>A key factor that contributed to the successful development of the prototype
was having robust, highly extensible and configurable underlying testing
frameworks. Echo and Selenium provided the implementations to support many of the
abstractions described in the approach. Building the application models required
a collaborative effort among developers, testers and domain experts. Developers
would create the page objects and control objects, while testers and domain
experts made sure they were named and exposed appropriately for testing. Macro
creation was primarily done by testers and domain experts, with occasional
assistance from the developers if necessary.</p>
        <p>One of the more complex aspects of the prototype implementation was the
module for keeping track of the test context in order to filter intelli-sense. This
required the creation of a state-based rules engine to allow us to perform different
editor actions based on previously specified lines in the test. Although
challenging to implement, this feature was necessary to provide meaningful intelli-sense
that guides testers during test creation. In other words, testers are only
presented with commands, model elements, and other keyword suggestions if they
are applicable in the current context.</p>
        <p>Based on initial responses to prototype demonstrations, a major benefit of
Legend is the ease with which test cases can be specified and reviewed by
nontechnical users. The tool can therefore be leveraged by domain experts and
end users during acceptance testing. It also allows these stakeholders to assist in
debugging issues using a language they understand, and without being concerned
with the low-level implementation details of the test automation. Since tests are
specified in an english-like syntax, using Legend could reduce or eliminate the
need to maintain a separate inventory of test documentation. However, further
evidence through a case study or empirical evaluation is needed to be able to
fully validate these claims.</p>
        <p>A limitation of the current prototype is the lack of an externalized point of
extension for the test commands and their syntax. Since domain experts, testers
and developers from several teams will be defining new model elements as the
application evolves, we need to provide a mechanism that allows new page or
control-specific commands to be easily added to the language. Web UI elements
with dynamically generated identifiers are also not supported by the prototype,
or the underlying Echo testing framework, but are planned for future releases.
6</p>
      </sec>
      <sec id="sec-4-2">
        <title>Related Work</title>
        <p>
          Although the use of domain modeling to support software engineering is not
new, only a few researchers have leveraged MDE and DSLs to support software
testing [
          <xref ref-type="bibr" rid="ref11 ref2 ref3">2, 3, 11</xref>
          ]. Kanstren and Puolitaival [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] present the OSMOTester approach
and tool that is very related to our work. OSOMOTester automatically generates
tests with domain-specific concepts. A domain expert is used to construct a
test model of the system, which is combined with a domain-specific modeling
language that constrains and guides test case generation.
        </p>
        <p>
          Hernandez et al. [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] describe a model-driven technique for designing
platform independent tests for validating web-based applications. These platform
independent tests are then combined with a model of the web technologies used
to implement the application, and generate platform-specific tests [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. Kuhn
and Gotzhein [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] present an approach that uses configurable simulations to do
platform-specific testing. They extend the UML testing profile to include
platform models for real deployments, and describe how to use these models to test
embedded systems by simulating various hardware configurations.
        </p>
        <p>
          Some researchers have proposed model-driven approaches that aid the
development of high-performance and cloud computing systems [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. Palyart and
Lugato define a high-performance computing modeling language (HPCML).
HPCML provides constructs for specifying different concerns in high-performance
scientific computing such as mathematics, parallelism, and validation. Nagel et
al. [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] introduce a meta-model for specifying bindings between business
processes and cloud services considering service-level agreements. They further
extend that meta-model to support dynamic adaptation of cloud-based services.
        </p>
        <p>
          There are several general purpose behavioral-driven development (BDD)
testing tools that help to tie acceptance tests to business requirements [
          <xref ref-type="bibr" rid="ref14 ref15 ref16">14–16</xref>
          ].
Similar to Legend, such tools aim to bridge the gap between domain experts,
developers, and testers [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. These tools typically work by creating and linking
two sets of files – specifications and step definitions [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. Legend combines these
two activities into a single, domain-specific test authoring experience. Our
research on Legend extends previous work on the Echo Web UI Test Automation
Framework [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. Echo provides a thin layer of abstraction on top of Selenium [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ],
and adds several features including command timeouts, wait throttling between
commands, database interaction, and environment and test configuration.
7
        </p>
        <p>Conclusion
The work in this paper presented an approach that applied model-driven
engineering to the development of a domain-specific test case specification language.
Our approach is general in the sense that it can be applied to any domain, but in
terms of technologies we focus on web-based applications which are deployed on
cloud computing platforms. We have implemented a prototype of the proposed
approach for a cloud-based human capital management solution. Developing the
prototype gave us first-hand experience on some of the benefits and challenges
associated with creating a DSL for testing UltiPro. Feedback from interactive
prototype demonstrations has been positive. Our next steps are to develop a full
implementation of Legend, and perform a case study using data from UltiPro.
Acknowledgments. The authors would like to thank Jorge Martinez, Michael
Mattera, and members of the Virtual Team at Ultimate Software for their
contributions to this work. We also give thanks to the judges and participants of
the Summer 2012 Ultimate Software 48 Hours Project for their valuable
feedback. Any opinions, findings, conclusions, or recommendations expressed in this
material are those of the authors, and do not necessarily reflect the views of the
Ultimate Software Group, Inc.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Stahl</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Voelter</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Czarnecki</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Model-Driven Software</surname>
          </string-name>
          Development: Technology, Engineering, Management. John Wiley &amp; Sons (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Hernandez</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>King</surname>
            ,
            <given-names>T.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pava</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clarke</surname>
            ,
            <given-names>P.J.:</given-names>
          </string-name>
          <article-title>A meta-model to support regression testing of web applications</article-title>
          . In: SEKE. (
          <year>2008</year>
          )
          <fpage>500</fpage>
          -
          <lpage>505</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. Kanstr´en, T.,
          <string-name>
            <surname>Puolitaival</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <article-title>Using built-in domain-specific modeling support to guide model- based test generation</article-title>
          .
          <source>In: MBT</source>
          . (
          <year>2012</year>
          )
          <fpage>58</fpage>
          -
          <lpage>72</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. Bruneli`ere, H.,
          <string-name>
            <surname>Cabot</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Combining Model-Driven Engineering and Cloud Computing</article-title>
          . In: Modeling, Design, and
          <article-title>Analysis for the Service Cloud -</article-title>
          MDA4ServiceCloud'
          <fpage>10</fpage>
          , Paris, France (
          <year>June 2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Ultimate</given-names>
            <surname>Software: Human Capital Management Solutions: Ultipro Enterprise</surname>
          </string-name>
          (
          <year>July 2013</year>
          )
          <article-title>www</article-title>
          .ultimatesoftware.com/solution.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. Jeff Brown: MbUnit Test Framework http://mbunit.com/ (
          <year>July 2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Stewart</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huggins</surname>
          </string-name>
          , J.: Selenium - Web Browser Automation http://docs. seleniumhq.org/ (
          <year>July 2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Virtual</given-names>
            <surname>Team: Echo Web UI Test Automation</surname>
          </string-name>
          <article-title>Framework</article-title>
          .
          <source>Technical report</source>
          , Ultimate Software Group, Inc. (
          <year>October 2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Wilk</surname>
          </string-name>
          , J.:
          <source>Page Object Pattern (March</source>
          <year>2012</year>
          ) http://blog.josephwilk.net/ cucumber/page-object-pattern.
          <source>html (July</source>
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Microsoft: MSDN - Visual</surname>
            <given-names>Studio</given-names>
          </string-name>
          : Extending the Editor (
          <year>July 2013</year>
          ) http://msdn. microsoft.com/en-us/library/dd885242.aspx.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Kuhn</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gotzhein</surname>
          </string-name>
          , R.:
          <article-title>Model-driven platform-specific testing through configurable simulations</article-title>
          .
          <source>In: Model Driven Architecture - Foundations and Applications</source>
          . Volume
          <volume>5095</volume>
          of Lecture Notes in Computer Science. Springer Berlin Heidelberg (
          <year>2008</year>
          )
          <fpage>278</fpage>
          -
          <lpage>293</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Palyart</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ober</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lugato</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bruel</surname>
            ,
            <given-names>J.M.:</given-names>
          </string-name>
          <article-title>HPCML: a modeling language dedicated to high-performance scientific computing</article-title>
          .
          <source>In: Proceedings of the 1st International Workshop</source>
          on Model-
          <article-title>Driven Engineering for High Performance and Cloud computing</article-title>
          .
          <source>MDHPCL '12</source>
          , New York, NY, USA, ACM (
          <year>2012</year>
          ) 6:
          <fpage>1</fpage>
          -
          <issue>6</issue>
          :
          <fpage>6</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Nagel</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gerth</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yigitbas</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Christ</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Engels</surname>
          </string-name>
          , G.:
          <article-title>Model-driven specification of adaptive cloud-based systems</article-title>
          .
          <source>In: Proceedings of the 1st International Workshop</source>
          on Model-
          <article-title>Driven Engineering for High Performance and Cloud computing</article-title>
          .
          <source>MDHPCL '12</source>
          , New York, NY, USA, ACM (
          <year>2012</year>
          ) 4:
          <fpage>1</fpage>
          -
          <issue>4</issue>
          :
          <fpage>6</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Chelimsky</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Myron</surname>
            <given-names>Marston</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Lindeman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Rowe</surname>
          </string-name>
          , J.:
          <article-title>RSpec - BDD framework for the Ruby Programming Language</article-title>
          (
          <year>December 2010</year>
          ) http://rspec.info (
          <year>July 2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Hellesoy</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wynne</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>The Cucumber Book: Behaviour-Driven Development for Testers and Developers</article-title>
          . Pragmatic Programmers. Pragmatic
          <string-name>
            <surname>Bookshelf</surname>
          </string-name>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Nagy</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bandi</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hassa</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>SpecFlow: Pragmatic BDD for</article-title>
          .
          <source>NET (November</source>
          <year>2009</year>
          ) http://www.specflow.org/specflownew/ (
          <year>July 2013</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>