What Iíve Learned from Usability

Published in volume 23, issue 2, March 2013

This issue has three fascinating papers. The first, A New Method for Testing Timed Systems, by BonifŠcio and Moura, presents a discretization method for Timed Input/Output Automata that allows grid automata to be constructed in a more compact manner. (Recommended by Alan Hartmann.) The second, It Really Does Matter How You Normalize the Branch Distance in Search Based Software Testing, by Arcuri, analyzes different normalizing functions for branch distances in search algorithms, and presents a new and improved normalizing function. (Recommended by Mark Harman.) The third, Ranking of software engineering metrics by fuzzy based matrix methodology, by Garg, Sharma, Nagpal, Garg, Garg, Kumar, and Sandhya, presents a new framework for ranking software engineering metrics. (Recommended by Min Xie.)


Iíve recently been working on a project about usable security. Interestingly Iíve observed many similarities between usability and testing. To start with, they both address "emergent" properties, that is, they address aspects of the software that do not exist until the entire system is completed. Of course we can (and should!) test software piece-wise, but some faults are not visible until the system is entirely integrated, and we certainly cannot measure reliability until the entire system is present. Usability is even more emergent--there is really no sign of usability until we get the UI of the system in place.

Many engineers and educators view usability and testing in the same way: As being unimportant to the "real work" of building the backend software. Or worse, usability and testing may get in the way of the "real work."

I think the most important similarity is in their historical relation to software success. In 2000, both testing and usability were relatively unimportant to the success of many software products. In 2013, however, both are now crucial to the success of most software products. In simple terms customers wonít unusable buy software. Similarly, customers wonít buy software unless it has been tested well enough to be reliable.

Finally, there is one other way in which usability and testing are the same. Most practicing software engineers studied computer science in college, and were taught little or nothing about usability or testing. How many undergraduate CS programs have a course in usability? How many undergraduate CS programs have a course in software testing? Does your program?

Jeff Offutt
24 January 2013