The developer’s job isn’t unlike that of a professional photographer.
Most of the time spent by a photographer is dedicated to finding just the right angle for the shot, fidgeting with the lighting and adjusting the composition of the scene.
A single click crystallizes all that work in a photo, which will eventually find itself on social media to receive its share of praise or criticism from the users, based on how beautiful or evocative they think it is.
Few people spare a thought to the grunt work that led up to that final snap. Appearances are everything in a creative endeavour.
Likewise, most software that is launched will ultimately be judged on the basis of how easy it is to use and whether it really helps the user to get their job done.
You can’t always get what you want…
Although developers rightfully place a lot of pride and effort in the functional aspects, the underlying code and technical innovation of software, most users are completely blind to these matters.
Which is understandable.
The users only ever get see the photograph, or interface of the finished software. It’s all they have to form an opinion, so in their eyes that’s what really counts. Even a minor problem in the interface could effectively render the whole product unusable for a user, no matter how many sleepless night the developer spent on the rest of the product.
Irrespective of how great you are at coding or database work, your achievements are stripped of any perceived validity the moment the user can’t complete his or her request through the user interface (UI).
Which brings us to the subject of this article. Why is user interface testing so important?
You get what you see
UI testing simply involves assessing the UI on the basis of important variables such as visibility, consistency, accessibility, usability and compatibility.
It is vital that UI testing takes place early on in the development process (like all other forms of testing), since the sooner you can catch offending elements in your UI, the quicker they can be resolved, sparing yourself a lot of hassle and embarrassment.
Software development follows an evolutionary pathway. As time progresses, the product becomes more complex. Therefore any errors that slipped in at the beginning of development are likely to be pain to rectify when the software is ready to launch.
This will invariably require the developers to put in more hours of work, with a corresponding increase in the expenses incurred by the team and possibly loss of profits due to a delayed release.
Putting UI testing in perspective
UI testing isn’t always straight-forward and it does demand that a sufficient chunk of time from the development process is dedicated to this type of testing to address any issues in the UI.
If the idea of UI testing still confuses you, think about it in terms of requirements testing, namely that it is the process of testing the product’s GUI to ensure that it fulfills the written specifications. Like any kind of testing you’ll need to write a variety of test cases to cover all the functionalities within the system’s UI.
The main problems that are faced in UI testing concern dealing with domain size and working with sequences.
The problem of domain size is quite self-evident. Unlike a command line interface system, a GUI accommodates a variety of operations which all have to be tested.
The second problem is the sequencing problem. Some of the functionalities that the system allows may only be accomplished after following a complex sequence of GUI events. For example, opening a file could require the user to first click on the File Menu, then click on Open and use the dialog box to choose the file and open it in a new window.
Naturally, the higher the number of possible operations possible in the GUI, the bigger is the sequencing problem and it can become a serious issues when testers have to detail all possible scenarios in test cases written manually.
Although UI testing may seem to be very complex, it is an essential component of the development process and your team should at least conduct some basic form of UI testing that covers the most common, if not all, functionalities in your product.
Ensuring that the most important functions of the GUI work properly before releasing the product is imperative, and if conducted diligently, UI testing may save you and your team members a lot of embarrassment.