Simplicty. The less there is to test, the more quickly we can test it.
The program should exhibit functional simplicity(e.g., the feature set is the minimum necessary to meet requirements; structural simplicty (e.g., architecture is modularized to limit the propagation of faults, and code simplicity (e.g., acoding standard is adopted for ease of inspection and maintenance.
Stability. The fewer the changes, the fewer the disruptions to testing Changes to the software are in frequent controlled when they do occur, and do not invalidate existing tests. The software recovers well from failures.
Understandability. The more information we have, the smarter we will test. The architectural design and the dependencies between internal, external, and shared components are will understood. Technical documentation is instantly accessible, well organized, specific and detailed, and accurate.
Changes to the design are communicated to testers.