Title: Testing HCI Usability Testing
1TestingHCI Usability Testing
2Chronological order of testing
- Individual program units are built and tested
(white-box testing / unit testing) - Units are hooked together as subsystems and
tested (black-box testing / functional testing) - Subsystems are hooked together and tested
(integration testing) - System is placed in its real environment and
tested (system testing) - All tests are saved and rerun when changes are
made (regression testing)
3Unit Testing
- Individual routines and modules are tested
4Every module should be unit tested
- before it is integrated into the rest of the
system
5Unit tests are written by
- the programmer who wrote the code (white-box)
6Logic coverage
- Every statement in a module tested at least once
7Structured Basis Testing
- Is used to determine the minimum number of tests
needed to test all logic paths - Start with 1
- Add 1 for each potential program selection
statement (if, and, or, while, do ... until, for,
do while) - Add 1 for each case statement (plus 1 if no
default case given)
8What test coverage is needed for this code?
- if (z gt m) x a
- else x a
- if (y lt n) w k x
- else w k --x
- return x w
9Test Case Coverage
Case Test Description Test Data Data Values Expect Output
1 Nominal case All boolean conditions are true a 1, z 2, m 1, x 0, n 2, y 1, k 5, w 0 8
2 first 'if' false z m z 2, m 2 10
3 second 'if' false y n n 2, y 2 5
4 first and second 'if' false z m and y n z 2, m 2, n 2, y 2 7
10Test for bad data
- Too little or no data
- Too much data
- Invalid data
- Wrong data size
- Uninitialized data
11Unit testing should be part of the coding process
- Unit tests should be written by the programmer
creating the program. - Problem
- Tests not written after the program is written.
- Solution
- Write test code before writing the program.
- More Details
-
12XP approach --only test things that might break
- Interface for a method is unclear
- Implementation is a bit complicated
- Uncertain code will work
- If a problem is discovered later, write code for
that problem - Before refactoring code
13Functional Testing
- customer tests whether requirements are satisfied
by the system (black-box)
14Customer testing
- Customers have to determine if the system is
functioning correctly and whether requirements
are met - Customers should write tests on a use case by use
case basis. - A tester should help translate the tests by the
customer into automated tests.
15Debugging is separate from testing
- Problems identified by a test must be recorded
- when was the bug discovered,
- where and how it was found,
- how can it be reproduced,
- what component was fixed
- what is the fix
- who fixed it
- who tested the change
16OO Testing
- Object classes should be exercised in all
possible states all events that cause a state
change in the object - Integration testing is replaced by thread-based
testing -- test the set of classes required to
respond to an input or system event or use case
scenario.
17HCI Usability Testing
- Users give satisfaction ratings and critiques
regarding interaction with the system
18Poor usability unused software
- Feature rich, high quality software will be
shelved by poor usability. - Low usability makes the user unproductive and
error prone
19Usability heuristics
- Simple and natural dialogue
- Speak users language
- Minimize user memory load
- Consistency
- Feedback
- Clearly marked exits
- Shortcuts
- Good error messages
- Prevent errors
- Help and documentation
20Most difficult aspect of usability is how to
define and measure it
- Testing is normally performed in a lab where
users perform normal tasks and HCI specialists
record observations - Count user errors, time accomplishments
- The user is asked about the ease, speed and
pleasantness of the application -
21Keys to improving usability
- Know the user, their work site, etc
- Know competing products
- Set a goal such as reducing errors or increasing
speed per transaction, etc - Use participatory design, or prototyping
- Use iterative design
- Apply consistency to all the screens used