ABSTRACT Title of dissertation: A FRAMEWORK FOR DETECTING AND DIAGNOSING CONFIGURATION FAULTS IN WEB APPLICATIONS Cyntrica N. Eaton, Doctor of Philosophy, 2007 Dissertation directed by: Professor Atif Memon Department of Computer Science Software portability is a key concern when target operational environments are highly configurable; variations in configuration settings can significantly impact software correctness. While portability is key for a wide range of software types, it is a significant challenge in web application development. The client configuration used to navigate and interact with web content is known to be an important factor in the subsequent quality of deployed web applications. With the widespread use of diverse, heterogeneous web client configurations, the results of web application deployment can vary unpredictably among users. Given existing approaches and limited development resources, attempting to develop web applications that are viewable, functional, and portableforthevast web configuration space isa significant undertaking. As a result, faults that only surface in precise configurations, termed configuration faults, have the potential to escape detection until web applications are fielded. This dissertation presents an automated, model-based framework that uses static analysis to detect and diagnose web configuration faults. This approach over- comes the limitations of current techniques by featuring an extensible model of the configuration space that enables efficient portability analysis across the vast array of client environments. The basic idea behind this approach is that source code fragments (i.e., HTML tags and CSS rules) embedded in web application source code adversely impact portability of web applications when they are unsupported in target client configurations; without proper support, the source code is either processed incorrectly or ignored, resulting in configuration faults. Using static anal- ysis, configuration fault detection is performed by applying a model of the web application source against knowledge of support criteria; any unsupported source code detected is considered an index to potential configuration faults. In the effort to fully exploit this approach, improve practicality, and maximize fault detection efficiency, manual and automated approaches to knowledge acquisition have been implemented, variations of web application and client support knowledge models have been investigated, and visualization of configuration fault detection results has been explored. To optimize the automated acquisition of support knowledge, alternate learning strategies have been empirically investigated and provisions for capturing tag interaction have been integrated into the process. A FRAMEWORK FOR DETECTING AND DIAGNOSING CONFIGURATION FAULTS IN WEB APPLICATIONS by Cyntrica N. Eaton Dissertation submitted to the Faculty of the Graduate School of the University of Maryland, College Park in partial fulfillment of the requirements for the degree of Doctor of Philosophy 2007 Advisory Committee: Professor Atif Memon, Chair/Advisor Professor Rance Cleaveland Professor William Gasarch Professor Brian Hunt Professor Vibha Sazawal Acknowledgments I have the utmost appreciation, respect, and admiration for my advisor, Dr. Atif Memon, and I am truly grateful that I had the opportunity to work with him. His patience and guidance were key in this experience and I can never thank him enough for his open door, open ear, and well placed pep talks. I would like to take this opportunity to thank my preliminary and final exam- ination committee members, Dr. Atif Memon, Dr. Rance Cleaveland, Dr. William Gasarch, Dr. Brian Hunt, and Dr. Vibha Sazawal for their feedback and sugges- tions. I appreciate the time and effort you devoted to reading my drafts and helping me improve my work. Where would I be without my Mom, Cynthia Eaton, my Dad, Rickey Eaton, and my Maternal Grandmother, Blondell Hardie! You guys will never know the extent of my gratitude for raising me in a loving environment, providing me with all I need to thrive, and most importantly, for allowing me the freedom to plot my own path. Thanks for all of your support over the years. A special thanks goesout to my sister-friends Chakeita Jackson, Tracey Taylor, Erika Thompson, and Irvinia Jackson. I truly love you all and I really appreciate the laughter, heart-to-hearts, and support throughout this journey and beyond! To Dr. Johnetta Davis, Dr. Angela Grant, Hattie Redd, and Tamara Washington, thanks for being excellent mentors and providing me with a blueprint. To my STAND (Science and Technology: Addressing the Need for Diversity) Family, Joelle Davis Carter, Alice Bishop, and Tamara Singleton, you are an amaz- ii ing group of women and I feel honored and blessed to work with you. To my remaining Math SPIRAL (Summer Program in Research and Learning) Family, Dr. Marshall Cohen and Dr. Leon Woods, I?ve enjoyed working with each of you for the last two summers and I appreciate the encouragement. I have to thank my uber-talented sisters in research, Jaymie Strecker, Penelope Brooks, and Xun Yuan for reading my drafts, sitting through practice talks, and giving me useful feedback. I?ve enjoyed working with each of you and I wish you all the best in the future! In closing, I want to say that there is not enough room to list everyone who has touched my life and impacted me in a positive way. For everyone who prayed for me, encouraged me, and supported my endeavors, please accept my sincerest gratitude. iii Table of Contents List of Tables vii List of Figures viii List of Abbreviations 1 1 Introduction 1 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Research Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Framework Design Considerations . . . . . . . . . . . . . . . . . . . . 6 1.4 Challenges in Attaining and Applying Source Support Knowledge . . 7 1.5 Thesis Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.6 Dissertation Structure . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2 Background and Related Work 12 2.1 Web Applications and the Browser Wars . . . . . . . . . . . . . . . . 12 2.1.1 HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.2 CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.1.3 The Browser Wars . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.4 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.2 Related Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2.1 Web Portability Analysis . . . . . . . . . . . . . . . . . . . . . 20 2.2.1.1 Manual and Automated Execution-based Approach . 20 2.2.1.2 Lookup-based Approach . . . . . . . . . . . . . . . . 24 2.2.1.3 Source Code Standardization Approach . . . . . . . 25 2.2.2 Web Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.2.3 Portability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2.4 Fault Isolation . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.2.5 Machine Learning in Software Fault Detection . . . . . . . . . 31 3 General Framework Architecture 33 3.1 Framework Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.2 Manual and Automated Execution-based Approach . . . . . . . . . . 35 3.3 HTML Lookup Techniques . . . . . . . . . . . . . . . . . . . . . . . . 36 3.4 Source Code Standardization . . . . . . . . . . . . . . . . . . . . . . . 37 4 Initial Implementation 38 4.1 General Framework Instantiation . . . . . . . . . . . . . . . . . . . . 38 4.2 Inductive Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.2.1 Modeling Client Configurations . . . . . . . . . . . . . . . . . 41 4.2.2 Modeling the Association Vector . . . . . . . . . . . . . . . . 43 4.2.3 Algorithm to Generate/Update the Inductive Model . . . . . . 47 4.2.4 Algorithm to Use the Inductive Model . . . . . . . . . . . . . 49 iv 4.3 Empirical Study . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.3.1 Infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.3.2 Empirical Method . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.3.2.1 Research Questions and Evaluation Strategy . . . . . 51 4.3.2.2 Independent and Dependent Variables . . . . . . . . 54 4.3.2.3 Experimental Procedure . . . . . . . . . . . . . . . . 54 4.3.2.4 Step 1: Client Configuration Selection . . . . . . . . 56 4.3.2.5 Step 2: Training Set Selection . . . . . . . . . . . . . 56 4.3.2.6 Step 3: Tag Extraction/Abstraction . . . . . . . . . 59 4.3.2.7 Step 4: Defining the Gold Standard . . . . . . . . . . 60 4.3.2.8 Steps 5: Tag Classification and Evaluation . . . . . . 61 4.3.3 Threats to Experimental Validity . . . . . . . . . . . . . . . . 61 4.3.3.1 Internal Validity . . . . . . . . . . . . . . . . . . . . 61 4.3.3.2 External Validity . . . . . . . . . . . . . . . . . . . . 62 4.3.4 Results and Discussion . . . . . . . . . . . . . . . . . . . . . . 63 4.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5 Current Framework Implementation 69 5.1 Current Framework Design . . . . . . . . . . . . . . . . . . . . . . . . 72 5.1.1 Knowledge Base . . . . . . . . . . . . . . . . . . . . . . . . . . 73 5.1.1.1 Support Criterion Structure . . . . . . . . . . . . . . 74 5.1.1.2 Knowledge Consolidation . . . . . . . . . . . . . . . 76 5.1.2 updateKB() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 5.1.2.1 Manual Update . . . . . . . . . . . . . . . . . . . . . 79 5.1.2.2 Automated Update . . . . . . . . . . . . . . . . . . . 80 5.1.2.3 Information Solicitation . . . . . . . . . . . . . . . . 81 5.1.3 processURL() . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.1.4 query() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.1.5 generateReport() . . . . . . . . . . . . . . . . . . . . . . . . 85 5.2 Machine Learning Knowledge Base Updates . . . . . . . . . . . . . . 87 5.2.1 Data Retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . 88 5.2.2 Web Application Model . . . . . . . . . . . . . . . . . . . . . 90 5.2.3 Learning Strategies . . . . . . . . . . . . . . . . . . . . . . . . 93 5.2.4 Data Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.3 Research Questions and Metrics . . . . . . . . . . . . . . . . . . . . . 96 5.3.1 Research Questions . . . . . . . . . . . . . . . . . . . . . . . . 97 5.3.2 Configuration Subject and Data . . . . . . . . . . . . . . . . . 98 5.3.3 Evaluation Metrics . . . . . . . . . . . . . . . . . . . . . . . . 99 5.3.3.1 Actual Support . . . . . . . . . . . . . . . . . . . . . 100 5.3.3.2 Predicted Support . . . . . . . . . . . . . . . . . . . 100 5.3.3.3 Accuracy . . . . . . . . . . . . . . . . . . . . . . . . 101 5.4 Study Design, Results, and Discussion . . . . . . . . . . . . . . . . . 102 5.4.1 Q1 Study: The effect of web application model, strategy, and training set size on learning accuracy . . . . . . . . . . . . . . 103 5.4.1.1 Experimental Procedure . . . . . . . . . . . . . . . . 103 v 5.4.1.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.4.2 Q2 Study: How does the web application model affect analysis costs in terms of tags/rules evaluated and the time needed for analysis? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 5.4.3 Q3 Study: The effect of training set imbalance on false positives.105 5.4.4 Q4 Study: The impact of CSS inclusion during the learning process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.4.5 Q5 Study: The impact of Tag Interaction during the learning process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.4.6 Threats to Experimental Validity . . . . . . . . . . . . . . . . 107 5.4.6.1 Internal Validity . . . . . . . . . . . . . . . . . . . . 107 5.4.6.2 External Validity . . . . . . . . . . . . . . . . . . . . 108 6 Conclusions and Future Work 108 Bibliography 126 vi List of Tables 4.1 ? Values for All Tags in the Example of Figure 4.2. . . . . . . . . . . 47 4.2 Configuration Point Details. . . . . . . . . . . . . . . . . . . . . . . . 52 4.3 Part of the Negative Instance Set of the Initial Web Application Pool. 58 4.4 Evaluation Results. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.1 Contingency table illustrating the four possible states of tag/category co-occurence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 vii List of Figures 1.1 When rendered in (a) Internet Explorer 6.0 and (b) Netscape 4.8, both on Windows XP, the Scrabble Home Page is significantly different. 2 1.2 A Web Application Created in Word 97 Executed Differently in Dif- ferent Client Configurations. . . . . . . . . . . . . . . . . . . . . . . . 10 2.1 Sample HTML/CSS code and the corresponding web page. . . . . . . 13 3.1 General framework architecture for detecting configuration-specific faults in web applications. . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1 An Example of a Client Configuration Space. . . . . . . . . . . . . . . 43 4.2 Set of Web Applications Classified as Positive or Negative. . . . . . . 46 4.3 The updateVector() Algorithm. . . . . . . . . . . . . . . . . . . . . 48 4.4 The queryData() Algorithm. . . . . . . . . . . . . . . . . . . . . . . 50 4.5 False Positive Rate with Respect to Training Set Size. . . . . . . . . . 65 4.6 Examples of Configuration-Specific Errors Found in Our Study. . . . 117 4.7 Mozilla is More Forgiving than Netscape when Tags are Misproperly Placed in Source Documents. . . . . . . . . . . . . . . . . . . . . . . 118 5.1 Instantiation of the general framework in the current Approach . . . 118 5.2 A generic representation of the knowledge base. . . . . . . . . . . . . 119 5.3 A practical example of support violation offsets. . . . . . . . . . . . . 119 5.4 Snapshot of the Knowledge Base after a manual update. . . . . . . . 119 5.5 Positive and negative web applications in an arbitrary client config- uration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 5.6 Snapshot of the knowledge base after an automated update. . . . . . 120 5.7 Snapshot of the knowledge base after information solicitation. . . . . 121 viii 5.8 The retrieval of data, implemented by processURL(), begins once the user submits a URL. From there, the corresponding web page is fetched and, based on the hyperlinks observed, a crawler collects each of the web pages that are a part of the site. Once the source code is retrieved, a vector model of the web application is created. . . . . . . 121 5.9 An overview of query() . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.10 Visualization of compliance analysis results . . . . . . . . . . . . . . . 122 5.11 The interaction matrix . . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.12 Accuracy Values Defined . . . . . . . . . . . . . . . . . . . . . . . . . 123 5.13 The affect of learning strategy, training set size, and web application model on learning accuracy. The graph shown in (a) corresponds with the L1 learning strategy; (b) corresponds with L2. . . . . . . . . 123 5.14 The affect of web application model on time needed for analysis and the number of tags/rules analyzed. The graph shown in (a) shows the time needed(b) shows the number of tags analyzed. . . . . . . . . 124 5.15 The affect of training set imbalance on false positive rate. The graph shown in (a) shows what results with an extra negative example (b) shows the results with an extra positive training example. . . . . . . . 125 ix Chapter 1 Introduction 1.1 Motivation Establishing a high level of confidence in the quality of an implementation is essential in software development. Though the process of detecting and correcting faults in an implemented software system is inherently difficult[21], software quality assurance (QA) becomes increasingly complex when faults only surface in precise configurations. In such cases, the number, nature, and interconnection of constituent parts [45] that define the configuration can significantly impact software quality. To adequately reduce the number of faults in the delivered product, developers must evaluate the overall correctness of the implementation in addition to how that correctness is affected by variation in configurations. The problem of detecting configuration faults has a trivial solution if the space (or set) of target configurations is manageably small; namely, evaluating the imple- mentation in every possible configuration. Yet, as the size and variability of the configuration space grows, developers are faced with a fundamental QA trade-off between comprehensive configuration space coverage and limitations in develop- ment resources [51]. Access to each prospective configuration or the time necessary to apply an exhaustive, brute force assessment strategy is highly unlikely under realistic development conditions. Without an effective technique for assessing soft- 1 (a) (b) Figure 1.1: When rendered in (a) Internet Explorer 6.0 and (b) Netscape 4.8, both on Windows XP, the Scrabble Home Page is significantly different. ware portability across the configuration space, quality could degrade as software is ported and faults have the potential to remain latent until they are encountered by users in the field. As a result, correcting configuration faults is a crucial step in establishing portability for a highly varied configuration space. While configuration faults affect portability for a wide range of software types, they are a particular challenge in web application development. Defined as soft- ware accessed via a web browser over a network [50], web applications have become one of the most widely used class of software to date and critical components of the global information infrastructure [18]. Given that there are several different browsers (e.g., Microsoft Internet Explorer (IE), Netscape, AOL Browser, Opera, Mozilla, Safari for Mac OS X, Konqueror for Linux, Amaya, Lynx, Camino, Java- based browsers, WebTV), each with different versions (e.g., IE 4.0, IE 5.0, IE 6.0, 2 Netscape 4.0), a number of operating systems on which to run them (e.g., Windows, Power Macintosh), and dozens of settings (e.g., browser view, security options, script enabling/disabling) client configurations used to launch and interact with web appli- cations are highly varied. Though expanded variation and flexibility in web access options allows for more customized web user experiences, subsequent differences in configurations present a serious challenge for web developers to ensure univer- sal quality. Characterized as the software configuration explosion problem [34], this high degree of flexibility translates into a wide space of potential web client config- urations and complicates the QA effort by requiring that web developers not only ensure that the systems they have developed are correct, but that correctness per- sists as software is ported. Failure to evaluate web application portability across the configuration space can result in instances where a web page renders correctly in some client configurations and incorrectly in others (Figure 1.1). In practice, one of the more popular approaches to web application portability analysis involves a qualitative comparison between expected and actual execution. The idea behind this technique is to identify a subspace of popular client configura- tions and to launch the web application in each. While developers using this strategy get first-hand exposure to configuration faults, this approach is weakened by limited scope (because analysis focuses on a small number of target client environments) and non-diagnostic results (because only the occurrence of an error, not the cause of the error, is detected). In an effort to address the challenges of web configuration fault detection and the weaknesses of existing web portability analysis approaches, the goal of this research is to enable automated detection and diagnosis of web configu- 3 ration faults across a large configuration space in a manner that is comprehensive, yet efficient. The basic idea behind this approach is that source code fragments (i.e., Hypertext Markup Language (HTML) tags and Cascading Style Sheet (CSS) rules) embedded in web application source code adversely impact portability of web appli- cations when they are unsupported in target client configurations; without proper support, the source code is either processed incorrectly or ignored, resulting in con- figuration faults. Using static analysis, configuration fault detection is performed by applying a model of the web application source against knowledge of support criteria; any unsupported source code detected is considered an index to potential configuration faults. In the effort to fully exploit this approach, improve practical- ity, and maximize fault detection efficiency, manual and automated approaches to acquisition of source code support knowledge have been implemented, variations of web application and client support knowledge models have been investigated, and visualization of configuration fault detection results has been explored. To optimize the automated acquisition of support knowledge, alternate machine learning strate- gies have been empirically investigated and provisions for capturing tag interaction have been integrated into the process. In the immediate sections that follow, this chapter continues with an overview of the research approach, insight into design considerations for practical implementation, a discussion of research contributions, and finally, closes with an outline of the dissertation structure. 4 1.2 Research Approach In web application development, HTML tags and CSS rules are the core lan- guages used. As building blocks of web applications, HTML and CSS directives indicate how an application should be rendered and how users should be able to in- teract with various web application widgets. When web applications are launched, browsers parse the source code and use it as a basis for rendering and functionality. The ability of a configuration to process these statements correctly provides a criti- cal link between what the web application should be able to do, as outlined in source code, and what it actually does once it has been deployed; a client configuration capable of processing a given tag/rule properly is said to support it. Asymmetric support for source code across the configuration space greatly complicates develop- ment of web applications that are portable. Given this concept of asymmetry and the perspective that the functional and aesthetic properties of web applications are a function of the underlying source code, it is very difficult for web developers to know which configurations will support their specification, embodied by the source code elements, and which ones will not. In light of these factors, the problem of evaluating the portability of web applications across varied configurations can effec- tively be recast as identifying known patterns of unsupported source code; this idea lies at the base of the web portability analysis approach utilized in this research. In the example shown in Figure 1.1 for instance, the tag
is not supported in client con- figurations in which Netscape 4.8 is the browser. Because the tag was not supported, 5 it was processed improperly and the image was erroneously repeated throughout; the result was a confounded web page display and diminished usability. The approach used in this work considers
to be an index to configuration faults in client environments that have Netscape 4.8 as the browser and uses static analysis to detect similar issues in source code inclusion. 1.3 Framework Design Considerations To adequately assess web application portability, an ideal approach would achieve a high level of configuration coverage in an efficient manner, accurately detect configuration faults, and effectively present results to enable quick correction of discovered faults. Since the research approach uses knowledge of source code support in various configurations as a basis for analysis, it is also important to thoroughly and accurately represent source code support knowledge and have the proper analysis techniques to exploit this knowledge [25]. In response to these requirements, the diagnostic knowledge-based framework developed is automated, employs static analysis, and maintains an extensible model of source code support. Being model- and static analysis-based, the framework uses web application source and a model of code support in varied configurations to facilitate analysis; these factors enable prediction of behavior/rendering faults without executing the WA in a given configuration (thus eliminating the need for direct physical access to target configurations during quality analysis) and, ultimately, provide the basis for efficient coverage of the configuration space. By automating the analysis process, 6 the effort of the Portability Evaluator1 has been reduced to merely submitting a Uniform Resource Locator (URL), or web address, to initiate analysis; automation is especially important in web application development because of short development cycles. The extensible nature of the source code support model allows portability assessments for newer configurations as they are developed and evolved; this is an important attribute in web portability analysis given that client configuration options continually expand as new browsers are developed and newer versions are released. The diagnostic capability of the framework addresses the issue of detecting fault causes quickly by explicitly isolating unsupported source codefragments. Aptly addresses, these solution requirements contribute to a practical, efficient framework that support the goals of this work and provide the basis for continuing research. These factors combined help to define a knowledge-based system that leverages a static, model-based approach to discovering unsupported web application source code in an implementation and gains knowledge of support through varied means. 1.4 Challenges in Attaining and Applying Source Support Knowl- edge Given the fundamental attributes of the research approach outlined in this thesis, detection of configuration faults will only be as thorough as the knowledge of tag/rule support criteria across the configuration space. Several challenges to 1The Portability Evaluator is the person on a web application development team responsible for conducting portability analysis. In some instances, the developer and the portability evaluator may be one in the same. The distinction was made here for clarity. 7 gaining knowledge of tag support rules threaten the ability to acquire accurate, comprehensive compliance information. Firstly, relying on browser documentation is problematic largely because it can be inaccurate and incomplete. Determining the tags/rules that are accurately accounted for is cumbersome. To ensure that source code fragments are actually supported, a page containing the tag and a description of how the tag should behave or render would need to be launched in the corresponding environment and, like the execution-based strategy, a comparison between the actual and expected effects would be necessary. Much like the execution-based approach, a major problem here is the conflict between the need to evaluate support for the code in each target configuration and the constraints imposed by limited time and limited access to client configurations. A second, more independent source of information comes from websites that list tag support information 2. These sources generally feature only a subset of potential environments and a subset of HTML/CSS directives; furthermore, the support rules featured are not guaranteed to be accurate. These factors combined directly conflict with the need for complete, comprehensive support data. An initial approach to the problem of asymmetric tag/element support was the introduction of coding standards by the World Wide Web Consortium (W3C). In theory, browsers are supposed to follow W3C standards. Yet, even when an attempt is made to fully comply with a given standard, separate implementations of the same standard could differ somewhat in how the HTML/CSS directive is handled causing a resulting difference in functionality or presentation [37]. Furthermore, while some 2The AdvancedHTML Referenceisan example(http://www.blooberry.com/indexdot/html/) 8 browsers claim to be standards compliant, there is evidence that most of them are not, i.e., some tags deemed standard by the W3C remain unsupported or are supported improperly [12]. In short, using standards will often mean that web pages will be accessible by more users, though developers still have to do some work to ensure web application portability[37]. Subsequently, a standards-oriented solution to evaluating tag support is inadequate. Even with complete, accurate knowledge of environment-specific unsupported HTML/CSS, the use of this information would remain an issue. The main challenges here lie in the qualifications of web application developers and basic human ability. First, there is an expansive set of HTML tags/CSS elements that web devel- opers could use to create their pages; recognizing the support available for each in the large space of possible client environment configurations is far from intuitive. Although traditional software developers had to be relatively familiar with a lan- guage before being confident enough to create and distribute products publicly, a growing number of authoring tools providing a What You See Is What You Get (WYSIWYG) environment that allows developers to create web pages without be- ing familiar with HTML. Users can create a document in Microsoft Word, as an example, and save the document into HTML form [43]; the corresponding HTML is then automatically generated. Yet, the results, can be highly illegible for users depending upon the client configuration used to launch the web application. Given the influence of tag support on end-user accessibility, a deficient grasp of the specific HTML elements incorporated in a web page and a lack of knowledge of how those elements function in various web browsing environments can have a negative effect 9 Opera 6.0 Internet Explorer 6.0 http://www.hma-corp.com/Ad RRMC.html Figure 1.2: A Web Application Created in Word 97 Executed Differently in Different Client Configurations. on WA portability (Figure 1.2). Experienced developers would need an efficient way of ensuring that the tags incorporated in WA source is supported across varied environments. Additionally, tag interaction can be a significant factor in web page accessibil- ity as well. A strategy that merely focuses on the occurrence of unsupported tags in source HTML may suffer from an illusion of false positives in instances where an unsupported tag is recognized yet no consideration is given to the complementary tags that provide back-up in unsupportive environments. 1.5 Thesis Contributions The primary research contribution of this dissertation is a web portability analysis framework with supporting models and algorithms for efficient analysis 10 across a vast configuration space. The specific focus of this work is to automate detection and diagnosis of web configuration faults across a wide configuration space. The key idea of the approach is to use knowledge of HTML tags and CSS rules as the basis of analysis and to integrate automated and manual means for accumulating this knowledge. The research presented in this thesis overcomes the limitations of existing tools and techniques by making the following contributions: ? A framework that utilizes models of web applications and client configuration to detect, diagnose, and support correction of configuration faults; ? A formal, inductively generated model of web client configurations; ? A model of web applications that adequately supports knowledge acquisition of unsupported HTML/CSS directives in varied environments; ? Results of experiments that demonstrate the impact of web configuration faults in practice and feasibility of applying an automated approach to support knowledge acquisition, and ? A basis for accumulating a comprehensive, accurate source of HTML/CSS configuration support criteria. 1.6 Dissertation Structure In the effort to present the main ideas of this work, survey the state of the art, and provide a moredetailed discussion of research contributions, thisdissertation has been divided into six major sections and is organized as follows: Chapter 2 provides 11 an overview of background information and related work. Chapter 3 introduces a general framework for web portability analysis and provides a characterization of current techniques (discussed in Chapter 2) in terms of a general framework. Chapter 4 reviews the initial framework implementation along with an overview of the models and metrics used and their evaluation. Chapter 5 discusses the current implementation in the context of the general framework along with the evaluation of varied automated acquisition techniques. Chapter 6 concludes with a summary of lessons learned and a discussion of future work. Chapter 2 Background and Related Work 2.1 Web Applications and the Browser Wars The World Wide Web Consortium (W3C), the main international standards organization [49], lists accessibility as the first of its long term-objectives for the web. Driven by an aim to make the full potential of the web available to all, the W3C?s push for universal access primarily focuses on the development and imple- mentation of technologies that account for vast differences in culture, languages, education, ability, material resources, access devices, and physical limitations of users on all continents (www.w3.org/Consortium). The work presented in this thesis contributes to this effort because it focuses on differences in access devices (e.g., client configurations), and how they must be accounted for during web de- velopment to ensure universal access for web users. Recall, the portability analysis 12 approach implemented in this work uses knowledge of source code support in varied client configurations to predict faulty behavior/rendering of web applications. The sections that follow provide more insight into the core source code languages used in web development, namely Hypertext Markup Language (HTML) and Cascading Style Sheets (CSS); briefly reviews why the aftermath of the Browser Wars make knowledge of source code support a valid basis for discovery and diagnosis of web configuration faults; and formalizes notions of tag/rule support and the need for complete knowledge bases during analysis. Figure 2.1: Sample HTML/CSS code and the corresponding web page. 2.1.1 HTML Originally developed as a simple, primitive language for information exchange on virtually any platform [27], HTML has evolved into an elaborate, varied basis for developing engaging web applications. In general, HTML tags are used to modify the appearance of text, link widgets to scripts, incorporate objects, and define the in- 13 ternal structure of web documents. Tags are distinguished in web application source code by opening and closing angled brackets (i.e., < and >). In Figure 2.1, for ex- ample,

is an HTML tag placed at the beginning and end of the text Cyntrica and thus modifies how it renders when the web application is deployed. For even greater control over the effects of a tag, web developers can specify attributes and attribute values. In the example shown (Figure 2.1), the tag is modified by the attribute src and further defined by the attribute value cyntrica.jpg; com- bined this tag, attribute, and attribute value indicate the relative placement of the image in the web application and the file location of the bit-mapped image to be displayed. Given the examples presented above, it is rather straightforward that HTML tags are a class of building blocks of web applications. More specifically, they provide directives that indicate how an application should be executed, where page objects should be placed, and how users should be able to interact with various widgets. Subsequently, when support for a given tag is non-existent or insufficient in a given client configuration, the associated directive is improperly processed, and faults have the potential to surface in the corresponding configuration. As a result, HTML tags are important correctness predictors during portability analysis. 2.1.2 CSS CSS notation was originally introduced by the W3C to promote a cleaner separation between document structure and appearance than HTML and provide developers 14 greater control over web page appearance [43, 1]. CSS rules are distinguished in source code by opening and closing braces (i.e., { and }) and consist of selectors, rules, and values. Selectors specify the HTML tag(s) to which the rule applies, and declarations specify the stylistic effect. The declaration is a set of rule/value pairs. Broadly speaking, rules either specify relative position or display attributes. In Figure 2.1 for example, h1 is the selector in both of the circled CSS rules. In the first instance, color is the rule and #db70db is the value. This rule indicates that any text within tag

should be the color #db70db = pink. Much like HTML, CSS are effective configuration fault indices because, if they are unrecognized in a given environment, the corresponding effect will not render in the corresponding web page triggering a configuration fault. 2.1.3 The Browser Wars The problem of asymmetric tag/rule support and, ultimately, configuration faults, is largely a residual effect of the 90?s era Browser Wars. During that time, the popularity of the web was increasing quite rapidly; several browser developers (with the major players being Internet Explorer and Netscape Navigator) incorporated ex- tra, proprietary HTML tags that rendered improperly in other environments. Prior to these extensions, the original version of HTML only defined primitive layouts. Responding to the demand for a richer selection of markup elements (e.g., nested lists, images), browser developers sought to gain competitive advantage by support- ing advanced functionality. To introduce more sophisticated elements to designers 15 and enable them to create pages with more complex designs, browsers were delib- erately developed with features available in one and not the other. The end result for users, as we experience today, is variability in HTML/CSS support that surfaces in improperly rendered media, incorrect display of formatting, forms that are not seamlessly linked to their scripts, and other faulty behavior and appearance. 2.1.4 Definitions Lack of universal support for source code elements and an inability to process source code properly in particular client configurations are a direct result of the Browser Wars and the underlying basis for configuration faults in web applications. Having introduced HTML tags, CSS rules, and the concept of the Browser Wars, this section formalizes the concept of tag/rule support and makes the case for the importance of thorough support criteria knowledge. Definition 1: HTML and CSS Tag Support When support for a given source code fragment (tag/rule) is known to be non- existent or insufficient, the associated code is improperly processed and faults po- tentially surface for users in the associated configuration. Let C denote the universal set of client configurations. Consider T to collectively be the universal set of all pos- sible HTML document source tags and CSS rules. Consider that:1 ?cj ? C ?I = {i1,i2,...,i|I|} s.t. (I ? T)??supports(cj,I) That is, each client configuration supports only a portion of the universal tag/rule 1In the definition that follows, the term support(x,y) indicates that x supports y. 16 space; for all possible client configurations, there is a set of HTML tags and CSS rules that are unsupported in the given environment. Consequently, the tags/rules in I could be considered indices to configuration faults when they are included in the source code of a web page w is launched in c. Example 1: The tag , though a part of the universal tag set T, was implemented by Internet Explorer developers and is not properly processed in client configurations that feature early versions of Netscape as the browser. As a result, the corresponding client configurations will not process the tag properly and the intended functionality will be lost. Definition 2: Necessity for Complete Definitions of I Adequate detection of unsupported tags in I is largely dependent upon the accuracy and completeness of its description. Detection of faulty program properties will only be as strong as the knowledge of such properties. Consider the following: ?ti ? T s.t. ti /? I ??supports(cj,ti) This essentially states that, the definition of I must be complete to ensure accurate analysis results. If, for instance, a tag, ti is actually unsupported in cj but it is not included in the description of I, the resulting static analysis will be flawed. If knowledge base is incomplete, only a subset of bugs is recognized. Although a page containing ti should be flagged as possibly having a configuration fault, the analysis 17 will not return the proper result. Static analysis provides an adequate foundation for configuration fault detection and diagnosis, but it can be weakened by the qual- ity and completeness of support criteria used during analysis. Example 2: Consider a tag, , that is unsupported when the browser in the client con- figuration is Internet Explorer. If was included in the source code and the tag was not included in I during analysis, the accuracy of the resulting report would be compromised. Developers would be subject to latent failures and false confidence in web page, and ultimately web application portability. Definition 3: Tag Interaction As mentioned in the previous definition, completeness of bug patterns is impor- tant for evaluation. Tag interaction, specifically support violation offset, is another phenomenon that must be modeled in order to get accurate results. Consider that: ?(ta ?tb) ? Ts.t.supports(cj,(ta ?tb))??supports(cj,ta) This means that the tag ta is not supported in configuration cj and thus, its inclu- sion in source code could have negative effects. Yet, a web page that contains both ta and tb behaves/renders properly upon deployment. In this context, tb offsets the lack of support for tc in cj. It is important to account for support violation offsets during portability anal- ysis; a strategy that merely looks for unsupported tags in source HTML produces 18 an illusion of false positives2 when no consideration is given to tag offsets. Example 3: A common example of support violation offset is the Javascript versioning tag. More specifically, Internet Explorer 4.0 does not recognize Javascript 1.3. How- ever,if a web page had both Figure 5.3: A practical example of support violation offsets. (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)B (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)S ? ! (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)Q (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)R (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)W (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)A (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)S Figure 5.4: Snapshot of the Knowledge Base after a manual update. 119 <..javascript1.1> <..javascript1.2> <..javascript1.1> <..javascript1.2>
<..javascript1.1>
<..javascript1.1>
<..javascript1.1> <..javascript1.2> <..javascript1.1> <..javascript1.2>
<..javascript1.1> <..javascript1.1> Positive Instances
<..javascript1.2>
<..javascript1.2>
<..javascript1.2>
<..javascript1.2>
<..javascript1.2>
<..javascript1.2>
Negative Instances Figure 5.5: Positive and negative web applications in an arbitrary client configura- tion (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)B (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)S ? ! (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)Q (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)R (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)W (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)A (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)S
(configatt1 ? configatt2 ? configatt3 ? ... ? configattn)A (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)A (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)A Figure 5.6: Snapshot of the knowledge base after an automated update. 120 (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)B (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)S ? ! (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)Q (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)R (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)W (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)A (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)S
(configatt1 ? configatt2 ? configatt3 ? ... ? configattn)A (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)A (configatt1 ? configatt2 ? configatt3 ? ... ? configattn)A Figure 5.7: Snapshot of the knowledge base after information solicitation. www.homepage.com URL Web Crawler Result Web Application Model
Figure 5.8: The retrieval of data, implemented by processURL(), begins once the user submits a URL. From there, the corresponding web page is fetched and, based on the hyperlinks observed, a crawler collects each of the web pages that are a part of the site. Once the source code is retrieved, a vector model of the web application is created. 121 Web Application Model
?????. ?????. ?????.
Match Figure 5.9: An overview of query() .UnsupportedClassVersionError: Figure 5.10: Visualization of compliance analysis results L1(Tag CSS X) ?. L1(Tag C) L1(Tag B) L1(Tag A) L1 ?.. ?.. ?.. ?.. ?.. ?.. L1(Tag C, CSS X)L1(Tag B, CSS X)L1(Tag A, CSS X)CSS X ?..?..?..?..?.. L1(Tag C, Tag BL1(Tag A, Tag C)Tag C L1(Tag A, Tag B)Tag B Tag A CSS XTag CTag BTag A Figure 5.11: The interaction matrix 122 Figure 5.12: Accuracy Values Defined GS(t,cx) yes no AR(t,cx) yes TP FP no FN TN Tag/Rule Classification Accuracy per Model: L1 0.5 0.6 0.7 0.8 0.9 30 60 90 120 150 Traning Set Size Ac cu ra cy M1 M2 M3 Tag/Rule Classification Accuracy per Model: L2 0.5 0.6 0.7 0.8 0.9 30 60 90 120 150 Training Set Size Ac cu ra cy M1 M2 M3 (a) (b) Figure 5.13: The affect of learning strategy, training set size, and web application model on learning accuracy. The graph shown in (a) corresponds with the L1 learn- ing strategy; (b) corresponds with L2. 123 Analysis Time Per Model 0 10 20 30 40 50 60 70 80 30 60 90 120 150 Training set size Me di an M illi se co nd s o f An aly sis M1M2 M3 Number of Tags/Rules Analyzed per Model 0 200 400 600 800 1000 30 60 90 120 150 Training set size Me di an n um be r o f Ta gs /R ul es A na lyz ed M1 M2 M3 (a) (b) Figure 5.14: The affect of web application model on time needed for analysis and the number of tags/rules analyzed. The graph shown in (a) shows the time needed(b) shows the number of tags analyzed. 124 Imbalanced Training Set: 1+ Negative 0.03 0.035 0.04 0.045 0.05 0.055 25 50 75 100 125 Number of Training Examples Fa lse P os itiv e R ate Imbalanced Training Set: 1+ Positive 0.05 0.051 0.052 0.053 0.054 0.055 0.056 0.057 0.058 25 50 75 100 125 Number of Training Examples Fa lse P os iti ve R at e (a) (b) Figure 5.15: The affect of training set imbalance on false positive rate. The graph shown in (a) shows what results with an extra negative example (b) shows the results with an extra positive training example. 125 Bibliography [1] Badros, G. J., Borning, A., Marriott, K., and Stuckey, P. Con- straint cascading style sheets for the web. In UIST ?99: Proceedings of the 12th annual ACM symposium on User interface software and technology (New York, NY, USA, 1999), ACM Press, pp. 73?82. [2] Bellettini, C., Marchetto, A., and Trentini, A. TestUml: user- metrics driven web applications testing. In SAC ?05: Proceedings of the 2005 ACM symposium on Applied computing (New York, NY, USA, 2005), ACM Press, pp. 1694?1698. [3] Berghel, H. Using the www test pattern to check HTML compliance. Com- puter 28, 9 (1995), 63?65. [4] Berghel, H. HTML compliance and the return of the test pattern. Commu- nications of the ACM 39, 2 (1996), 19?22. [5] Bishop, J. Multi-platform user interface construction: a challenge for software engineering-in-the-small. In ICSE ?06: Proceeding of the 28th international conference on Software engineering (New York, NY, USA, 2006), ACM Press, pp. 751?760. [6] Bobby. http://www.watchfire.com/products/webxm/bobby.aspx. [7] Bowring, J. F., Rehg, J. M., and Harrold, M. J. Active learning for automatic classification of software behavior. In ISSTA ?04: Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis (New York, NY, USA, 2004), ACM Press, pp. 195?205. [8] Browser photo by netmechanic. http://www.netmechanic.com/browser- index.htm. [9] Browsershots. http://browsershots.org/. [10] Brun, Y., and Ernst, M. D. Finding latent code errors via machine learn- ing over program executions. In ICSE ?04: Proceedings of the 26th Inter- national Conference on Software Engineering (Washington, DC, USA, 2004), IEEE Computer Society, pp. 480?490. [11] Chen, B., and Shen, V. Y. Transforming web pages to become standard- compliant through reverse engineering. In W4A: Proceedings of the 2006 inter- national cross-disciplinary workshop on Web accessibility (W4A) (New York, NY, USA, 2006), ACM Press, pp. 14?22. [12] Clark, J. The glorious peoples myth of standards compliance. http://joeclark.org/glorious.html. 126 [13] Cohen, M. B., Snyder, J., and Rothermel, G. Testing across config- urations: implications for combinatorial testing. SIGSOFT Softw. Eng. Notes 31, 6 (2006), 1?9. [14] Cubranic, D., and Murphy, G. C. Automatic bug triage using text cate- gorization. In SEKE ?04:Proceedings of the Sixteenth International Conference on Software Engineering & Knowledge Engineering (SEKE?2004) (2004), ACM Press, pp. 92?97. [15] Diep, M. Profiling deployed software: Assessing strategies and testing oppor- tunities. IEEE Trans. Softw. Eng. 31, 4 (2005), 312?327. Member-Sebastian Elbaum. [16] Doctor HTML. http://www2.imagiware.com/RxHTML/. [17] Eaton, C., and Memon, A. M. An empirical approach to testing web appli- cations across diverse client platform configurations. International Journal on Web Engineering and Technology (IJWET), Special Issue on Empirical Studies in Web Engineering (2007). [18] Elbaum, S., Karre, S., and Rothermel, G. Improving web application testing with user session data. In ICSE ?03: Proceedings of the 25th Inter- national Conference on Software Engineering (2003), IEEE Computer Society, pp. 49?59. [19] Engler, D., Chen, D. Y., Hallem, S., Chou, A., and Chelf, B. Bugs as deviant behavior: a general approach to inferring errors in systems code. In SOSP ?01: Proceedings of the eighteenth ACM symposium on Operating systems principles (2001), ACM Press, pp. 57?72. [20] Hangal, S., and Lam, M. S. Tracking down software bugs using auto- matic anomaly detection. In ICSE ?02: Proceedings of the 24th International Conference on Software Engineering (2002), ACM Press, pp. 291?301. [21] Hao, D., Zhang, L., Mei, H., and Sun, J. Towards interactive fault localization using test information. In APSEC ?06: Proceedings of the XIII Asia Pacific Software Engineering Conference (Washington, DC, USA, 2006), IEEE Computer Society, pp. 277?284. [22] Haran, M., Karr, A., Orso, A., Porter, A., and Sanil, A. Apply- ing classification techniques to remotely-collected program execution data. In ESEC/FSE-13: Proceedings of the 10th European software engineering con- ference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering (New York, NY, USA, 2005), ACM Press, pp. 146?155. [23] Streamlining software testing with IBM Rational and VMware. http://www.vmware.com/pdf/rational.pdf. 127 [24] Kallepalli, C., and Tian, J. Measuring and modeling usage and reliability for statistical web testing. IEEE Trans. Softw. Eng. 27, 11 (2001), 1023?1036. [25] Khaksari, G. H. Expert diagnostic system. In IEA/AIE ?88: Proceedings of the 1st international conference on Industrial and engineering applications of artificial intelligence and expert systems (New York, NY, USA, 1988), ACM Press, pp. 43?53. [26] Koltashev, A. A practical approach to software portability based on strong typing and architectural stratification. In JMLC (2003), L. B?osz?orm?enyi and P. Schojer, Eds., vol. 2789 of Lecture Notes in Computer Science, Springer, pp. 98?101. [27] Korpela, J. Lurching toward babel: Html, css, and xml. Computer 31, 7 (1998), 103?104,106. [28] Kung, D., Liu, C.-H., and Hsia, P. An object-oriented web test model for testing web applications. In Proceedings. First Asia-Pacific Conference on Quality Software (2000), pp. 111?120. [29] Li, Z., Lu, S., and Myagmar, S. CP-Miner: Finding copy-paste and related bugs in large-scale software code. IEEE Trans. Softw. Eng. 32, 3 (2006), 176? 192. Member-Yuanyuan Zhou. [30] Li, Z., and Zhou, Y. Pr-miner: automatically extracting implicit program- ming rules and detecting violations in large software code. In ESEC/FSE-13: Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering (New York, NY, USA, 2005), ACM Press, pp. 306?315. [31] Liblit, B., Aiken, A., Zheng, A. X., and Jordan, M. I. Bug isolation via remote program sampling. In Proceedings of the ACM SIGPLAN 2003 Conference on Programming Language Design and Implementation (San Diego, California, June 9?11 2003). [32] Mao, Y. Automated computer system diagnosis by machine learning ap- proaches. Tech. rep., University of Pennsylvania, 2005. Technical Report, MS-CIS-05-17. [33] Matsumura, T., Monden, A., and ichi Matsumoto, K. A method for detecting faulty code violating implicit coding rules. In IWPSE ?02: Proceed- ings of the International Workshop on Principles of Software Evolution (2002), ACM Press, pp. 15?21. [34] Memon, A., Porter, A., Yilmaz, C., Nagarajan, A., Schmidt, D., and Natarajan, B. Skoll: Distributed continuous quality assurance. In ICSE ?04: Proceedings of the 26th International Conference on Software Engineering (2004), IEEE Computer Society, pp. 459?468. 128 [35] Mooney, J. D. Bringing portability to the software process. Tech. rep., West Virginia University, Department ofStatistics and Computer Science, 1997. Technical Report TR 97-1. [36] Ng, H. T., Goh, W. B., and Low, K. L. Feature selection, perception learning, and a usability case study for text categorization. In SIGIR ?97: Pro- ceedings of the 20th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval (New York, NY, USA, 1997), ACM Press, pp. 67?73. [37] Phillips, B. Designers: The browser war casualties. Computer 31, 10 (1998), 14?16,21. [38] Podgurski, A., Leon, D., Francis, P., Masri, W., Minch, M., Sun, J., and Wang, B. Automated support for classifying software failure reports. In ICSE ?03: Proceedings of the 25th International Conference on Software Engineering (Washington, DC, USA, 2003), IEEE Computer Society, pp. 465? 475. [39] Ricca, F., and Tonella, P. Analysis and testing of web applications. In ICSE ?01: Proceedings of the 23rd International Conference on Software Engineering (2001), IEEE Computer Society, pp. 25?34. [40] Ricca, F., and Tonella, P. Web testing: a roadmap for the empirical research. In WSE (2005), IEEE Computer Society, pp. 63?70. [41] Sedlmeyer, R. L., Thompson, W. B., and Johnson, P. E. Knowledge- based fault localization in debugging: preliminary draft. In SIGSOFT ?83: Proceedings of the symposium on High-level debugging (New York, NY, USA, 1983), ACM Press, pp. 25?31. [42] Sneed, H. M. Testing a web application. In In Proceedings of the 6th In- ternational Workshop on Web Site Evolution (2004), IEEE Computer Society, pp. 3?10. [43] Spiesser, J., and Kitchen, L. Optimization of html automatically gen- erated by wysiwyg programs. In WWW ?04: Proceedings of the 13th inter- national conference on World Wide Web (New York, NY, USA, 2004), ACM Press, pp. 355?364. [44] Sterling, C. D., and Olsson, R. A. Automated bug isolation via program chipping. In AADEBUG?05: Proceedings of the sixth international symposium on Automated analysis-driven debugging (New York, NY, USA, 2005), ACM Press, pp. 23?32. [45] Software testing glossary. www.chambers.com.au/glossary/configur.htm. [46] Theadvanced html/css reference. http://blooberry.com/indexdot/html/index.html. 129 [47] Tonella, P., and Ricca, F. A 2-layer model for the white-box testing of web applications. In In Proceedings of the 6th International Workshop on Web Site Evolution (2004), IEEE Computer Society, pp. 11?19. [48] World wide web consortium. http://www.w3.org/. [49] Wikipedia - world wide web consortium. http://en.wikipedia.org/wiki/W3c. [50] Wikipedia. http://en.wikipedia.org/wiki/Web application. [51] Williams, A., and Probert, R. A practical strategy for testing pair-wise coverage of network interfaces. issre 00 (1996), 246. [52] Xu, L., and Xu, B. A framework for web applicationstesting. InInternational Conference on Cyberworlds (2004), pp. 300?305. [53] Xu, L., Xu, B., and Jiang, J. Testing web applications focusing on their specialties. SIGSOFT Softw. Eng. Notes 30, 1 (2005), 10. [54] Xu, L., Xu, B., Nie, C., Chen, H., and Yang, H. A browser compatibility testing method based on combinatorial testing. In International Conference on Web Engineering (2003), Springer, pp. 310?313. [55] Yang, Y., and Pedersen, J. O. A comparative study on feature selection in text categorization. In ICML ?97: Proceedings of the Fourteenth International Conference on Machine Learning (San Francisco, CA, USA, 1997), Morgan Kaufmann Publishers Inc., pp. 412?420. [56] Zeller, A., and Hildebrandt, R. Simplifying and isolating failure- inducing input. Software Engineering 28, 2 (2002), 183?200. 130