People feel that Software testing is child's play but actually it is not.It is sum of total all processes, which verifies each and every functionality and correctness of the software by following several methods .Software testing not only checks it's reliability and also checks whether the application is running as per the expectations or not.Mainly Software testing is also done based on risk approach. When there is less time and there are more features to be tested ,risk based approach is used.Software Testing has seven important principles .
- Exhaustive testing is impossible
- Testing shows the presence of Defects
- Defect Clustering
- Pesticide Paradox
- Early testing avoids the Faults multiplication
- Testing is Context Dependent
- Absence in Error Fallacy
Exhaustive Testing is Impossible :
What is exhaustive testing ? If a testing process covers/exercises all the combinations of inputs or preconditions of a given application/ software , then that type testing is known as exhaustive testing . It takes impractical amount of time .Testing every aspect is may not be feasible at all the time .Some times the testers would be given very less time and at such apex moments they mainly concentrate on risk prioritized test inputs and on the business critical areas during testing . So exhaustive testing is quite impossible .
Testing shows the presence of the Defects :
Testing can show that defects are present but it cannot prove that there are no defects . Diseases are there that's the reason doctor's survive ,so we cannot say that doctor's are there that's the reason diseases exist , the second statement doesn't make any sense here. The same scenario happens with the testing too.Testing helps in reducing the probability of undiscovered defects remaining in the software. But if defects are not found also , it is not a proof of complete correctness of the software . So the testing just show that defects are present .
Defect Clustering simply says that small modules and units in a software contains more number of defects . In most cases these defects are identified during the pre-release of the testing or show most of the operational failures .
Pesticide Paradox:
Some tests repeated over and again is nothing but pesticide paradox .Test Cases has to be reviewed and revised regularly according to the changes in the application functionality and new test cases should be written in addition , to exercise different parts of the software or system which will potentially find more defects . Otherwise testing the application with some set of the test cases over a period of time,irrespective of the changes to the application will reduce the test effectiveness.
Early Testing avoids Fault Multiplication:
Testing activity has to be introduced as early as possible in the software development life cycle because defects which are found in the earlier stages are cheaper to fix .For example if there is a requirement missed in a Business requirement specification ,If it is identified during this stage then it can be easily modified or fixed . But if it is not identified in the requirement gathering stage and if this defect is neglected it will effect the complete software in the later stages which effects the business economically a lot . So testing has to be implemented as early as possible in SDLC
Testing is Context dependent :
Testing every application is a unique process. We cannot apply the same strategy/approaches for all the applications .Every module in an application has different test approaches to be followed .So Testing is completely dependent on the context . For example Safety Critical Software is tested from an E-commerce site .
Absence of Error Fallacy:
Finding errors in an application which is not used is useless task actually. For example all the applications in an android mobile may not be used by every user . When that application is unusable and doesn't fulfill the need of the customer , Then that application is useless even though it is defect free .
Hello Yashaswi,
ReplyDeleteThe Article on Software Testing Principles is amazing give detail information about it thanks for sharing the information about it. mobile application testing
Thanks for sharing this informative post software testing principles. Penetration testers for short, perform simulated cyberattacks on a company's computer systems and networks. Checkout the detailed information about Penetration testing services and how it helps your business.
ReplyDelete