Using Mindmaps to Explore User Interaction and Create QA Test Plans
Posted by Bob Warfield on September 9, 2007
Using Mindmaps to Explore User Interaction is a cool idea. Basically, you depict the flow through the UI as a visual map:
Doing so can give you an instant idea of how hard or easy it is to navigate the UI to key functionality. I would venture to add that studying the “traffic patterns” along the mindmap’s highways and optimizing them the way you would a web site is probably a good way to tune up a UI.
Now here is a newsflash: you can buy a piece of software that will automatically generate these mindmaps. It’s called Rational Test Factory. Here is a UI Map from Test Factory:
Same principle, with each UI object called out inside its container (window) and links showing how you navigate. Test Factor is a product I built once upon a time at a startup I founded that was called Integrity QA Software. There were a number of unique aspects to the product. First was its ability to “spider” or crawl a user interface and produce these maps. Second, it had the ability to automatically create test suites by using the map as a template to generate tests.
QA people take note, because these maps are good for a lot besides UI design and optimization. A mind map like this of a UI is exactly the map you need to plan your testing campaign! I could see putting a big map up on a wall and using it to cross reference your test plans and see that you were getting proper coverage across the whole UI.
A third thing we did that was very powerful was we defined behaviours at each node. A button is obvious, but menus and type-ins are more interesting. For example, we made it easy to cycle through a bunch of test files. The type-in for the file name would be given a property that was a list of test files. Push a button, and a script got generated to crank through all those files. Being able to define allowable inputs (for example, what is the range of valid numbers) is hugely powerful for testers. But it would also be hugely powerful for UI and even program design. This tool was aimed at testing, but at some point we planned to use it as a UI design tool and do code generation to create a UI from one of these maps. Never got to it.
The fourth really cool thing this product did was to use Genetic Algorithms to generate optimal test scripts. This was some seriously cutting edge stuff. The UI maps gave us templates and made it easy to generate test scripts. The role of the Genetic Algorithm was to evolve better and better scripts. “Better” was defined by a fitness function. We used code coverage and script length. The shortest script that tested the most code was deemed the best script. QA people loved this thing. If the developer’s changed the UI, they could just remap and regenerate new scripts. Add new code? Regenerate scripts to test the new code.
The last way cool thing was that this was the first product I build with a grid architecture. We had a demo room with a rack of 4 by 4 (16) PC’s and two really comfortable chairs set in front of the rack. On a table between the chairs was the 17th PC that served as a control console. We’d sit a customer down in one chair and the demoer in the other. The customer’s software would be loaded. Hit a button and all 16 machines started mapping the UI in parallel. The customer’s eyes would literally bug out watching all that activity on their familiar product. Then testing would begin. Bugs would start being reported on the console.
I haven’t kept up with Rational’s doing with the product, but at the time it wasn’t suited to testing web applications because it was built before there were many.
It certainly is a fabulous example of how to use multicore to solve a hard problem. The graphical programming aspect is also intriguing. It begs for that UI design and code generation tool we never built.