L11 - Testing Flashcards
System Testing
Test entire system: Functional Testing (functional requirements) + Structure Testing (subsystem decomposition) + Performance Testing (non-functional requirements) + Acceptance Testing (client expectation)
Error
System in a state where further processing can lead to failure.
Integration Testing
tests all interfaces between subsystems and the interaction + intends to create failures intentionally
Fault Detection
testing + debugging + monitoring
SUT
‘System under Test’: part of the system model
Failure
Deviation of observed behavior from specified behavior.
Unit Testing
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
Fault Tolerance
exception handling + modular redundancy
Types of Integration Testing
Big Bang Integration + Bottom Up + Top Down + Sandwich Testing/BU+TD + Vertical Integration
Dynamic Analysis
Black-Box (tests input/output): does not discover extra use cases & White-Box (tests implementation): cannot detect missing use cases
Mock Object
able to mimic the behavior of real objects (‘record-replay metaphor’: orchestra + choir)
Dummy Object
Object that gets passed around but never actually gets used.
Pros/Cons Top Down Integration
no drivers BUT: stubs needed
Stub
provides same answer always
Fault
Mechanical or algorithmic cause of an error.
Validation
Checks if actual behavior meets the needs of the stakeholders.
Verification
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
Fake Object
working implementation but not suitable for production code (database on hard disk instead of web server)
Static Analysis
hand execution: finds only 5-10% of software quality problems but cheap
Acceptance Testing
Test entire system in target environment (client involved)
Fault Avoidance
reduce complexity + use config management + apply verification
Pros/Cons Sandwich Testing/BU+TD
parallel BUT: no thorough interface test