[PAST EVENT] Carlos Bernal-Cárdenas, Computer Science - Ph.D. Defense
Users entrust mobile applications to help them with different tasks in their daily lives. However, for each app that helps to finish a given task, there are a plethora of other apps in popular marketplaces that offer similar or nearly identical functionality. This makes for a competitive market where users will tend to favor the highest quality apps in most cases. Given that users can easily get frustrated by apps which repeatedly exhibit bugs, failures, and crashes, it is imperative that developers promptly fix problems both before and after the release. However, implementing and maintaining high quality apps is difficult due to unique problems and constraints associated with the mobile development process such as fragmentation, quick feature changes, and agile software development.
This dissertation presents an empirical study, as well as several approaches and tools for developers, testers and designers to overcome some of these challenges during the software development life cycle. More specifically, first we perform an in-depth analysis of developers’ needs on automated testing techniques. This included surveying 102 contributors of open source Android projects about practices for testing their apps. The major findings from this illustrate that developers: (i) rely on usage models for designing test app cases, (ii) prefer expressive automated generated test cases organized around use cases, (iii) prefer manual testing over automation due to reproducibility issues, and (iv) do not perceive that code coverage is an important measure of test case quality.
Based on the findings from the survey, this dissertation presents several approaches and tools to support developers and testers of Android apps in their daily tasks. In particular, we present the first taxonomy of faults in Android apps. This taxonomy is derived from a manual analysis from 2,023 software artifacts extracted from six different sources (e.g., stackoverflow and bug reports). Taxonomy is divided in 14 categories containing 262 specific types. Then, we derived 38 Android-specific mutation operators from the taxonomy. Additionally, we implemented the infrastructure called MDroid+ that automatically introduces mutations in Android apps.
Third, we present a practical automation for crowdsourced videos of mobile apps called V2S. This automatically translates video recordings of mobile executions into replayable user scenarios. V2S uses computer vision and adopts deep learning techniques to identify user interactions from video recordings that illustrate bugs or faulty behaviors in mobile apps.
Last but not least, we develop two tools to: (i) help developers and designers to get inspiration during the design process throughout a search engine of Android mobile screenshots, and (ii) support the maintenance process by facilitating the way users report bugs for Android apps.
Carlos Bernal-Cárdenas received the B.S. degree in systems engineering from the Universidad Nacional de Colombia in 2012 and his M.E. in Systems and Computing Engineering in 2015. He is currently a Ph.D. candidate in Computer Science at William & Mary as a member of the SEMERU research group advised by Dr Denys Poshyvanyk. His research interests include software engineering, software evolution and maintenance, information retrieval, software reuse, mining software repositories, mobile applications development, and user experience. He has published in several top peer-reviewed software engineering venues including: ICSE, ESEC/FSE, ICST, and MSR. He has also received the ACM SIGSOFT Distinguished paper award at ESEC/FSE'15 & '19 and ICSE'20. More information is available at http://www.cs.wm.edu/~cebernal/