Test 5 Flashcards
____ The goal of testing is to find errors.
True
____ A good test is one that has a low probability of finding an error.
True
____ One should not consider a design and implement for a computer-based system or a product with “testability” in mind.
True
____ The tests themselves must exhibit a set of characteristics that achieve the goal of finding the most errors with a maximum of effort.
True
____ A good test should be neither too simple nor too complex.
True
Any engineered product (and most other things) can be tested in one of two ways: Fill in the blank AND define each. Part 1 of 2
Black-box testing (Functional testing) Knowing the specified function that a product has been designed to perform, tests can be conducted that demonstrate each function is fully operational while at the same time searching for errors in each function
Any engineered product (and most other things) can be tested in one of two ways: Fill in the blank AND define each. Part 2 of 2
White-box testing (Structural testing) Knowing the internal workings of a product, tests can be conducted to ensure that “all gears mesh,” that is, internal operations are performed according to specifications and all internal components have been adequately exercised.
White-box testing is:
- Guarantee that all independent paths within a module have been exercised at least once
- Exercise all logical decisions on their true and false sides
- Execute all loops at their boundaries and within their operational bounds
- Exercise internal data structures to ensure their validity
Black-box testing tries to find:
- Incorrect or missing functions
- Interface errors
- Errors in data structures or external database access
- Behavior or performance errors
- Initialization and termination errors
techniques that can be used for designing black box tests:
Equivalence Partitioning – It is a software test design technique that involves dividing input values into valid and invalid partitions and selecting representative values from each partition as test data.
Boundary Value Analysis – It is a software test design technique that involves the determination of boundaries for input values and selecting values that are at the boundaries and just inside/ outside of the boundaries as test data
Cause-Effect Graphing – It is a software test design technique that involves identifying the cases (input conditions) and effects (output conditions), producing a Cause-Effect Graph, and generating test cases accordingly.
Testing for real-time systems
The time-dependent, asynchronous nature of many real-time applications adds a new and potentially difficult element to the testing mix—time.
Testing for Real-Time Systems four step strategy:
- Task testing - -test each task independently
- Behavioral testing – simulate the behavior of a real-time system and examine its behavior as a consequence of external events
- Inter-task testing – Asynchronous tasks that are known to communicate with one another are tested with different data rates and processing load to determine if inter-task synchronization errors
- System testing – Software and hardware are integrated, and a full range of system tests are conducted in an attempt to uncover errors at the software-hardware interface
OO Testing: three things to be done
- the definition of testing must be broadened to include error discovery techniques applied to object-oriented analysis and design models
- the strategy for unit and integration testing must change significantly
- the design of test cases must account for the unique characteristics of OO software.
he definition of testing must be broadened to include error discovery techniques applied to object-oriented analysis and design models
True
If the model accurately reflects the real world (to a level of detail that is appropriate to the stage of development at which the model is reviewed) then it is semantically correct.
True
Class testing for OO software is the equivalent of unit testing for conventional software.
True
class testing for OO software is driven by the operations encapsulated by the class and the state behavior of the class.
True
Because object-oriented software does not have a hierarchical control structure, conventional top-down and bottom-up integration strategies have little meaning.
True
Integration testing –
- Thread-based testing integrates the set of classes required to respond to one input or event for the system
- Use-based testing begins the construction of the system by testing those classes (called independent classes) that use very few (if any) of server classes. After the independent classes are tested, the next layer of classes, called dependent classes
- Cluster testing[McG94] defines a cluster of collaborating classes (determined by examining the CRC and object-relationship model) is exercised by designing test cases that attempt to uncover errors in the collaborations.