Software Testing Strategies Testing is a set of activities that can be planned in advanced and conducted systematically. Testing begins at the module level. Testing conducted by the developer and an independent test group . Testing and debugging are different activities.
Software Testing Strategies Verification and Validation: Verification: Consists of the set of activities that ensures that software correctly implements a specific function . Are we building the product right? Validation: a different set of activities that ensure that the software is traceable to customer requirements . Are we building the right product?
Software Testing Strategies Achieving software quality: QUALITY Formal Technical Reviews Software Engineering Methods Standards and Procedures SCM & SQA Measurements Testing Software engineering methods: Analysis, design and implementation, enhance the quality with uniform techniques and predictable results . Reviews ensure quality at each step. V & V includes reviews, quality and configuration audits, performance monitoring, installation testing etc.
Software Testing Strategies Organizing software testing: To be done by the developers and an independent testing group in tandem. A software testing strategy: Viewed as a spiral. C U D R S I V ST Software engineering Requirements Design Code Unit test Integration test Validation test System Test To develop spiral in to test spiral out
Software Testing Strategies Unit testing: uses white box testing , exercises all paths max error detection. Integration testing: dual problem of verification and program construction. Black box testing methods are used here. Validation testing: that software meets all functional , behavioural and performance requirements . System testing: all elements mesh properly. Overall system function/performance is achieved.
Software Testing Strategies Criteria for completion of testing: Using statistical modelling and software reliability theory, models of software failures uncovered during the testing as a function of execution time can be developed. Logarithmic Poisson execution-time model: f(t) = (1/p) ln[(l o pt+1)] f(t) = cumulative number of failures that are expected to occur once the software has been tested for a execution time = t. l o = initial software failure intensity (failures per unit time) at the beginning of testing p = exponential reduction in failure intensity as errors are uncovered and repairs are made.
Software Testing Strategies Instantaneous failure intensity can be derived as l(t) = l o / (l o pt +1) taking the derivative of f(t). Execution time t Failures per test hour Predicted failure intensity l(t)
Software Testing Strategies Unit testing: Integration testing: Top-down Bottom-up Validation testing: Test Criteria alpha and beta testing System Testing: Recovery Security stress Performance Big Bang , Smoke testing, Sandwich testing Debugging
Software Testing Strategies Scope in this class: Ensuring, Verifying, and Maintaining Software Integrity 1. Software Quality Assurance 2. Software Testing Techniques 3. Software Testing Strategies 4. Software Maintenance 5. Software Configuration Management Reference Book: Roger S. Pressman