Testing and Maintenance of Graphical User Interfaces Valeria Lelli Leitao
Total Page:16
File Type:pdf, Size:1020Kb
Testing and maintenance of graphical user interfaces Valeria Lelli Leitao To cite this version: Valeria Lelli Leitao. Testing and maintenance of graphical user interfaces. Human-Computer Inter- action [cs.HC]. INSA de Rennes, 2015. English. NNT : 2015ISAR0022. tel-01232388v2 HAL Id: tel-01232388 https://tel.archives-ouvertes.fr/tel-01232388v2 Submitted on 11 Apr 2016 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. THÈSE INSA Rennes présentée par sous le sceau de l’Université Européenne de Bretagne Valéria Lelli Leitão Dan- pour obtenir le grade de tas DOCTEUR DE L’INSA DE RENNES ÉCOLE DOCTORALE : MATISSE Spécialité : Informatique LABORATOIRE : IRISA/INRIA Thèse soutenue le 19 Novembre 2015 devant le jury composé de : Testing and Pascale Sébillot Professeur, Universités IRISA/INSA de Rennes / Présidente maintenance of Lydie du Bousquet Professeur d’informatique, Université Joseph Fourier / Rapporteuse Philippe Palanque graphical user Professeur d’informatique, Université Toulouse III / Rapporteur Francois-Xavier Dormoy interfaces Chef de produit senior, Esterel Technologies / Examinateur Benoit Baudry HDR, Chargé de recherche, INRIA Rennes - Bretagne Atlantique / Directeur de thèse Arnaud Blouin Maître de Conférences, INSA Rennes / Co-encadrant de thèse Testing and Maintenance of Graphical User Interfaces Valéria Lelli Leitão Dantas Document protégé par les droits d’auteur Contents Acknowledgements 5 Abstract 7 Résumé en Français 9 1Introduction 19 1.1 Context .................................... 19 1.2 Challenges and Objectives for Testing GUIs . 19 1.3 Contributions ................................. 22 1.4 Overviewofthisthesis ............................ 24 IStateoftheArtandRelatedWork 27 2StateoftheArtandRelatedWork 29 2.1 GUIDesign .................................. 29 2.1.1 TypesofGUIs ............................ 30 2.1.2 Seminal HCI Concepts . 31 2.2 GUIarchitecturaldesignpatterns. 33 2.3 GUIV&Vtechniques............................. 36 2.3.1 Defect classification schemes . 37 2.3.2 Model-basedGUItesting . 47 2.3.3 Dynamic Analysis . 49 2.3.4 StaticAnalysis ............................ 52 2.4 Conclusions .................................. 59 II Contributions 61 3GUIfaultmodel 63 3.1 FaultModel.................................. 63 3.1.1 UserInterfaceFaults . 64 3.1.2 UserInteractionFaults. 66 1 2 CONTENTS 3.1.3 Discussion............................... 69 3.2 Relevance of the Fault Model: an empirical analysis . 70 3.2.1 Introduction.............................. 70 3.2.2 ExperimentalProtocol . 70 3.2.3 ClassificationandAnalysis . 71 3.2.4 Discussion............................... 72 3.3 Are GUI Testing Tools Able to Detect Classified Failures? An Empirical Study ..................................... 73 3.3.1 GUITARandJubula. 73 3.3.2 Experiment .............................. 74 3.3.3 ResultsandDiscussion. 74 3.4 ForgingfaultyGUIsforbenchmarking . 76 3.4.1 PresentationofLaTeXDraw . 76 3.4.2 MutantsGeneration ......................... 77 3.4.3 How GUI testing tools kill our GUI mutants: a first experiment . 79 3.5 ThreatstoValidity .............................. 80 3.6 Current limitations in testing advanced GUIs . 81 3.6.1 Studying failures found by current GUI testing frameworks . 81 3.6.2 LimitsofthecurrentGUItestingframeworks . 81 3.7 GUItestingwithricherUIDLs . 84 3.7.1 ModelingGUIswithMalaiUIDL . 84 3.7.2 Interaction-action-flowgraph . 86 3.7.3 Casestudies.............................. 88 3.8 Conclusion................................... 91 4 GUI Design Smells: The Case of Blob listener 93 4.1 Introduction.................................. 94 4.2 WhatComposeGUIlisteners? AnEmpiricalStudy . 97 4.3 Blob listener: Definition&Illustration . 98 4.3.1 Blob listener ............................. 99 4.3.2 Variants of Blob listener ....................... 99 4.4 Detecting Blob listeners ........................... 102 4.4.1 ApproachOverview . 102 4.4.2 Detecting Conditional GUI Listeners . 103 4.4.3 Detecting Commands in Conditional GUI Listeners . 103 4.4.4 Blob listener Detection........................ 106 4.5 Evaluation................................... 106 4.5.1 Objects ................................ 106 4.5.2 Methodology ............................. 107 4.5.3 Results and Analysis . 108 4.6 Threatstovalidity .............................. 113 4.7 Discussion................................... 114 4.7.1 ScopeoftheApproach. 114 4.7.2 GoodPractice ............................ 115 CONTENTS 3 4.8 Towardsarefactoring ............................ 116 4.9 Conclusion................................... 118 III Conclusion and Perspectives 121 5 Conclusion and Perspectives 123 5.1 Summaryofcontributions . 123 5.2 Perspectives.................................. 125 Appendix 131 Bibliographie 135 List of Figures 147 List of Tables 149 List of algorithms 151 Acknowledgements I would like to thank my supervisors, Benoit Baudry and Arnaud Blouin, for their guidance and mentoring that made this work possible. I would like to say that working in the Diverse team was an pleasure. I owe special thanks to my Master’s supervisor, Rossana Andrade, for introducing me in the research world and encouraging me to do a PhD abroad. I would like to thank my family. Even so far away from home, they are always present in my life during these three years. I first wish to express my gratitude to my parents, Ademir and Maria Aparecida, for all their support, comprehension, and love. I would like to thank my brother Marcelo for helping me with his designer skills. Thanks to my sister Claudia for all love and for giving us three awesome nephews: João Henrique, Arthur and my goddaughter Júlia. A special thank to my youngest sister Priscila for being a godmother and taking care of my precious Assolinha until the last moment of his life. I would like to thank my loved Assolinha, my eternal little gray, for doing me a better person. You will be always in my heart and forever on my mind. Finally, I thank my husband Manoel for encouraging me to accept this challenge. Thanks so much for your sacrifice, patience, support, and love. Your presence was vital. Thank you my life. I love you. 5 Abstract Graphical user interfaces (GUIs) are integral parts of interactive systems that require interactions from their users to produce actions that modify the state of the system. While GUI design and qualitative assessment is handled by GUI designers, integrating GUIs into software systems remains a software engineering task. The software engi- neering community takes special attention to the quality and the reliability of software systems. Software testing techniques have been developed to find errors in code. Soft- ware quality criteria and measurement techniques have also been assessed to detect error-prone code. In this thesis, we argue that the same attention has to be investigated on the quality and reliability of GUIs, from a software engineering point of view. We specifically make two contributions on this topic. First, GUIs can be affected by errors stemming from development mistakes. While the current GUI testing tools have demonstrated their ability in finding several kinds of failures (e.g., crashes, regressions) on simple GUIs, various kinds of faults specific to GUIs have to be identified and studied. The first contribution of this thesis is a fault model that identifies and classifies GUI faults. This fault model has been designed empirically by performing a round trip process between the analysis of the state-of-the-art of GUI design and bug reports. For each fault we illustrate which part of a GUI is affected and how that fault occurs as GUI failure. We show that GUI faults are diverse and imply different testing techniques to be detected. We then develop GUI mutants derived from our fault model. These mutants are freely available for developers of GUI testing tools to evaluate the ability of their tool in finding GUI failures. Second, like any code artifact, GUI code must be maintained and is prone to evolu- tion. Design smells are bad designs in the code that may affect its quality. Maintenance operations can be performed to correct design smells. As for the first contribution, we focus on design smells that can affect GUIs specifically. We identify and characterize a new type of design smell, called Blob listener, which is a GUI specific instance of a more general design smell: God method, that characterizes methods that "know too much or do too much". It occurs when a GUI listener, that gathers events to treat and transform as commands, can produce more than one command. We propose a system- atic static code analysis procedure that searches for Blob listener that we implement in a tool called InspectorGuidget. Experiments we conducted exhibits positive results regarding the ability of InspectorGuidget in detecting Blob listeners. To counteract the 7 8 Abstract use of Blob listeners, we propose good coding practices regarding the development of GUI listeners. Résumé en Français Contexte Les logiciels reposent généralement sur des interfaces utilisateur pour être contrôlés par les utilisateurs.