Analysis and Testing of Ajax-based Single-page Web Applications
Analysis and Testing of Ajax-based Single-page Web Applications
Analysis and Testing of Ajax-based Single-page Web Applications
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Browser<br />
UI<br />
HTTP<br />
GET<br />
HTML<br />
Server<br />
App<br />
Server<br />
Figure 1.3 Classical web client/server interaction pattern.<br />
As the web matured, more server-side scripting languages appeared, examples<br />
<strong>of</strong> which include PHP, Python, Ruby, JavaServer Pages (JSP), <strong>and</strong> Active<br />
Server Pages (ASP). Such languages typically run on the server, have access to<br />
various resources, <strong>and</strong> are capable <strong>of</strong> creating <strong>and</strong> returning web <strong>page</strong>s upon<br />
request.<br />
The ability to generate web <strong>page</strong>s contributed to the separation <strong>of</strong> concerns<br />
(presentation, business logic, data) <strong>and</strong> realization <strong>of</strong> multi-tier architectures<br />
for web applications.<br />
1.1.3 <strong>Web</strong> Architecture<br />
By the year 2000, many <strong>of</strong> the initial concepts forming the backbone <strong>of</strong> the web<br />
(e.g., HTTP, URI, HTML) <strong>and</strong> additional recommendations such as Cascading<br />
Style Sheets (CSS) (level 2) <strong>and</strong> Document Object Model (DOM) (W3C, a)<br />
(level 2) were st<strong>and</strong>ardized through the World Wide <strong>Web</strong> Consortium (W3C).<br />
In addition, an architectural style <strong>of</strong> the web called REpresentational State<br />
Transfer (REST) was proposed by Fielding (2000), capturing the essence <strong>of</strong><br />
the main features <strong>of</strong> the web architecture, through architectural constraints<br />
<strong>and</strong> properties. Rest specifies a layered client-stateless-server architecture in<br />
which each request is independent <strong>of</strong> the previous ones, inducing the property<br />
<strong>of</strong> scalability. In practice, however, not many web implementations can<br />
be found that abide by the restrictions set by Rest. In particular, many developers<br />
have ignored the stateless constraint by allowing the server to keep track<br />
<strong>of</strong> relevant state changes. Chapter 2 discusses the architecture <strong>of</strong> the web in<br />
more detail.<br />
1.1.4 Rich Internet <strong>Applications</strong><br />
It soon became apparent that HTML was not designed for creating an interactive<br />
Graphical User Interface (GUI). Classical web applications are, inherently,<br />
<strong>based</strong> on a multi-<strong>page</strong> user interface model, in which interactions are <strong>based</strong> on<br />
a synchronous <strong>page</strong>-sequence paradigm. While simple <strong>and</strong> elegant in design<br />
for exchanging documents, this model has many limitations for developing<br />
modern web applications with user friendly human-computer interaction.<br />
The main limitations can be summarized as follows:<br />
• Low lever <strong>of</strong> user interactivity;<br />
4 1.1. <strong>Web</strong> Evolution