<!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>
      <journal-title-group>
        <journal-title>Goa, India, Feb</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>ACT (Abstract to Concrete Tests) - A tool for generating Concrete test cases from Formal Specification of Web Applications</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Khusbu Bubna</string-name>
          <email>khusbu.bubna@iiitb.org</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sujit Kumar Chakrabarti</string-name>
          <email>sujitkc@iiitb.ac.in</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>International Institute of Information Technology</institution>
          ,
          <addr-line>Bangalore</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2016</year>
      </pub-date>
      <volume>18</volume>
      <issue>2016</issue>
      <fpage>16</fpage>
      <lpage>22</lpage>
      <abstract>
        <p>As web applications are becoming more and more ubiquitous, modeling and testing web applications correctly is becoming necessary. In this paper, we have used a formal speci cation language, State chart to model the navigation behaviour aspect of web applications. This paper presents the ACT (Abstract to Concrete Tests) tool, an approach of generating concrete executable Selenium RC JUnit test cases from a formal State chart speci cation model. The ACT tool can generate concrete Selenium RC JUnit test cases from abstract test cases by utilizing data shared across di erent interactions of the web application with the web server. Throughout the paper, a case study of Learning Management System is used to illustrate our approach.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>Nowdays, the use of web applications has grown to a huge
extent. Web applications are used in online shopping, online
banking, etc., so designing and testing web applications
rigorously has become very crucial. Formal speci cation
languages are used to clarify customer's requirements by
removing ambiguity, inconsistency and incompleteness in the
software requirements and design process. Thus, they are
helpful in reducing the requirement errors in the early stages
of the software development life cycle. Formal speci cations
are mostly used in critical systems where the cost of failure
is catastrophic. Formal speci cations can be used in several
ways of design cycle, static veri cation and test generation
being the most notable.</p>
      <p>
        In this paper, we present the ACT (Abstract to Concrete
Tests) tool, which uses a novel approach of generating
concrete test cases from abstract test cases by using data shared
across di erent interactions of the web application with the
web server. A formal speci cation language `Statecharts' [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
was used to model the navigation behaviour aspect of web
Copyright c 2016 for the individual papers by the papers’ authors.
Copying permitted for private and academic purposes. This volume is published
and copyrighted by its editors.
applications. Then abstract test cases were generated from
the State chart model in our ACT tool. Abstract test cases
cannot be directly executed on the implementation since
they are de ned using elements and objects of the State
chart model, and must be rst transformed to concrete test
cases. So nally, concrete executable Selenium RC JUnit
test cases are generated from these abstract test cases in our
ACT tool which can be directly executed on the
implementation. The remainder of the paper is organized as follows.
Section 2 gives a brief review of related work, while Section
3 explains the proposed methodology used by our ACT tool.
Section 4 illustrates the State chart speci cation for
modeling the navigation behaviour of web applications. Section 5
illustrates the generation of test path from the State chart
model. Section 6 illustrates how abstract test cases are
generated using Symbolic execution and SMT solver. Section 7
illustrates the translation of abstract test cases to concrete
test cases. Section 8 concludes the paper and Section 9 gives
scope for future work.
2.
      </p>
    </sec>
    <sec id="sec-2">
      <title>RELATED WORK</title>
      <p>
        A number of formal, informal and semi-formal models like
automata [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], Statechart [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], UML and OCL [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], UML
based web engineering, alloy, directed graph and control ow
graphs, SDL, term rewriting systems, XML have been
proposed in various studies [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] for modeling web applications.
The authors in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] have proposed UML class diagram and
the authors in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] have proposed statechart for modeling web
navigation. A methodology for generation of concrete
executable tests from abstract test cases using a test
automation language, the Structured Test Automation Language
(STAL) was proposed in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. The authors in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] have
proposed a mapping between identi able elements in the model
to JUnit executable java code. The author in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] have
presented an approach using domain speci c languages to model
the navigation aspect of the web application and have used
a UI mapping XML le to generate concrete test cases for
Selenium and Canoo web test tools. In [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], an approach that
utilizes recorded user interaction data to construct a state
machine model especially for testing AJAX functionality is
presented. Input data is provided from the collected requests
and test oracles have to be created manually. The generated
test sequences are translated into the test case format of the
Selenium test automation tool. The authors in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] have used
model checking to generate test cases for control ow and
data ow coverage criteria. The authors in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]
3.
      </p>
    </sec>
    <sec id="sec-3">
      <title>PROPOSED METHODOLOGY</title>
    </sec>
    <sec id="sec-4">
      <title>A FORMAL MODEL FOR WEB NAVI</title>
    </sec>
    <sec id="sec-5">
      <title>GATION - STATE CHART</title>
      <p>
        From among the various nite state based formal speci
cation languages, we have used Statecharts [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] for modeling the
navigation behaviour of web applications. Figure 2 shows
the State chart speci cation of our case study, the
Learning Management System (LMS) used within our institute.
In the Statechart speci cation shown in Figure 2, Inactive
state denotes that the web application has not yet started
operating. The composite state Active denotes that the web
application is in an operating state. Inside Active state, each
web page was modelled as a separate state. When the user
navigates from one webpage to another, there is a transition
between the corresponding states. LMS Login Page denotes
the Login page of Learning Management System. Here we
have used the mathematical notations of sets and rst order
predicate logic constructs in guards and actions of the
transitions in State chart model. In a web application, the value
which is entered by the user in one interaction of the web
application with the web server is often used back in another
interaction of the web application with the web server. For
example, as shown in the State chart model of Figure 2,
admin can register a student in the LMS System by entering
values in the username and password input elds in the Add
Student User Page. A necessary requirement for a student
to login in the LMS Login Page is that the student must be
registered beforehand and so must have a valid student
username and password. Thus there is a data ow between Add
Student User Page page and LMS Login Page. The
variables valid student usernames and valid student passwords
are de ned in the transition from state Add Student User
Page to Successfully Student Added Page and are used in
the transition from state LMS Login Page to My Courses
web page. The variables valid student usernames,
valid student passwords, valid teacher usernames and
valid teacher passwords are shared between di erent
interactions of the web application with the web server and across
di erent users using the web application. When the web
application has started operating, these variables are initialized
to the null set. For example as shown in the State chart
diagram of Figure 2, variables valid student usernames,
valid student passwords, valid teacher usernames and
valid teacher passwords are initialized to null set in the
transition from state Inactive to state Active. On a successful
registration of either a teacher or a student, the values of
these variables are updated and when either a student or
a teacher logs in the LMS Login page, the value of these
variables are accessed to check if a student or teacher is
already registered or not. Our ACT tool, as illustrated in the
remaining sections can store and share data across di erent
interactions of the web application with the web server and
can generate Selenium RC JUnit concrete test cases utilizing
this data.
5.
      </p>
    </sec>
    <sec id="sec-6">
      <title>TEST PATH GENERATION FROM STATE</title>
    </sec>
    <sec id="sec-7">
      <title>CHART MODEL</title>
      <p>The front end step in the ACT tool which generates test
paths can be any test path generating algorithm like graph
coverage algorithms. But model checking which is a formal
veri cation technique can also be used to generate test paths
by formulating a temporal logic speci cation as a trap
property to be veri ed. The straight forward way to represent
a State chart as a transition system is to atten its
hierarchy. In our approach, the hierarchical State chart
navigation model was rst attened and then transformed into an
SMV program. The trap properties for navigation were
written in CTL formulas and then the Symbolic Model Veri er
(NuSMV) tool is executed which generates the counter
examples. For example, the CTL Trap Speci cation Property
for specifying that state SE-230 Software Testing is
reachable from the initial state is:
CTL Trap Speci cation Property:
! EF(state=SE-230 Software Testing)
This trap property will generate a counter example which is
our test path. For this counter example there will be two
paths. One from LMS Login Page to My Courses Page to
SE-230 Software Testing Page. And the second test path will
be the loop from LMS Login Page to Successfully Student
Added Page then to My Course Page to SE-230 Software
Testing page. Here we will restrict the length of the loop in
the counter example by using bounded model checking and
set the length of the counter example to a xed size. The
CTL Trap properties for generating test paths are written
for various requirements of the web application, like the top
page of a web application should be reachable from all the
pages of the web application. In addition, we also wrote
CTL trap properties for node coverage criterion.</p>
      <p>Login.clicked/
[!username2!∉!valid_student_usernames/⋁!!!
!!password2!!∉!valid_student_passwords!!!]!</p>
      <p>Login.clicked/
[!username!∉!valid_teacher_usernames/⋁!!!
!!password!!∉!valid_teacher_passwords!!!]!
!</p>
      <p>Login.clicked/
[!username2!∈!valid_student_usernames!!∧!
password2!∈!valid_student_passwords!!]!
!</p>
      <p>My!Courses!!
Design/and/Analysis/
of/
Safety/Critical/
Systems.clicked/</p>
      <p>Login.clicked/
[!username3!∈!!valid_teacher_usernames!/∧/
!!!password3!!∈!!valid_teacher_p a!sswords!]!
!
Software/
Testing.clicked/
CSISEI270!Design_and_Analysis!!
_Of_SafetyICritical_Systems!
SEI230_Software!
_Testing!
Grades.clicked/</p>
      <p>News/</p>
      <p>Forum.clicked/
Grades!Page!</p>
      <p>General/
Discussion/</p>
      <p>Forum.clicked/
News!Forum!</p>
      <p>General!Discussion! !</p>
      <p>Forum!</p>
      <p>Slides/
Folder.clicked/
Slides!Folder!
page!</p>
      <p>LMS!Login!Page!
!</p>
      <p>Logout.clicked/
My!Courses!
TDD/
Assignment.clicked/</p>
      <p>Test!Driven!!
Developemnt!
Assignment!Page!</p>
      <p>Login.clicked/
[!username!=!valid_admin_username!/∧!/
!!!!password!=!valid_admin_password!]!</p>
      <p>Logout.clicked/
Admin!Home!!</p>
      <p>Page!
Add!Users!</p>
      <p>Add.clicked/
[!username1!∉!valid_student_usernames!∧!
password1!∉!valid_student_passwords!]!/!
!
valid_student_usernames/:=/
valid_student_usernames/∪/username///∧/
valid_student_passwords/:=/
valid_student_passwords/∪/password//</p>
      <p>Successfully!
Student!Added!</p>
      <p>Page!</p>
    </sec>
    <sec id="sec-8">
      <title>ABSTRACT TEST CASES GENERATION</title>
    </sec>
    <sec id="sec-9">
      <title>USING SYMBOLIC EXECUTION AND SMT</title>
    </sec>
    <sec id="sec-10">
      <title>SOLVER</title>
      <p>After the test paths are generated from the State chart
model, symbolic execution is carried out to generate input
values to guide the execution along the test paths. The path
predicate corresponding to the test path is computed. This,
in turn, is given to an SMT solver to generate concrete input
values. These values are used to generate the abstract test
cases. The algorithm used to generate the abstract test cases
using symbolic execution is shown in the block diagram in
Figure 3.
6.1</p>
    </sec>
    <sec id="sec-11">
      <title>Path Predicate Formation &amp; Computation of Concrete Values</title>
      <p>This section illustrates the method of formation of path
predicates and the generation of concrete values using the
example of the counter example generated from the CTL
Trap Property !EF(state=SE-230 Software Testing). The
variables valid student usernames and valid student passwords
in the State chart model in Figure 2 are internal program
variables and are internally maintained as sets. These
variables are initialized to null in the transition from state
Inactive to composite state Active as shown in Figure 2. The
path predicate formed for the transition from Add Student
User Page to Successfully Student Added Page is
(username1 6= "") ^ (password1 6= "") ^ (username1 2=
) ^ (password1 2= ).</p>
      <p>
        Sets valid student usernames and valid student passwords are
consequently updated to username1 and password1. So the
path predicate for the transition from state LMS Login Page
to My Courses is ((username1
6= ""^(password1 6= "")^(username1 2= )^(password1 2=
)^(username2 2 username1)^(password2 2 password1))
So the nal path predicate for the counter example
! EF(state=SE-230 Software Testing ) is: ((username1 6=
"" ^ (password1 6= "") ^ (username1 2= ) ^ (password1 2=
) ^ (username2 2 username1)^
(password2 2 password1))
Here username1 and password1 are the symbolic variables
corresponding to the Add Student User page, and username2
and password2 are the symbolic variables corresponding to
the LMS Login page. An SMT solver like CVC3 [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] would
determine if the path predicate is satis able, and if yes, then
it will generate satisfying values for the symbolic variables
occurring in the formula and hence the concrete input values
would be generated. Suppose, if a counter example is
generated for the path from state Inactive to state Error Page
through states LMS Login, Admin Home Page, Add Users
and Add Student User Page, then the path predicate formed
will be: (username1 2 ) ^ (password1 2 ) which will be
a contradiction i.e. unsatis able predicate. Hence, this path
will be rejected as infeasible.
6.2
Finally the abstract test cases are generated by plugging
in concrete input values which are computed in the
symbolic execution stage at appropriate points in the counter
examples. The phases in the counter examples which have
Path
Spec
      </p>
      <p>Symbolic</p>
      <p>Execution</p>
      <p>Path
Predicate
Extraction
Form Test</p>
      <p>Case</p>
      <p>Concrete
Values</p>
      <p>SMT
Solver</p>
    </sec>
    <sec id="sec-12">
      <title>7. TRANSLATION OF ABSTRACT TEST</title>
    </sec>
    <sec id="sec-13">
      <title>CASES TO CONCRETE TEST CASES</title>
      <p>The last step is deriving concrete executable test cases from
these abstract test cases so these concrete test cases can
communicate directly with the system under test. The
abstract test cases generated from the State chart model are
on the same level of abstraction as the model since the State
chart model they are generated from contains only partial
information of the implementation under test. In Figure 5,
even through the input values are concrete, the test case is
username=\admin"
password=\admin"
Login.clicked
Add Users.clicked
Add Student.clicked
username1=\MS2013009"
password1=\abc"
Add.clicked
Logout.clicked
username2=\MS2013009"
password2=\abc"
Login.clicked
Software Testing.clicked
still abstract because rstly variables like username1,
password1, etc. needs to be mapped to the implementation
entities . And, secondly many of the inputs that may be needed
may not be there in the original speci cation and are only
available after the exact implementation is nished. For
generating concrete test cases from the abstract test cases
generated in the previous step, the ACT tool uses a
mapping between phrases used in the State chart speci cation
model to Selenium Remote Control JUnit test code which
helps to translate an abstract test to concrete Selenium RC
JUnit test. Figure 8 shows a part of XML le that was
created to give a mapping between the phrases in the State
chart model of Figure 2 to Selenium RC JUnit java code
for our case study of Learning Management System. The
mappings XML le is created manually. Since, the State
chart model contained only partial information of the nal
implementation. So, now the additional information that
were abstracted out from the State chart model has to be
added in the Mappings XML le in order to generate the
concrete Selenium RC Junit test cases. From the source
code implementation of the case study of HMS, we found
that in the Add Student User page there were additional
input elds like Name and Department which were abstracted
out in the State chart speci cation of Figure 2. So these
elds were also included in the Mappings XML le. Using
the generated abstract test cases from the previous step and
the mappings XML le created manually and fed as input
to the ACT tool, a set of concrete Selenium RC Junit test
cases is generated in this step. Figure 5 shows one of the
concrete Selenium JUnit test case generated from our ACT
tool for the case study of Learning Management System.</p>
    </sec>
    <sec id="sec-14">
      <title>RESULTS</title>
      <p>For two other web based enterprise applications developed
within our institute, a Hospital Management System (HMS)
and a Student Information System (SIS), we modeled our
web applications using the proposed method.</p>
      <p>Table 2 shows the lines of code (LOC) of the two systems,
the number of nodes in the attened State chart (Nflat), the
number of mappings and the number of abstract test cases(
or counter examples) used for the various test coverage
criterion. A total of 14 abstract test cases were used for HMS
&lt;mappings&gt;
&lt;mapping&gt;
&lt;phrase&gt;state&lt;/phrase&gt;
&lt;value&gt;Add Student User&lt;/value&gt;
&lt;code&gt;
selenium=new DefaultSelenium(\localhost",4444," refox/"
+\Applications/Fire+\
refoxfox.app/Contents/MacOS/"
bin",\https://lms.iiitb.ac.in/moodle");"
selenium.start();
selenium.open(\/course/view.php?id=19");
&lt;/code&gt;
&lt;/mapping&gt;
&lt;mapping&gt;
&lt;phrase&gt;username1&lt;/phrase&gt;
&lt;value&gt;u1&lt;/value&gt;
&lt;range&gt;non blank&lt;/range&gt;
&lt;code&gt;selenium.type (\css=input[id='username',]",u1);&lt;/code&gt;
&lt;/mapping&gt;
&lt;mapping&gt;
&lt;phrase&gt;Name&lt;/phrase&gt;
&lt;value&gt;n&lt;/value&gt;
&lt;code&gt; selenium.type(\css=input[id='name']",n); &lt;/code&gt;
&lt;/mapping&gt;
&lt;mapping&gt;
&lt;phrase&gt;Department&lt;/phrase&gt;
&lt;value&gt;dp&lt;/value&gt;
&lt;code&gt; selenium.type(\css=input[id='department']",dp);&lt;/code&gt;
&lt;/mapping&gt;
&lt;/mappings&gt;
system and a total of 53 abstract test cases were used for
SIS System for various test criterion. Currently, we have
modelled the two case studies of HMS System and SIS
System but we are currently running our ACT tool and trying
to calculate the number of concrete test cases that would be
generated.
9.</p>
    </sec>
    <sec id="sec-15">
      <title>CONCLUSION</title>
      <p>Test cases generated from formal speci cations are often at
an abstract level. They cannot be executed directly using a
test automation tool, e.g. Selenium. The existing methods
have tried to deal with this problem using a mapping
approach. However, this approach is fundamentally limited in
its capability to translate abstract test cases into concrete
test case due to the presence of data ow relationship
between atomic interactions between the (test-)client and the
server. In this paper, we have presented a precise
characterisation of this problem. Further, we have provided a test
generation methodology which uses symbolic execution to
resolve the data- ow between atomic interaction. The
resulting abstract test cases are concrete enough so that the
mapping method is e ective in completely translating them
to concrete test cases that can be directly executed on
Selenium test runner. Through some of the steps like creation
of Mappings XML le, construction of State chart, etc are
manual but there is fairly a reasonable automation in the
other steps in the ACT tool. Therefore, our approach is
able to achieve a reasonable amount of end to end
automation of the test generation process from formal speci cation.</p>
      <p>Web Applications
133
15,770
20
56
10. FUTURE WORK
In our future work, we will try to address the following
issues:</p>
      <p>Currently we are running our ACT tool on our LMS
system and we are currently trying to nd out the
number of concrete test cases that would be generated
for various test criteria. So in our future work, we
will try to nd out the relation between the number
of concrete test cases and the number of abstract test
cases and we will also try to see how the number of
concrete test case and the number of abstract test cases
varies with the size of the State chart model.</p>
      <p>In our future work, we will generalise this approach to
apply other forms of formal speci cation and coverage
criteria. In addition, we intend to apply other forms
of front-end techniques like graph coverage criteria in
generating test paths instead of the model checking
approach for generation of test paths .
11.
selenium . start ();
selenium . open (" ROOT / login / index . php ");
selenium . type (" css = input [id=' username ']",
" admin ");
selenium . type (" css = input [id=' password ']",
" admin ");
selenium . click (" xpath =// a[ contains (@href ,
'ROOT / myadmin / ')]");
selenium . click (" xpath =// a[ contains (@href ,
'ROOT / user / index . php ?id =27 ')] ");
selenium . click (" xpath =// a[ contains (@href ,
'ROOT '
selenium . type (" css = input [id=' username1 ']",
" Joe ");
selenium . type (" css = input [id=' password1 ']",
" abc ");
selenium . click ("// input [ @id =' loginbtn ']");
selenium . click (" xpath =// a[ contains (@href ,
'ROOT / login / index . php ')]");
selenium . type (" css = input [id=' username2 ']",
" Joe ");
selenium . type (" css = input [id=' password2 ']",
" abc ");
selenium . click (" xpath =// a[ contains (@href ,
'ROOT /my / ')]");
selenium . click (" xpath =// a[ contains (@href ,
'ROOT / course / view . php ?id =19 ')] ");</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>D.</given-names>
            <surname>Harel</surname>
          </string-name>
          ,\
          <article-title>Statecharts: A Visual formalism for complex systems"</article-title>
          ,
          <source>Science of Computer Programming</source>
          , Volume
          <volume>8</volume>
          ,
          <string-name>
            <surname>Issue</surname>
            <given-names>3</given-names>
          </string-name>
          ,
          <string-name>
            <surname>June</surname>
            <given-names>1</given-names>
          </string-name>
          ,
          <year>1987</year>
          , Pages-
          <volume>231</volume>
          -274.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>K.</given-names>
            <surname>Homma</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Izumi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Takahashi</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Togashi</surname>
          </string-name>
          ,\
          <article-title>Modeling and Veri cation of Web Applications Using Formal Approach"</article-title>
          .
          <source>IEICE Tech. Report</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Han</surname>
          </string-name>
          ,
          <string-name>
            <surname>C</surname>
          </string-name>
          . Hofmeister,\
          <article-title>Modeling and Veri cation of Adaptive Navigation in Web Applications"</article-title>
          ,
          <source>Proc. of 6th Intl. Conf. on Web Engg.</source>
          , pp.
          <fpage>329</fpage>
          -
          <lpage>336</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Tonella</surname>
          </string-name>
          , \
          <article-title>Analysis and Testing of Web Applications"</article-title>
          ,
          <source>Proc. of the 23rd Intl. Conf. on Software Engineering</source>
          , pp.
          <fpage>25</fpage>
          -
          <lpage>34</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M. H.</given-names>
            <surname>Alal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Cordy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. R.</given-names>
            <surname>Dean</surname>
          </string-name>
          ,\
          <article-title>Modeling methods for Web Application Veri cation and Testing: State of the art"</article-title>
          ,
          <source>Software Testing, Veri cation and Relaibility</source>
          , Vol.
          <volume>19</volume>
          , Issue 4, pp.
          <fpage>265</fpage>
          -
          <lpage>296</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>N.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          <article-title>O utt, \A Test Automation Language for Behavioral Models"</article-title>
          ,
          <source>Technical Report, GMU-CS-TR-2013-7.</source>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>A.-M. Torsel</surname>
          </string-name>
          , \
          <article-title>A Testing Tool for Web Applications Using a Domain-Speci c Modelling Language and the NuSMV Model Checker"</article-title>
          ,
          <source>6th Intl. Conf. on Software Testing, Veri cation and Validation</source>
          , pp.
          <fpage>383</fpage>
          -
          <lpage>390</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A.</given-names>
            <surname>Marcetto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Tonella</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Ricca</surname>
          </string-name>
          , \
          <article-title>State-based Testing of AJAX Web Applications"</article-title>
          ,
          <source>in Proc. of 2008 Intl. Conf. on Software Testing, Veri cation, and Validation</source>
          , pp.
          <fpage>121</fpage>
          -
          <lpage>130</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>H. S.</given-names>
            <surname>Hong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Sokolsky</surname>
          </string-name>
          , \
          <article-title>Automatic Test Generation from Statecharts Using Model Checking"</article-title>
          ,
          <source>in Proc. of FATES'01</source>
          , Workshop on Formal Approaches to Testing of Software, Vol. NS-
          <volume>01</volume>
          -4 of BRICS Notes Series.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Gnesi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Latella</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Massink</surname>
          </string-name>
          , \
          <article-title>Formal Test-Case Generation for UML Statecharts,"</article-title>
          <source>Proc. Ninth IEEE International Conf. Eng. of Complex Computer Systems</source>
          , P. Bellini,
          <string-name>
            <given-names>S.</given-names>
            <surname>Bohner</surname>
          </string-name>
          , and B. Ste en, eds.,
          <source>Apr</source>
          .
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>[11] CVC3 SMT solver: \http://www.cs.nyu.edu/acsys/ cvc3/"</mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>