CSC/ECE 517 Fall 2013/ch1 1w32 av
Introduction
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.
GUI testing is difficult mainly due to following reasons :
- Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.
- Event-driven architecture. The test suite has to simulate the various user created actions.
Following are the challenges encountered while testing the graphical user interface of any software or system:
- Automation is difficult.
- The scope for testing is enormous
- Inability to determine the state of the program from GUI.
- Regression testing is difficult. Testcases may not be reusable
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.
GUI Testing Tools
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:
- AutoHotkey
- CubicTest
- Dogtail
- Dojo
- Selenium
- Watir
- GNU Xnee
GUI testing in Ruby
Selenium
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.
Watir
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.
There are 2 version available :
- Watir-Classic : supports only Internet Explorer on Windows
- Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).
GNU Xnee
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :
- Automate tests like nightly regression
- Demonstrate programs by recording and replaying a user interaction with the system
- Distribute actions from system admin to end users.
The Record and replay ‘macro’ is the highlight of Xnee.
DOJO
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development.
- Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)
- It establishes a framework for defining modules of code and managing their inter-dependencies
- Supports internationalization, localization, and accessibility
- Provides a rich suite of commonly needed utility classes and user-interface widgets.
CubicTest
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.
- CubicTest's test editor is centered around pages/states and transitions between these pages/states.
- The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.
- CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.
Dogtail
Dogtail is a GUI test tool and automation framework written in Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program. Follwoing are the notable features of Dogtail:
- Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.
- Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.
- Easily Extensible: Writing custom classes and helper libraries are easy.
- Results and debug reporting: Separate logs for test case comparisons and debug information are generated.