Learning Resources
 

Destructive testing


Prolonged endurance testing under the most severe operating conditions, continued until the component, equipment, or product specimen fails (is broken or destroyed). The purpose of destructive testing is to determine service life and to detect design weaknesses that may not show up under normal working conditions. See also non destructive testing.

Traditional software testing checks to see if a software product meets specifications. This generally involves testing to see if the software performs all the functions called for in the software requirements specifications (SRS). In contrast, this work-in-progress paper proposes a testing paradigm that does not have this objective. The proposed testing paradigm tests to see if a software product exhibits proper behavior when subject to improper usage or improper input. For lack of a more descriptive name and in compliance with similar testing performed on hardware systems, the new paradigm is called "destructive testing".

Nothing checks the robustness of a software system or application better than destructive testing.
- Destructive testing is basically to determine the robustness of a software system or application.
- In order to determine the robustness of a software system or application, it is subjected to very harsh tests and attempts are made to make the program crash or hang.
- The aim of the destructive testing is to cause the failure of the program.
- The destructive testing has a typical process procedure. The process has the following aspects:

Waterfall development model or CMMI traditional model
- It is always been a common practice of performing software testing on software system by an independent group of software testers after the functionalities of the software system have been fully developed. D
- Destructive testing is carried out before it is delivered to the client or the customer.
- In this kind of practice, the testing stage is also used as a project buffer in order to compensate for project delays.
- But, this results in compromising with the time being consumed for testing.
- In the same model, there is another testing in which the software testing is started simultaneously with the start of the project and it is continued as a regular process until the project is finished.

Extreme development model or Agile model
- The extreme development model and the agile software development model follow the test driven software development model.
- Following this procedure, unit tests are carried out first by the software developers or engineers.
- These unit tests fail initially and this is expected also.
- As the code is written and subjected to these tests, more and more units of the software system pass those unit tests successfully.
- The test cases being used in the testing are updated regularly for the new faults and errors discovered.
- The tests cases thus updated are also made more efficient with the addition of the regression tests developed during the whole process.
- Unit tests are carried out simultaneously with the development and progress of the source code.
- They eventually become an integral part of the build process.
- This model aims at achieving continuous deployment i.e., to say that the software updates can be easily released for the public.

Although there exist some variations between the different models of testing, the testing cycle is typical and same for every kind of model. The following steps are involved in the testing cycle:

- Requirement analysis
- Test planning
- Test development
- Test execution
- Test reporting
- Test result analysis
- Defect retesting
- Regression testing
- Test closure