A heuristic evaluation is a method of testing a computer program to identify problems in the user interface design. It is one way of measuring how well a human user can interact with the computer while utilizing a certain piece of software. The method was developed by Jakob Nielsen, a consultant in the field of usability engineering.
Heuristic evaluations principles
- Visibility of system status - The software should always keep the user aware of what is going on, and provide feedback to user actions within a reasonable period of time.
- Correspondence between the system and the real world - The software should "speak the user's language" - it should use words, phrases, and concepts that are familiar to the user. Information should be presented using real-world conventions, in a logical and intelligible order.
- User control and freedom - Users who make a mistake by using the program incorrectly should have a clearly marked "emergency exit" to leave the unwanted state without extensive inconvenience. The program should support undo and redo functionality.
- Consistency and standards - Users should not have to wonder whether different words, situations, or actions mean the same thing. Established conventions should be followed.
- Error prevention - Conditions that may produce an error should be anticipated and handled intelligently. The user should be given a confirmation message if the action they are about to take might produce an error.
- Recognition rather than recall - The user should have to remember the fewest things possible to use the program efficiently. Objects, actions, and options should be made visible whenever possible. Instructions for how to use the system should be visible or easily retrievable.
- Flexibility and efficiency of use - The system should cater to experienced users, giving them the option to accelerate use of the system through shortcuts or macros.
- Aesthetic and minimalist design - Dialogs should not contain irrelevant or rarely-needed information.
- Help users recognize, diagnose, and recover from errors - Error messages should be phrased in helpful language as opposed to error codes. Errors should be precisely identified and indicated, with constructive suggestions for a solution.
- Help and documentation - Documentation should be easy to search, focused on the user's perspective, list concrete steps to be taken, and not be too large.
In the evaluation process, each of these heuristics is usually associated with a numeric value, and users are asked to provide feedback, rating each aspect of the user experience. This feedback is then provided to developers to help them improve the software.