A major area of focus for app developers is the user interface (UI) with which users interact with the web and mobile apps. Companies invest a significant amount of effort to design and implement the UIs of their websites and mobile apps. This effort is important because studies have shown that UI aesthetics significantly impact users' overall evaluation of a website; particularly, impressions of trustworthiness and usability. Presentation failures --- discrepancies between the actual appearance of a UI and its intended appearance --- can undermine this effort and negatively impact end users' perception of the quality of the site and the services it delivers.
Presentation failures can occur easily in modern web and mobile apps because of the highly complex and dynamic nature of the code that defines their visual appearance. In fact, one of our industrial collaborators, reports that presentation failures generally represent almost 50-60% of the total failures found during testing. Presentation failures are difficult to debug as the process is both labor intensive and error prone. Testers can easily miss presentation failures, and once a failure is detected, it can be difficult to identify the corresponding faulty UI elements. Finally, fixing the fault without introducing new failures is complicated due to the fact that server side code can dynamically generate content that is included in the faulty UI as well as other UI. Developers have several techniques available to them to help debug presentation failures. However, these techniques have limitations that either reduce their effectiveness or make them inappropriate for general usage.
My group's work on ensuring the correctness of UIs encompasses three main areas of research. The first of these is automated techniques for detecting when presentation failures have occurred (see [mahajan15icst]). The second area is focused on techniques that use the detected information to identify the faulty UI elements in the app (see [mahajan14sbst]). Finally, the third area is the development of automated techniques that can repair the faulty UI code.
This work is supported, in part, by NSF grant 1528163 and an Infosys grant to the University of Southern California.