Testing is not a post-coding activity!!! Planning is essential To reduce testing timescales and time-to-market To achieve early and continuous visibility To choose appropriate techniques at each stage To build testable product To coordinate complementary analysis and testing
SYSC 4101 – Software Validation, Verification and Testing
Partial implementation of a component on which the tested component depends.
Partial implementation of a component that depends on the tested component.
Test stubs and drivers enable components to be isolated from the rest of the system for testing
Summary of Definitions (1) Program Under Test Oracle Verdict (correct/incorrect) Driver executes creates Stub(s) uses Outputs Inputs
Summary of Definitions (2) is caused by * * Test case Failure Error Test suite is caused by * * Correction Component Test stub Test driver exercises is revised by finds repairs * * * * * * 1…n * * Fault
It scales up (different techniques at different granularity levels)
It depends on the specification and the degree of detail
Do not know how much of the system is being tested
What if the system performs some unexpected, undesirable task?
Based on control and data flow coverage criteria
It allows you to be confident about how much of the system is being tested
It does not scale up (mostly applicable at unit and integration testing levels)
It cannot reveal missing functionalities (part of the specification that is not implemented)
Black-box vs. White-box Testing Specification System Implementation Missing functionality: Cannot be revealed by white-box techniques Unexpected functionality: Cannot be revealed by black-box techniques
Unit test Unit test Component code Component code Integration test Tested components Design description Integrated modules Function test System functional specification Functioning system Performance test Other software specification Verified, validated software Acceptance test Customer requirements Accepted system Installation test User environment System in Use Pfleeger, 1998
Differences among Testing Activities Unit Testing Integration Testing System Testing From module specifications From interface specifications From requirements specifications Pezze and Young, 1998 Visibility of code details Visibility of integration structure No visibility of code Complex scaffolding Some scaffolding No drivers/stubs Behavior of single modules Interactions among modules System functionalities