SE 463 Software Testing and Quality Assurance: Chapter 2: Testing Throughout The SW Life Cycle
SE 463 Software Testing and Quality Assurance: Chapter 2: Testing Throughout The SW Life Cycle
• It will define the what, where, & when of our planned testing, influence
regression testing, & largely determine which test techniques to use.
• The way testing is organized must fit the development life cycle or it will fail
to deliver its benefit.
• If time to market is the key driver, then the testing must be fast & efficient.
• The waterfall model has a natural timeline where tasks are executed in a
sequential fashion.
• In this model testing tends to happen towards the end of the project life cycle.
• The V-model was developed to address some of the problems experienced using the
traditional waterfall approach.
• Defects were being found too late in the life cycle, as testing wasn't involved until the end
of the project.
• The V-model provides guidance that testing needs to begin as early as possible in the life
cycle, which is 1 of the fundamental principles of structured testing.
• The V-model is a model that illustrates how testing activities (verification & validation)
can be integrated into each phase of the life cycle.
• In V-model, validation testing takes place especially during the early stages, e.g., reviewing
the user requirements, & late in the life cycle, e.g., during user acceptance testing.
2.1 SDLC Models, cont.
2.1.1 Sequential
development models
(V-model)
2.1 SDLC Models, cont.
2.1.1 Sequential development models (V-model)
o Integration testing: occurs between unit & system testing to test functionally grouped components.
• Tests interfaces between components, interactions to different parts of a system such as an operating system, file system &
hardware or interfaces between systems.
o User acceptance testing is an independent test performed by end users prior to accepting the delivered system.
• Validation testing with respect to user needs, requirements, & business processes conducted to determine whether or not
to accept the system.
• After performing a test, the users sign off if it was successful.
2.3 Test types:
The Targets of Testing
• A test type is focused on a particular test objective, which could test:
o A function to be performed by the component or system.
o A non-functional quality characteristic, such as reliability or usability.
o The structure or architecture of the component or system.
o Or related to changes, i.e., confirming that defects have been fixed
(confirmation testing, or re-testing) & looking for unintended changes
(regression testing).
Maintainability
• Analyzability
• changeability
• Stability
• Testability
Portability
• Adaptability
• Installability
• co-existence
• Replaceability
2.3 Test types:
The Targets of Testing, cont.
• When a test fails & the defect fixed, we will need to execute the test again
to confirm that the defect has indeed been fixed.
• When doing confirmation testing, it is important to ensure that the test is
executed in exactly the same way as it was the first time, using the same
inputs, data & environment.
• If the test now passes, we know that 1 part of the SW is correct - where
the defect was. But this isn't enough.
• The fix may have introduced or uncovered a different defect elsewhere in
the SW.
• The way to detect these 'unexpected side-effects' of fixes is to do
regression testing.
2.3 Test types:
The Targets of Testing, cont.
b: Regression testing
• The purpose of regression testing is to verify that modifications in the SW or the
environment haven't caused unintended adverse side effects & that the system still meets
its requirements.
• It is common for organizations to have what is usually called a regression test suite or
regression test pack. ( at every level of testing: component, integration .. etc.).
• A regression test suite would be executed every time a new version of SW is produced &
this makes them ideal candidates for automation.
• If the regression test suite is very large, select a subset for execution.
• Regression tests are executed whenever the SW changes, either as a result of fixes or new
or changed functionality.
• A good idea is to execute them when some aspect of the environment changes
• e.g., when a new version of a database management system is introduced,
• or a new version of a source code compiler is used.
2.4 Maintenance testing (cont.)
Triggers for maintenance testing
• Maintenance testing is done on an existing operational system.
• It is triggered by:
o Modifications. (planned or ad hoc)
o Migration. (e.g., from 1 platform to another)
o Retirement of the system.3
• There is no point in trying to save & preserve some thing that you can no
longer access.