Notes

  • GUI testing
    • Most of the GUI testing papers are published by Prof. Atif Memon in University of Maryland. Most of their works utilize models for test generation:
      • GUI Ripping: reverse engineering of an executing GUI. It examines a GUI automatically and hierarchically to create an “integration tree” of the GUI elements and their relationship to each other and the GUI
      • Combination of events: generating tests using combination of events. For example, combining two events like “save, save as”. Pairs of events are usually possible to use for generation. But sequences of more than two, like triples, are too large for generation.
      • Event flow model: a graph represents all possible sequences of event that can be executed on the GUI, where vertices represent events and edges represent what events can be executed after certain events
      • Probabilistic model: using usage profile to construct probabilistic model . Collect the actual usage of the applications in the format of event sequences
  • Crawling AJAX by Inferring User Interface State Changes.
    • This paper presents an automatic approach to infer the state flow graph of an web application built in AJAX. For our project, we may not need the complexities of handling AJAX but their approach can also be used to handle simple web pages. They release a tool at http://crawljax.com/.
  • Model Based Testing
    • Ana C. R. Paiva ( Universidade do Porto) proposed model based testing of GUI applications in her PhD thesis. The GUI is model in Spec# and uses MC/DC coverage criteria such that each variable affects the functionality under test independently. After Spec# generates the test from FSM, a mapping from model actions to implementation actions is used to test the actual GUI.
  • Web Application Testing
    • A Framework for Automated Testing of JavaScript Web Applications: This paper applied feedback directed random testing to test javascript application. In essence, it uses two heuristics to prioritize the event sequence: a. Coverage: prefers sequence with lower coverage than those that have nearly 100% coverage and (b) read/write sets. For input values, it uses random default values plus the constants encountered in the event handlers.