Testing is a systematic exploration of a component or system with the main objective of finding defects and reporting them. If a financial software has miscalculation in one of its features, we call that a function defect which is unacceptable.
Some systems may not have functional defects but still are not acceptable for e.g., a system that is slow or a system which cannot accept 1000 or more users at a specific time, is still not acceptable.
Testing objectives for different processes of software development may differ. For e.g., testing while developing the software is to make sure that the defects are identified and can be fixed.
While delivering the software for acceptance the main objective will be to confirm that the system works as expected and gain confidence that it has met the requirements. In some cases, the main objective of testing is to assess the quality of the software to give information to the stakeholders so that they can make correct decisions. Some testing activity is to prevent bugs from being introduced in the software.
Testing is primarily of two types: Static testing and Dynamic testing. Testing where the code is not exercised is called Static testing. Dynamic testing is the one in which code is executed. In case of Static testing the activities are review of documents, review for requirements, walkthrough of source code. In Dynamic testing we execute automated test scripts. Both static as well as dynamic testing is used to achieve testing objectives.
Software is everywhere and they have become an important part of life. Software systems are context dependent. Software is used in our day-to-day life, on our mobile applications for communications, video calling, social networking etc. Software is used in medical machinery for detection of deadly diseases, as well as for treatment of various diseases. Software is used for cars, airplanes and their safety. Software is used in various transportation conveyances. It is used in entertainment as well to edit videos, make films etc. In today’s digital world we have various digital payment gateways, net banking, UPI payment options etc. Right from day-to-day affairs to research missiles and nuclear weapons everywhere we have software.
Software which does not work as expected behavior or even has minor issues can cause huge problems and frustration. If any product does not meet the software industry standards, then it can cause huge business reputation and financial loss. A critical software that is faulty might even cause death or serious injuries. A faulty calculation software can cause financial problems in banking or stock markets.
Primary reason for defects in software is that they are created by humans, and they make mistakes which can introduce defects. About 20% of the defects are introduced in the requirements phase, and about 25% in the design phase. The remaining 55% are introduced during the implementation phase as per reports. The extent to which defects are removed in the phase of introduction is called phase containment. Phase containment plays a critical role in understanding the importance of finding and resolving the defects in the software. As the cost to resolve defects increases in a multiplicative fashion each time the defect escapes the testing cycle.
There can be many reason why errors are introduced in the software system, some of them are as follows: –
What is exhaustive testing (complete testing)? This is a testing approach wherein test cases consist of all the combinations of input and output values. This fundamentally depends on the risk involved due to the defects in the system, safety measures taken during the implementation of the system and most importantly the project constraints such as time required, cost involved (budget of the project). Here we need to understand that we cannot test every possible input or outcome possible, this is ideally impossible. So, under these circumstances we need to prioritise based on the most important and highly vulnerable feature of the system. One can define test coverage for the system under test by multiple ways. Mentioned below are some of the ways in which the coverage of the system can be considered. Coverage of requirement, coverage of code structure, coverage of risk (risk can be considered for technical, safety and business aspects).
Written by, oprimes tester – Devyani Vyas