Flashcards in L11 - Testing Deck (26):
Test entire system: Functional Testing (functional requirements) + Structure Testing (subsystem decomposition) + Performance Testing (non-functional requirements) + Acceptance Testing (client expectation)
System in a state where further processing can lead to failure.
tests all interfaces between subsystems and the interaction + intends to create failures intentionally
testing + debugging + monitoring
'System under Test': part of the system model
Deviation of observed behavior from specified behavior.
Test individual units (via Java framework: JUnit) - carried out to confirm correct code and show intended functionality
Object-Oriented Test Modeling
Start with system model (system > SUT) - test model derived from SUT - add objects (test doubles) to test model - doubles are substitutes for the collaborators during testing
A Test Model contains ...
test driver (program that executes test cases) + input data (consists of data needed for test cases) + oracle (compares expected output with actual test output) + test harness (framework that allows to run tests under varying conditions) + test cases
exception handling + modular redundancy
Types of Integration Testing
Big Bang Integration + Bottom Up + Top Down + Sandwich Testing/BU+TD + Vertical Integration
Black-Box (tests input/output): does not discover extra use cases & White-Box (tests implementation): cannot detect missing use cases
able to mimic the behavior of real objects ('record-replay metaphor': orchestra + choir)
Object that gets passed around but never actually gets used.
Pros/Cons Top Down Integration
no drivers BUT: stubs needed
provides same answer always
Mechanical or algorithmic cause of an error.
Checks if actual behavior meets the needs of the stakeholders.
Checks if observed behavior complies with specified behavior.
Pros/Cons Bottom Up Integration
no stubs/useful for OOS/RTS BUT: drivers
Advantages of Vertical Integration
no stubs/drivers - build as early as possible —> always an executable program available
working implementation but not suitable for production code (database on hard disk instead of web server)
hand execution: finds only 5-10% of software quality problems but cheap
Test entire system in target environment (client involved)
reduce complexity + use config management + apply verification