I was listening to the radio on the drive into Crank HQ this morning and one of the guests used a great line:
We can't test what is important, so what becomes important is what we can test
I thought to myself that this summed up the role of the user interface in most software products. The user interface represents a customer's main interaction point with a product but all too often it is the core functionality that the user interface drives that receives all of the testing attention. Modern software development methodologies such as Test Driven Development and Continuous Integration put an emphasis on using automated build and test cycles to ensure that a project doesn't veer off track. Unfortunately, the mechanics of applying these ideas become so awkward slow and frustrating that they rapidly are abandoned in favour of the more standard API unit testing that can bring immediate gratification.
Recognizing this UI testing and continuous integration challenge we wanted to ensure we addressed them in the design of Storyboard:
- Test Drive the User Interface: Storyboard's input model is generic such that inputs can originate from any number of sources, both real and virtual. The Storyboard SDK provides plugins that can capture and serialize the complete event input stream and then a sample playback application is provided that allows that event stream to be replayed. Using this you can quickly run performance or memory tests by running the application through loops of varied inputs.
- Capture Unintended User Interface Changes: Storyboard supports host based simulation that allows a user interface to be developed and prototyped without access to the final hardware solution. Storyboard deployment bundles are also capable of generating the same user interface on multiple OS, CPU and rendering technologies. In order to ensure that an application is consistently evolving and that the user interface is not taking any unexpected turns, the Storyboard SDK provides a screen capture plugin that can be used to grab screenshots of the application for pixel based comparisons with expected versions.
When these Storyboard SDK functionalities of event capture, playback and screen image dumps are taken together, they provide a solid base upon which to build tools that fit into your own testing processes and frameworks. In fact at Crank we use these same functionalities to validate our nightly builds across 5 different operating systems, 4 CPU architectures and 6 different rendering technologies.