what is testability
refers to the ease with which software can be made to demonstrate its faults through (typically execution-based) testing
what does it mean for a system to properly testable
it must be possible to control each of the components inputs and then to observe its outputs
general scenario: 5 values for source
with manual or automatic testing tools:
general scenario: 4 values of stimulus
general scenario: 6 values for environment
general scenario: 1 value for artifact
the portion of the system being tested
general scenario: 3 values for response
general scenario: 4 values for response measure
effort to find fault or class of faults
-effort to achieve a given percentage of state space coverage
probability of fault being revealed by the next test
-time to perform tests
general scenario: 4 more values response measure
the main goal of testability tactics
to allow for easier testing when an increment of software development has completed
2 categories of testability tactics
- limit complexity
6 ways to control and observe the system state
abstract data sources
-sandbox
executable assertions
meaning of “specialized interfaces”
to control or capture variable values for a component either through a test harness or through normal execution
meaning of “record/playback”
capturing information crossing an interface and using it as input for further testing
meaning of “local state storage”
to start a system, subsystem, or module in an arbitrary state for a test
meaning of “abstract data sources”
abstracting interfaces lets you substitute data more easily
meaning of “sandbox”
isolate the system from the real world to enable experimentation that is unconstrained by the worry about having to undo the consequences of the experiment
meaning of “executable assertions”
assertions are hand coded and placed at desired locations to indicate when and where a program is in a faulty state
2 methods to limit complexity
limit structural complexity
limit non-determinism
meaning of “limit structural complexity (3 things)
meaning of “limit non-determinism”
finding all sources of non-determinism, such as unconstrained parallelism, and weeding them out
3 factors for binding time