<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Introducing Usability Requirements in a Test/Model-Driven Web Engineering Method 1</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Esteban</forename><surname>Robles</surname></persName>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">LIFIA</orgName>
								<orgName type="department" key="dep2">Facultad de Informática</orgName>
								<orgName type="institution">UNLP</orgName>
								<address>
									<settlement>La Plata</settlement>
									<country key="AR">Argentina</country>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="department">Conicet 3Centro de Investigación en Métodos de Producción de Software</orgName>
								<orgName type="institution">Universidad Politécnica de Valencia Camino de Vera</orgName>
								<address>
									<addrLine>s/n</addrLine>
									<postCode>46022</postCode>
									<settlement>Valencia</settlement>
									<country key="ES">Spain</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Julián</forename><surname>Grigera</surname></persName>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">LIFIA</orgName>
								<orgName type="department" key="dep2">Facultad de Informática</orgName>
								<orgName type="institution">UNLP</orgName>
								<address>
									<settlement>La Plata</settlement>
									<country key="AR">Argentina</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Gustavo</forename><surname>Rossi</surname></persName>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">LIFIA</orgName>
								<orgName type="department" key="dep2">Facultad de Informática</orgName>
								<orgName type="institution">UNLP</orgName>
								<address>
									<settlement>La Plata</settlement>
									<country key="AR">Argentina</country>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="department">Conicet 3Centro de Investigación en Métodos de Producción de Software</orgName>
								<orgName type="institution">Universidad Politécnica de Valencia Camino de Vera</orgName>
								<address>
									<addrLine>s/n</addrLine>
									<postCode>46022</postCode>
									<settlement>Valencia</settlement>
									<country key="ES">Spain</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">José</forename><forename type="middle">Ignacio</forename><surname>Panach</surname></persName>
							<email>jpanach@pros.upv.es</email>
						</author>
						<author>
							<persName><forename type="first">Oscar</forename><surname>Pastor</surname></persName>
							<email>opastor@pros.upv.es</email>
						</author>
						<title level="a" type="main">Introducing Usability Requirements in a Test/Model-Driven Web Engineering Method 1</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">B8877F0D3150AC9C4B78F14837991493</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T04:03+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>The success of web applications is constrained by two key features: usability and fast evolution. Current web engineering approaches follow a "unified" development style which tends to be unsuitable for applications that needs to evolve fast. In this paper, we show how to address usability requirements in an agile test/model driven web engineering method. Usability requirements are contemplated from the very beginning of each cycle by creating a set of meaningful tests that drive the development of the application and ensure that no functionality is altered unintentionally through development cycles. The approach is illustrated with an example in the context of the WebML / WebRatio suite.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>It is not new that Web applications require short development cycles with constantly changing requirements, and must also be extremely usable to satisfy customers. The success of this kind of software strongly depends on fulfilling both conditions. This combination constraints the current trend towards Model-Driven Web Engineering (MDWE) approaches <ref type="bibr" target="#b12">[13,</ref><ref type="bibr" target="#b2">3,</ref><ref type="bibr" target="#b6">7,</ref><ref type="bibr" target="#b8">9,</ref><ref type="bibr" target="#b19">20]</ref> which include automatic or semi-automatic code derivation from conceptual models, thus minimizing coding errors and making the software development faster. However, MDWE approaches tend to use "unified" rather than agile styles for development, lacking the appeal of other approaches like extreme programming (XP) <ref type="bibr" target="#b10">[11]</ref> or Test-Driven Development (TDD) <ref type="bibr" target="#b1">[2]</ref>.</p><p>TDD uses small cycles to add behavior to the application. Each cycle starts by gathering requirements in the form of use cases <ref type="bibr" target="#b9">[10]</ref> or user stories <ref type="bibr" target="#b10">[11]</ref> that describe the expected behavior of the application informally. Next, the developer abstracts concepts and behavior and concretizes them in a set of meaningful test cases. Those tests should fail on their first run, showing that the application does not meet the requirements yet. In order to fix this problem, the developer writes the necessary code to pass the tests and runs them again until the whole test suite passes. The process is iterative and continues by adding new requirements. In these cycles, the developer can refactor <ref type="bibr" target="#b7">[8]</ref> the code when it is necessary. Studies have shown that TDD reduces the number of problems found in the implementation stage <ref type="bibr" target="#b17">[18]</ref> and therefore its use is growing fast in industrial settings <ref type="bibr" target="#b13">[14]</ref>. We have recently defined an approach which injects a test-driven development style into a model-driven development life cycle <ref type="bibr" target="#b18">[19]</ref>. The basic idea is to apply the principles of TDD to a MDWE approach. In this manner, tests are run over the application, but if they fail, changes are applied to the models and not to the code. The application can be generated again from these models thanks to automatic transformations, and tests can be run again, continuing with the cycle. We have also defined the concept of navigation unit testing to extend the well-known concept of unit testing to the navigation realm. Navigation Unit tests check that a User Interaction Diagram (UID) is satisfied in the application by testing an interface mockup first and the derived prototype later. A summarized schema of the approach confronted with "conventional" TDD is presented in Fig <ref type="figure" target="#fig_0">1</ref>.</p><p>In this paper, we show how to deal with usability requirements in the approach described above. Usability requirements are requirements that capture the characteristics to build a usable system for the user. We illustrate the idea with two usability requirements that have functional implications, in other words, usability requirements that affect the system architecture. Following requirement guidelines of the literature <ref type="bibr" target="#b11">[12]</ref>, a list of usability characteristics that must be considered in an MDWE process are identified and a set of test cases are generated from them. These tests will lead the modeling of usability requirements in the same way that traditional TDD leads the coding phase of functional requirements. The main contributions of the paper are the following:</p><p>• We present a systematic way to deal with usability requirements incrementally.</p><p>• We propose using black box interaction tests as essential elements for driving the development phase and validating usability requirements in a web application. The structure of the paper is the following: In Section 2 we summarize the background of our proposal. In Section 3 we present our approach, and using a proof of concept we explain how we map usability requirements into test models, and how the cycle proceeds after generating the application. In Section 4 we briefly review some related work and in Section 5 we conclude and present some further work.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Background</head><p>Our proposal synergizes two different research approaches: first, the specification of usability requirements in a Model-Driven Development (MDD) schema and second the introduction of TDD in MDWE approaches. We briefly discuss the two of them:</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Specifying Usability Requirements</head><p>There is a type of usability recommendations that are related to the system architecture. These recommendations involve building certain functionalities into the software to improve user-system interaction. A big amount of rework is needed to include these features in a software system, unless they are considered from the first stages of the software development process. The idea of dealing with usability from the early stages was developed by authors as Bass <ref type="bibr" target="#b0">[1]</ref>. Those works propose including the usability when the system architecture is designed.</p><p>The best way of ensuring that usability is taken into account in the architecture design is dealing with it from the requirements capture step. These requirements lead the architecture design. In the literature, there are several works to capture usability requirements. For example, by means of i* models <ref type="bibr" target="#b26">[28]</ref> or by means of the concept called usability patterns <ref type="bibr" target="#b20">[21]</ref>. According to the proposal of Bass, we have proposed in previous works <ref type="bibr" target="#b16">[17]</ref>, a method to include usability features with functional implications in any MDD approach. The idea is to include new Conceptual Primitives in the Conceptual Model that represents all usability features.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">Bridging TDD and MDWE</head><p>Model-Driven approaches favor the construction of software by handling abstract models, thus raising the abstraction level over plain source code writing, and leading to less error-prone applications. On the other hand, agile approaches and their iterative, short-cycled way of development, result in a very appealing methodology when it comes to cope with fast change and evolution; both typical of web applications. We propose a combined methodology that takes the best of both approaches, by introducing MDD as part of a TDD cycle. The process has the same structure as TDD, but several artifacts have been adapted/added to fit in MDD approaches. The main differences with traditional TDD include: using models (for business, navigation and pres-entation) instead of code writing, gathering requirements with HTML mockups to improve communication with stakeholders and developing tests to drive the model development using a black box testing approach taking advantage of mockups. The approach includes automated tests that validate functional and usability requirements and deal with Web refactoring interventions.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">An Overview of Our Approach</head><p>Our approach is based on tests that are written before the application is developed. Tests specify usability requirements in advance so they drive the development phase and later validate that the application satisfies them. As a first step, we partially capture user requirements (Sections 3.1 and 3.2), focusing on expected behavior of the application as well as usability concerns. We next state these requirements as tests (Section 3.3), and since they are written before the application is developed, we specify them against UI mockups (stub XHTML pages used to convey application's aspects with stakeholders). A running application is then derived using a MDD tool (Section 3.4), and tests are run against that application. Because tests are written against mockups, they may not pass due to small differences between the XHTML mockups and the markup generated by the MDWE tool. Consequently, tests must be adapted to reflect the final generated layout (Section 3.5). Some usability aspects may appear after the application has been developed or even deployed. Those changes involve dealing with existing functionality which may involve refactoring (Section 3.6). As in TDD, the whole method is repeated with all use cases until a full-featured prototype is reached.</p><p>We illustrate the approach using TDDStore, a simplified online bookstore. Specifically, we will validate some usability requirements in the checkout process. This process will be carried out by the user in order to finish a purchase. In the following subsections we illustrate the checkout process from capturing requirements to validate the usability requirements with tests.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Introducing Usability Requirements</head><p>Our work focuses on usability requirements with impact on the architectural design. This set of usability requirements are referred to as Functional Usability Features (FUFs) <ref type="bibr" target="#b11">[12]</ref>. Examples of these FUFs are providing cancel, undo and feedback facilities. Each FUF has a set of subtypes called Usability Mechanisms. Each Usability Mechanism is a different variety of the usability feature. For example the FUF called Feedback is composed by several Usability Mechanisms, for example: (1) System Status Feedback: it informs the user about the internal system state; (2) Interaction Feedback: it informs the user that his request is being processed.</p><p>In order to capture the requirements for the Usability Mechanisms, we have used a set of guidelines defined by Juristo <ref type="bibr" target="#b11">[12]</ref>. This approach consists of packaging guidelines that empower developers to capture usability requirements without depending on a usability expert. These guidelines help developers to understand the implications of usability requirements in system architecture and know how to elicit and specify usability features for a system. They have served as a basis for identifying which issues should be discussed with stakeholders during the elicitation process.</p><p>The checkout process is a somewhat a complex process that needs to be followed by the user. Billing address, delivery address, a summary of the purchase and person details must be fulfilled in order to finish the purchase. A well known usability mechanism called Step by step could be applied to break a big, clumsy form, into small and easy to understand steps. This mechanism helps the user to do tasks that require different steps with user input. The application of Step by step results in a wizard. From Juristo's FUF guidelines <ref type="bibr" target="#b11">[12]</ref>, we have extracted the usability characteristics that the analyst must specify in the conceptual model in order to specify the functionality of the mechanism. Each usability characteristic represents a system property that must be specified by the analyst. Table <ref type="table" target="#tab_0">1</ref> shows the characteristics that the analyst must specify for the Step by step mechanism and their value in the checkout example Step description Each step must contain a short description Visual aspect</p><p>The user has specified the widgets to fill in each step Remaining steps</p><p>The system must inform about the number of remaining steps</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Modeling Functional Requirements</head><p>In order to gather navigation, business and usability requirements from our stakeholders, we use two kinds of artifacts: User Interaction Diagrams (UIDs) and UI mockups. UIDs serve as a partial, high-level navigation models, providing abstract information about interface features. On the other hand, UI mockups help to agree with the client on broad aspects of the application look and feel. This is a very convenient way for interacting with stakeholders and gathering quick feedback from them. We also gain two additional benefits from UI mockups: we can perform our usability specifications tests against them and they will be used to create the application's UI.</p><p>In  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">Defining Tests</head><p>Following our approach, usability requirements should also be specified as tests that ensure usability application. These tests will validate usability requirements at any stage of the application development. Moreover, they help during application growth, ensuring that usability characteristic is not altered. To illustrate this stage, we will take the earlier mentioned requirement (divide checkout into steps) as example. In this test, we follow the checkout process filling each node with the necessary information and making assertions about UI and node elements. Using Selenium <ref type="bibr" target="#b21">[22]</ref> on Java, the following test validates that the checkout process is divided into the steps previously mentioned (Section 3.1 and 3.2). As all MDWE tools derive XHTML/CSS/Javascript code, Selenium code is agnostic of the MDWE tool used. This test will drive the development phase of this usability requirement and it looks like we show next:</p><p>public class CheckoutTestCase extends SeleneseTestCase { public void testSuccessfulCheckout() throws Exception { (01) sel.open("file:///dev/bookstore/Mockups/books-list.html"); (02) sel.clickAndWait( "/ul[@id='products']/li <ref type="bibr" target="#b0">[1]</ref>/div <ref type="bibr" target="#b0">[1]</ref>/div[@id='prod-info']/a" ); (03) sel.assertLocation("/cart*"); (04) assertEquals( "The Digital…", sel.getText("/ul[@id='selected-products']/li <ref type="bibr" target="#b0">[1]</ref>/span[1]") ); (05) sel.clickAndWait("checkout"); (06) sel.assertLocation("/checkoutStepShippingAddress"); (07) sel.type("shipping-address", "Calle 58"); (08) sel.select("country", "label=Argentina"); (09) sel.clickAndWait ("//input[@value='product confirmation&gt;&gt;']"); (10) sel.assertLocation("/checkoutStepBillingAddress"); (11) sel.type("billing-address", "Calle 48"); (12) sel.select("country", "label=Argentina"); (13) sel.clickAndWait ("//input[@value='product confirmation&gt;&gt;']"); (14) sel.assertLocation("/checkoutStepProductConfirmation"); (15) assertEquals( "The Digital…", sel.getText("/ul[@id='selected-products']/li <ref type="bibr" target="#b0">[1]</ref>/span[1]")); (16) sel.clickAndWait ("//input[@value='credit card data &gt;&gt;']"); (17) sel.assertLocation("/checkoutStepCreditCardData"); <ref type="bibr" target="#b17">(18)</ref> sel.type("first-na","Esteban"); sel.type("last-na", "Robles"); <ref type="bibr" target="#b18">(19)</ref> sel.type("card-number", "4246234673479"); (20) sel.select("exp-year", "label=2011"); (21) sel.select("exp-month", "label=Apr"); <ref type="bibr" target="#b21">(22)</ref> sel.clickAndWait ("//input[@value='confirmation &gt;&gt;']"); (23) sel.assertLocation("/checkoutSucceed"); (24) assertEquals( "Checkout succeded", sel.getText("/div[@id='message")); } }</p><p>The test opens the book list page <ref type="bibr" target="#b0">(1)</ref> and adds an item to the shopping cart (2). Then we assert that the book has been added and proceed to the checkout process <ref type="bibr" target="#b2">(3)</ref><ref type="bibr" target="#b3">(4)</ref><ref type="bibr" target="#b4">(5)</ref>. Shipping information (6-8) and billing information (9-12) are filled and confirmed. Products are confirmed by asserting that product's name <ref type="bibr" target="#b12">(13)</ref><ref type="bibr" target="#b13">(14)</ref><ref type="bibr" target="#b14">(15)</ref>. Credit card data is filled (16-21) and then we confirm the process has succeeded by looking at the text displayed in a div element (22-2).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.4">Deriving Design Models</head><p>In order to generate incremental prototypes of the application, we have used WebRatio <ref type="bibr" target="#b22">[23]</ref>, a WebML-based MDWE tool. We have specified the different models (business, navigation and presentation) that will allow to derivate the application. In order to show the specific aspects of our approach, we focus mainly on the navigational (hypertext) model, being the distinctive model in Web applications. Besides, we want to emphasize the differences between typical TDD and TDD in MDWE applications and show how changes in usability requirements may affect navigation.</p><p>A first data model is derived using the UIDs as a starting point, identifying the entities needed to satisfy the specified interactions, e.g. by using the heuristics described in <ref type="bibr" target="#b19">[20]</ref>. As Web Ratio supports the specification of ER models at this stage of the development, the application behavior will be specified later, in the so-called logic model. As for the navigational model, we show it with the checkout example. According to the test written in the previous section, we need to create a step-by-step checkout.  WebRatio is now ready to generate the application. Once we have a running prototype, we can adapt the tests (see section 3.5) and run them to check whether the models (and therefore the application) conform with the requirements or not.</p><p>Finally, we adjust the presentation of the application. WebML does not define a presentation model; instead, it is considered as a document transformation from a WebML specification of a page into a specific language page JSP. In another methodology, mockups and UIDs would be used to specify the presentation model as well. Since we already had mockups for our current UID, we just slice up the mockup, and use it as an XHTML template in WebRatio. We can run the tests again to ensure interaction is not corrupted while the template is being modified.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.5">Testing Usability specifications</head><p>After building the models, we need to make sure that the implementation generated from them is valid according to usability requirements specification. As previously mentioned, if we try to run the tests as they are written, they will fail because they still reference mockups files and the location of several DOM elements may have changed (in terms of an XPath expressions <ref type="bibr" target="#b24">[26]</ref>). In both cases tests should be adapted to work with the current implementation as shown in <ref type="bibr" target="#b18">[19]</ref>. In the first case, URLs in the tests should be readdressed to the actual location of the generated prototype. On the second case, the adaptation is easy to perform using a tool like XPather plugin <ref type="bibr" target="#b25">[27]</ref> for Mozilla browser. Next we re-run the test and verify whether it succeeds.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.6.">Refactoring to improve Usability</head><p>Usability requirements can also appear after the application has been deployed due to user tests ran at this time. In our example, the user might want to abort the operation during the checkout process. To support this functionality, we can include Abort operation, a usability mechanism used to cancel the execution of an action <ref type="bibr" target="#b11">[12]</ref>. Therefore, it can be added to each step of the checkout process. As first step for including Abort operation, we have to detect usability requirements. From the usability requirements guidelines of this mechanism, we have extracted the characteristics that the analyst must specify in the conceptual model. The process of requirement capture is done providing a value for each one of the characteristics of Abort operation (Table <ref type="table">2</ref>).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Table 2. Usability requirements for Abort operation</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Abort operation</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Characteristic</head><p>Value specified by the analyst in the checkout example Service selection This mechanism will be applied to the checkout action Visual aspect</p><p>The abort operation will be triggered by a Cancel button in each step of the wizard</p><p>In this case we have a test that validates the checkout process (Section 3.5). As the process involves many steps, we should validate that the abort operation works suc-cessfully on every step. Whether the user is in the first step or in the last one, the abort operation must cancel the process and remain all products in the shopping cart.</p><p>In order to handle this new usability requirement, we need to adapt existing artifacts to satisfy it. Following the process, we start by adding the new cancel button to the existing mockups on every step of the wizard.</p><p>Next, we add tests to validate the checkout process and verify that the buttons exist and behave as expected: canceling the process and navigating back to the shopping cart node. In our case, the checkout process is divided into four steps, so we need to validate that the abort operation works as expected on every one. In order to make the test works, we follow the checkout process to reach the node under test, next click the abort button in order to assert that the location has changed to the shopping cart. Finally, we have to check that the product is still present on the shopping cart. In the next piece of code, we show a short version of the tests to validate the abort operation: Next, the process continues adapting the models in WebRatio. To do so, we add the necessary links and navigation control for the cancel step functionality. Then, we derive the application and run the tests against it. Tests could be also adapted if WebRatio doesn't fit location and layout issues. If so, we should adapt them in the same way we did in section 3.5. If tests still fail, then we need to tweak the models and derivate the application again until all tests pass.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Related Work</head><p>The aim of this paper is to put together the advantages of using agile approaches in Web application development <ref type="bibr" target="#b14">[15]</ref> and MDWE approaches in Web application development. Most Web Engineering methods like WebML, UWE, OOHDM, OOWS or OOH do not support agile approaches. In particular, this paper focuses on the agile approach called Test-Driven Development where tests are developed before the code in order to guide the system development. Some works propose generating these tests automatically, for example the work of Bryc <ref type="bibr" target="#b28">[30]</ref>, while in other works tests are done manually <ref type="bibr" target="#b13">[14]</ref>. Both techniques are valid for our proposal.</p><p>We state that usability must be included in the TDD process from the requirements capture step. Several authors, as Juristo <ref type="bibr" target="#b11">[12]</ref>, have dealt with usability as a requirement. Juristo has defined a set of Functional Usability Features that are related to system architecture. The requirements of these features are captured by means of guidelines. These guidelines include questions that the analyst must ask to end-users in order to adapt the features to users' requirements. Lauesen <ref type="bibr" target="#b15">[16]</ref> also includes usability in the requirements capture, discussing six different styles of usability specification and showing how to combine them in a complex real-life case to meet the goals. Finally, it is important to mention the work of Cysneiros <ref type="bibr" target="#b3">[4]</ref>, who has defined a catalogue to guide the analyst through alternatives for achieving usability. The approach is based on the use of the i* <ref type="bibr" target="#b26">[28]</ref> framework, having usability modeled as a special type of goal. The difference between our proposal and the aforementioned works is the context of use. We deal with usability requirements in a TDD process using an MDWE approach, while mentioned authors deal with usability requirements in a traditional software development process.</p><p>As for including TDD in a Model-Driven Development (MDD) process, it is important to mention the proposal of Zhang <ref type="bibr" target="#b27">[29]</ref>. Zhang has defined a process that involves automatic testing through simulation and using executable models. In other words, this author has defined a process to create tests that must be applied in a simulation of the system. This simulation is obtained by the Conceptual Model which represents the system abstractly. The disadvantage that we have found in Zhang's proposal is that tests are not applied to the final code but a simulation. If the final code differs from the simulation, test results are not useful.</p><p>A similar work that proposes testing the system by means of Conceptual Models has been developed by Dinh-Trong <ref type="bibr" target="#b4">[5]</ref>. This author has defined a technique for testing design models that are expressed in the Unified Modeling Language (UML) <ref type="bibr">[24]</ref>. Test cases are generated using information from class diagrams and sequence diagrams. Our proposal is different to the work of Dinh-Trong. We state that tests must check the generated code because they are closer to the user. Therefore, users can participate in the test definition. However, Dinh-Trong proposes testing the system by means of design models, where users cannot take part for ignorance.</p><p>Finally, other authors have proposed testing the system in the code generated from a Conceptual Model, as we propose. The work of Wieczorek <ref type="bibr" target="#b23">[25]</ref> is included in that group. This author proposes a black-box testing that uses structural and behavioral models, described in UML, to automatically generate test cases. After automatically generating part of code from the Conceptual Model, developers are starting to create unit tests for the functions that they are going to implement. Changes derived from testing are applied directly to the code. This fact differs from our proposal, where changes are directly applied to the Conceptual Model and the code is automatically generated, making the software development process more efficient.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Concluding Remarks and Further Work</head><p>We have presented a novel approach for introducing usability requirements in a test driven model development approach. Usability characteristics are captured using a set of guidelines described in natural language. In order to fit these kinds of requirements in the TDD cycle, we add tests that drive the development and check that the generated application is valid according to such requirements. The approach maintains the agile style while dealing with usability requirements in an incremental way.</p><p>We are currently working on several directions: First, as usability requirements are repeated through many applications and hence can be catalogued <ref type="bibr" target="#b11">[12]</ref>, we are creating template classes for capturing the functionality that has to be tested on each pattern. The idea is to use or extend these classes to replace all the existing lines on the tests. Using small "testing" classes as first class objects we can compose and improve the time of testing creation and also raising the level of abstraction. Second, we are doing some field experiences with usability requirements on RIA applications <ref type="bibr" target="#b5">[6]</ref>. For this matter we are analyzing how to validate those requirements in tests and where they should appear in the TDD cycle. Finally, in order to integrate all these features, we are working on a tool that generates interaction tests from high level UID models and UI mockups in a semi-automatic way.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig 1 :</head><label>1</label><figDesc>Fig 1: Summary of the approach</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head></head><label></label><figDesc>Fig 2 we show two mockups of the checkout process:</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Fig 2 .</head><label>2</label><figDesc>Fig 2. UI mockups for steps 2 and 3 of the checkout process.</figDesc><graphic coords="6,138.63,147.40,317.97,116.99" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head></head><label></label><figDesc>Fig 3 shows this interaction in a WebML interaction model.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Fig 3 .</head><label>3</label><figDesc>Fig 3. Checkout process WebML diagram.</figDesc><graphic coords="7,172.83,542.17,260.98,96.83" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1 .</head><label>1</label><figDesc>Usability requirements for Step by step and Abort operation</figDesc><table /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>Step by step Characteristic Value specified by the analyst in the checkout example Service</head><label></label><figDesc></figDesc><table /><note>selection This mechanism will be applied to the checkout action Steps division</note></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">This work has been developed with the support of MEC under the project SESAMO TIN2007-62894 and co-financed by FEDER</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" xml:id="foot_1">June 23, 2009  | San Sebastian, Spain</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Linking usability to software architecture patterns through general scenarios</title>
		<author>
			<persName><forename type="first">L</forename><surname>Bass</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Bonnie</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">The journal of systems and software</title>
		<imprint>
			<biblScope unit="volume">66</biblScope>
			<biblScope unit="page" from="187" to="197" />
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title level="m" type="main">Test Driven Development: By Example (Addison-Wesley Signature Series</title>
		<author>
			<persName><forename type="first">K</forename><surname>Beck</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2002">2002</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Web Modeling Language (WebML): A Modeling Language for Designing Web Sites</title>
		<author>
			<persName><forename type="first">S</forename><surname>Ceri</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Fraternali</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Bongio</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer Networks and ISDN Systems</title>
		<imprint>
			<biblScope unit="volume">33</biblScope>
			<biblScope unit="issue">1-6</biblScope>
			<biblScope unit="page" from="137" to="157" />
			<date type="published" when="2000-06">June (2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Bringing Usability to the Early Stages of Software Development</title>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">M</forename><surname>Cysneiros</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Kushniruk</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Requirements Engineering Conf. IEEE</title>
				<imprint>
			<date type="published" when="2003">2003</date>
			<biblScope unit="page" from="359" to="360" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">A Systematic Approach to Generate Inputs to Test UML Design Models</title>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">T</forename><surname>Dinh-Trong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Ghosh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">B</forename><surname>France</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">17th International Symposium on Software Reliability Engineering</title>
				<imprint>
			<date type="published" when="2006">2006</date>
			<biblScope unit="page" from="95" to="104" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m" type="main">Rich Internet Applications. A white paper sponsored by Macromedia and Intel</title>
		<author>
			<persName><forename type="first">J</forename><surname>Duhl</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
	<note type="report_type">IDC Report</note>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Development of Web Applications from Web Enhanced Conceptual Schemas</title>
		<author>
			<persName><forename type="first">Fons</forename><forename type="middle">J</forename></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">V</forename><surname>Albert</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Pastor</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">LNCS</title>
		<imprint>
			<biblScope unit="volume">2813</biblScope>
			<biblScope unit="page" from="232" to="245" />
			<date type="published" when="2003">2003. 2003</date>
			<publisher>Springer</publisher>
		</imprint>
	</monogr>
	<note>ER</note>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<title level="m" type="main">Refactoring: Improving the Design of Existing Code</title>
		<author>
			<persName><forename type="first">M</forename><surname>Fowler</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Beck</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Brant</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Opdyke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Roberts</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1999">1999</date>
			<publisher>Addison-Wesley Professional</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">OO-H Method: extending UML to model web interfaces</title>
		<author>
			<persName><forename type="first">J</forename><surname>Gómez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Cachero</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">information Modeling For internet Applications</title>
				<editor>
			<persName><forename type="first">P</forename><surname>Van Bommel</surname></persName>
		</editor>
		<meeting><address><addrLine>Hershey, PA</addrLine></address></meeting>
		<imprint>
			<publisher>IGI Publishing</publisher>
			<date type="published" when="2003">2003</date>
			<biblScope unit="page" from="144" to="173" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<title level="m" type="main">Object-Oriented Software Engineering: A Use Case Driven Approach</title>
		<author>
			<persName><forename type="first">I</forename><surname>Jacobson</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1992">1992</date>
			<publisher>Addison-Wesley</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<title level="m" type="main">Extreme Programming Installed</title>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">E</forename><surname>Jeffries</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Anderson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Hendrickson</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2000">2000</date>
			<publisher>Addison-Wesley Longman Publishing Co., Inc</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Guidelines for Eliciting Usability Functionalities</title>
		<author>
			<persName><forename type="first">N</forename><surname>Juristo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">M</forename><surname>Moreno</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">I</forename><surname>Sánchez</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Software Engineering</title>
		<imprint>
			<biblScope unit="volume">33</biblScope>
			<biblScope unit="page" from="744" to="758" />
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">UML-Based Web Engineering, An Approach Based On Standards</title>
		<author>
			<persName><forename type="first">N</forename><surname>Koch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">.</forename><surname>Knapp</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Zhang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Baumeister</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Web Engineering, Modelling and Implementing Web Applications</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2008">2008</date>
			<biblScope unit="page" from="157" to="191" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Assessing test-driven development at IBM</title>
		<author>
			<persName><forename type="first">E</forename><forename type="middle">M</forename><surname>Maximilien</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Williams</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 25th international Conference on Software Engineering</title>
				<meeting>the 25th international Conference on Software Engineering<address><addrLine>Portland, Oregon; Washington, DC</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2003-05-03">2003. May 03 -10, 2003</date>
			<biblScope unit="page" from="564" to="569" />
		</imprint>
	</monogr>
	<note>International Conference on Software Engineering</note>
</biblStruct>

<biblStruct xml:id="b14">
	<monogr>
		<title level="m" type="main">Agile Web Engineering (AWE) Process: Multidisciplinary Stakeholders and Team Communication</title>
		<author>
			<persName><forename type="first">A</forename><surname>Mcdonald</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Welland</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2003">2003</date>
			<publisher>Springer</publisher>
			<biblScope unit="page" from="253" to="312" />
			<pubPlace>US</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Usability Requirements in a Tender Process</title>
		<author>
			<persName><forename type="first">S</forename><surname>Lauesen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Computer Human Interaction Conference</title>
				<meeting><address><addrLine>Australia</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1998">1998. 1998</date>
			<biblScope unit="page" from="114" to="121" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Dealing with Usability in Model Transformation Technologies</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">I</forename><surname>Panach</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>España</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Moreno</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ó</forename><surname>Pastor</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Springer LNCS</title>
		<imprint>
			<biblScope unit="volume">5231</biblScope>
			<biblScope unit="page" from="498" to="511" />
			<date type="published" when="2008">2008. 2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Introducing XP into Greenfield Projects: lessons learned</title>
		<author>
			<persName><forename type="first">J</forename><surname>Rasmussen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Softw</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="21" to="28" />
			<date type="published" when="2003-06">May-June 2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<title level="m" type="main">Bridging Test and Model Driven Approaches in Web Engineering</title>
		<author>
			<persName><forename type="first">E</forename><surname>Robles Luna</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Grigera</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Rossi</surname></persName>
		</author>
		<imprint/>
	</monogr>
	<note>Still to be published…</note>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Modeling and Implementing Web Applications using OOHDM</title>
		<author>
			<persName><forename type="first">G</forename><surname>Rossi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Schwabe</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Web Engineering, Modelling and Implementing Web Applications</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2008">2008</date>
			<biblScope unit="page" from="109" to="155" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Reconciling usability and interactive system architecture using patterns</title>
		<author>
			<persName><forename type="first">A</forename><surname>Seffah</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Mohamed</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Habieb-Mammar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Abran</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Systems and Software</title>
		<imprint>
			<biblScope unit="volume">81</biblScope>
			<biblScope unit="page" from="1845" to="1852" />
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<monogr>
		<ptr target="http://seleniumhq.org/" />
		<title level="m">Selenium web application testing system</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<monogr>
		<ptr target="http://www.Webratio.com" />
		<title level="m">The WebRatio Tool Suite</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Enhancing test driven development with model based testing and performance analysis</title>
		<author>
			<persName><forename type="first">S</forename><surname>Wieczorek</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Stefanescu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Fritzsche</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Schnitter</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Testing: Academic and Industrial Conf Practice and Research Techniques, TAIC PART &apos;</title>
		<imprint>
			<biblScope unit="volume">08</biblScope>
			<biblScope unit="page" from="82" to="86" />
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<monogr>
		<ptr target="http://www.w3.org/TR/xpath" />
		<title level="m">XML Path Language (XPath</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<monogr>
		<ptr target="https://addons.mozilla.org/en-US/firefox/addon/1192" />
		<title level="m">XPather -XPath Generator and Editor</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Towards Modelling and Reasoning Support for Early-Phase Requirements Engineering</title>
		<author>
			<persName><forename type="first">E</forename><surname>Yu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE Int. Symp. on Requirements Engineering</title>
				<imprint>
			<date type="published" when="1997">1997</date>
			<biblScope unit="page" from="226" to="235" />
		</imprint>
	</monogr>
	<note>IEEE</note>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">Test-driven modeling for model-driven development</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Zhang</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Software</title>
		<imprint>
			<biblScope unit="volume">21</biblScope>
			<biblScope unit="page" from="80" to="86" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">Automatic Generation of High Coverage Usability Tests</title>
		<author>
			<persName><forename type="first">R</forename><surname>Bryc</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Conference on Human Factors in Computing Systems (CHI)</title>
				<meeting><address><addrLine>Portland, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2005">2005</date>
			<biblScope unit="page" from="1108" to="1109" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
