Software Testing Fundaments

The goal of testing is to find errors, and a good test is one that has a high probability of finding an error.

Testability : “Software testability is simply how easily [a computer program] can be tested.” The following characteristics lead to testable software.

Operability : If a system is designed and implemented with quality in mind, relatively few bugs will block the execution of tests, allowing testing to progress without fits and starts.

Observability : Inputs provided as part of testing produce distinct outputs. Incorrect output is easily identified. Internal errors are automatically detected and reported. Source code is accessible.

Controllability : All possible outputs can be generated through some combination of input, and I/O formats are consistent and structured. All code is executable through some combination of input. Software and hardware states and variables can be controlled directly by the test engineer.

Decomposability : By controlling the scope of testing, we can more quickly isolate problems and perform smarter retesting.

Simplicity : “The program should exhibit functional simplicity (e.g., the feature set is the minimum necessary to meet requirements); structural simplicity (e.g., architecture is modularized to limit the propagation of faults), and code simplicity.

Stability : “Changes to the software are infrequent, controlled when they do occur, and do not invalidate existing tests. The software recovers well from failures.

Understandability : “The  architectural design and the dependencies between internal, external, and shared components are well understood, Technical documentation is instantly accessible, well organized, specific and detailed, and accurate. Changes to the design are communicated to testers.

Test Characteristics : A good test has a high probability of finding an error. A good test is not redundant.

Related

Software engineering 280182849391416872

Post a Comment

emo-but-icon

item