On the virtues of virtual UI

Here are five species of application that seem, at first glance, to have little in common: mainframe "green screen," Win32/VB, Java/Swing, Web browser, and .Net WinForms. An enterprise application portfolio is likely to include members of each of these species. Nobody chooses this diversity; it just happens, and it complicates everything from development and deployment to maintenance and testing.
Might these various species in fact share common DNA?
One company with a refreshingly pragmatic approach to isolating common software DNA is Worksoft, whose flagship product, Certify, tests all of the application flavors I've named.
Certify works by distilling each flavor down to a neutral representation of its data-bound objects. It creates an object map by any of four methods: parsing source code, inspecting the running application, manual specification, or importing from another tool. After the map is built, testers who know how to use the application -- but not how to write code that exercises it -- can choose from an inventory of screens and widgets, describe inputs and expected outputs in a spreadsheetlike interface, and compose sequences of tests. [Full story at InfoWorld.com]

Worksoft's approach to virtual-UI-oriented testing reminds me very much of a similar concept described by Jeff Nielsen in our podcast on agile development. Jeff said:

We found that a good place to hook in Fitnesse is at the virtual UI layer, which is a sublayer in the presentation layer just below the actual UI. You can do business rule tests just as well by expressing them in terms of UI as you can by expressing them in terms of inputs and outputs, and a lot of testers seem to be more comfortable the closer it is to their manual testing experience.
The context for that remark is captured in this three-minute excerpt from our conversation.

Note that the two strategies differ in an important way. Worksoft's virtual UI generalizes across diverse application flavors by ignoring interaction details (e.g., mouse clicks) and focusing on the inputs and outputs to data-bound widgets. Jeff's approach is much more closely tied to a specific application flavor, e.g. SWT, which means -- he says -- that it's possible to test assertions like "The save button shouldn't be enabled until all of the required fields are filled in with a valid value."

Merging these two strategies is a daunting challenge. But what I've heard recently from both Worksoft co-founder/CTO Linda Hayes, and Digital Focus chief scientist Jeff Nielsen, underscores why it's worth doing. It's great to have developers write unit tests, but you also want to harness the efforts of users, and virtual UI is the way to do that.

Former URL: http://weblog.infoworld.com/udell/2005/08/05.html#a1284