Developing a complex device requires the combination of integrated hardware, software, embedded technologies vision, and other intricate components. For these devices, the user interface and overall user experience are important for user adoption. A poor user experience can negatively impact user acceptance, and market acceptance, of the product. User interface design is important and requires a deep level of understanding of the user requirements as well as the programming skills to develop an interface that is secure, easy to use and easy to learn. Software testing is critical.
Nearly as important is the test of the software to ensure it not only meets the requirements but also can handle unforeseen user inputs. Software testing consists of two main areas. In the first test area, the system is tested, the screen by screen, against the defined requirements. This answers the question, “does the product do what it is designed to do?” Another important test the “ad hoc” test. This test helps to answer the question, “can the interface handle the unexpected?”
A comprehensive testing plan must be developed to test the user interface screen by screen against protocols. If designed correctly, the process is a simple matter of following the steps in the protocol and recording the results. This ensures that the protocols are correct, and the system functions as expected.
In the ad hoc test, the system is subjected to a battery of different tests in an effort to try to see if the system will crash or provide an unexpected response. This includes testing of modules screens, regression testing in the instance of a new release, negative testing (i.e. entering invalid data to ensure the system handles it properly), and stress testing to ensure the system can remain stable when subjected to high loads.
When software testing, there are key considerations to ensure that the test process was comprehensive and delivers actionable results:
- Understand the operations of the designed product’s user interface – understanding of the intended use and navigation of the system will streamline the test procedure.
- Perform a design review to ensure that non-testable items such as schematics were designed to the requirements.
- When dry running the requirements, ensure the test protocols associated with each requirement are followed step-by-step to ensure any errors uncovered are the result of following the process, vs. a misstep.
- Have a clearly defined process for handling errors or “bugs” — what happens when you find them, how are they recorded, what are the next steps and resolution process?
- Keep records as you go through the testing process. This will make it easier to create your final report as part of verification. For example, if a protocol is incorrect, make the correction and update the document version right away. Don’t wait and try to “remember” something.
Much of the components of a complex product are unseen by an end user. The user interface is the point of interaction for users to the product. It can be argued that the user interface is the most critical, as it determines the ease at which the end user can perform, and ultimately how likely the user is to adopt the system. Having a strong set of requirements and protocols to test those requirements is not enough. The actual testing of the user interface must be performed diligently to ensure a thorough review and ultimately, easy to use product.