2009 Winter Project Week Automated GUI Testing
Key Investigators
- Kitware: Sebastien Barre, Yumin Yuan
Objective
An automated GUI testing framework in KWWidgets is definitely on high demand, and the reason is best described by Ron Kikinis: "The automatic testing capability that kww will enable, appears to me to be more and more important, the more I think about it. As a matter of fact, automatic testing of entire sequences of mouse clicks and keyboard strokes will enable us to move to a different level robustness with slicer 3.0.".
Approach, Plan
Suggestions, discussions and specifications related to this topic are documented in this KWWidgets wiki page. As described on the wiki, many solutions (freeware and commercial) have been investigated, and currently we think that Squish looks like to be a valid solution for simple tests (or, actually, our only solution). A detailed wiki page about KWWidgets testing with Squish has been created, and a work-plan is defined:
- Create a CMake module to find Squish on the system (paths to Squish server and Squish runner).
- Create CMake macros that will start/stop the server and run a test by invoking the runner and parsing its output.
- Invoke the Squish module when configuring/building KWWidgets.
- Create CMake macros that will add Squish tests for KWWidgets.
- Create new suites for KWWidgets examples.
- Create new suites to test every single KWWidgets core widget (in the WidgetsTour for example).
- Create new suites for Slicer3.
Progress
- Create a CMake module to find Squish on the system (paths to Squish server and Squish runner). --- Done by Brad Davis
- Create CMake macros that will start/stop the server and run a test by invoking the runner and parsing its output. --- Done by Brad Davis
- Invoke the Squish module when configuring/building KWWidgets. --- Done
- Create CMake macros that will add Squish tests for KWWidgets. --- In Progress (Need to add validation methods for some tests)
- Create new suites for KWWidgets examples. --- In Progress (Some new Squish test suites are created for all the Cxx examples, but still need to add validation methods to these tests).
- Create new suites to test every single KWWidgets core widget (in the WidgetsTour for example). --- In progress. (Some widgets are not working with Squish currently (Squish bugs), for example, vtkKWComboBox and vtkKWMenuButton. Trying to work with Squish support team to resolve these issues.)
- Create new suites for Slicer3. --- In progress. (A couple simple tests are created, but the test scripts need to be manually massaged quite a bit to make them work.)