Testing, in common man terms is termed as the process to identify if a product is fit and ready to use and if it is meeting the requirements of the customer. Say for example a bike or any two wheelers is tested in the factory to check if it is meeting the expectations before launching in the market for sales.
What is Software Testing?
Testing a software is also similar to the one which is discussed above. It is the “Process of testing the software to confirm it is defect free and fit to use”. Also it is done to ensure customer’s requirements are met.
Why do Software Failures or Crash Occurs?
· When the software is used incorrectly by the end user it will result in the malfunction of the software, which results in the failure of the software.
· When there is error in the development process of the software itself then it will have defect and will not work as per the requirements.
· These failures are called as Bugs or Defects or Faults.
Why do we need Testing?
All the softwares are developed to meet the customer requirements or end user’s needs. Let’s assume if some banking software in operation is launched without testing, assume that it fails to operate in a specific mode on a particular day and dissatisfies the customer.
Here the First parameter to be taken into consideration is the Risk involved; in this case it is very high, even unacceptable as banking is one of the critical domains with lot of sensitivity around it.
Next, the failure will result in the loss of reputation for the company and also it will lead to financial loss in terms of fixing the defect and also in terms of operational losses.
In order to avoid all these problems, proper testing to be carried even before the product is put into live use.
Phases in Software testing
Unlike other testing in other products software testing has various phase beginning from the time the software development begins. Software testing is not a single activity it is a process.
The various phases of testing can be roughly given as follows,
Planning - Identifying the basic requirements and outline sketch of the testing to be carried out.
Preparation - Here the various base lines for the testing is defined such as Test design and test cases are derived here.
Evaluation - then the designed test cases are executed and desired outcomes are identified and evaluated
The various testing principles are discussed below,
Testing shows presence of defects
Testing can show that defects are present, but cannot prove that there are no defects. Testing reduces the probability of undiscovered defects remaining in the software but, even if no defects are found, it is not a proof of correctness.
Exhaustive testing is impossible
Testing everything (all combinations of inputs and preconditions) is not feasible except for trivial cases. Instead of exhaustive testing, we use risks and priorities to focus testing efforts.
Testing activities should start as early as possible in the software or system development life cycle and should be focused on defined objectives.
A small number of modules contain most of the defects discovered during pre-release testing or show the most operational failures.
If the same tests are repeated over and over again, eventually the same set of test cases will no longer find any new bugs. To overcome this 'pesticide paradox', the test cases need to be regularly reviewed and revised, and new and different tests need to be written to exercise different parts of the software or system to potentially find more defects.
Testing is context dependent
Testing is done differently in different contexts. For example, safety-critical software is tested differently from an e-commerce site.
Finding and fixing defects does not help if the system built is unusable and does not fulfill the users' needs and expectations.