1.1 What is Software Testing:
The objective of Testing, in small words, is to find the greatest number of possible errors with a manageable amount of effort and time. In the 1970’s software testing began to evolve as a technical discipline after the concepts of software engineering were introduced to the world. The effective functioning of modern systems depends on the ability to produce software in a cost effective way and software testing not only makes the software better but also verifies the customer requirements with the software specification.
1.2 Testing Life Cycle:
Software Testing Life Cycle is basically developed to identify different testing activities need to be performed in different phases of software development. Different models have been proposed for STLC and some of them are discussed below:
The waterfall model provides a systematic approach to software development and the phases of waterfall model is given below:
Requirement Analysis => Planning => Design=> Development => Deployment
The main disadvantage of Water fall model is that any revision or any change in requirement in later phase becomes very costly to be implemented. Apart from that high amount of risk and uncertainty is associated with this model.
Involving software testing in all phases of software development life cycle has become a necessity and the ‘V-Model’ of software testing life cycle indicates various level of testing during different phases of software development. In this model each phase must be completed before the next phase begins. A simple diagram for ‘V-Model’ is given below :
The advantages of using ‘V-Model’ in a project are:
· Simple and easy to implement
· Testing activities like test planning , designing happens well advance in comparison with water fall model
· Early detection of defects make this model cost effective from project perspective
The V-model is also called as Verification and Validation model. Many people use verification and validation interchangeably but both have different meanings. The main differences between Software Verification and Validation are listed below:
· Verification is the process of evaluating a product, service or system whether they meet the specified requirements, regulations or imposed condition. Validation is the process of evaluating a product, service or system to determine whether the product or software meets the customer expectations and requirements.
· Reviews, Meetings and Inspections are the activities involved during Verification. Black Box Testing, White Box Testing etc. are the activities involved for Validation.
· Generally Verification is performed by the Quality Assurance group to make sure whether the developed system or software is working as per the specifications or not. On the other hand Validation is performed by the testing team.
· The cost of fixing errors found during Verification is less in comparison with Validation
Software developed for a complex system is going through a lot of changes over a period of time based on the business requirement changes. Evolutionary models are iterative models which are characterized in a manner that enables someone to develop more complete versions of the software. The Spiral Model is an evolutionary software process model and it is considered as a realistic approach to develop large scale system and software. The spiral model has four phases - Planning, Design, Build and Risk Analysis. A software project repeatedly passes through these phases in iterations (called Spirals in this model).
1.3 Categories of testing
Based on the V-Model shown above testing activities on software can be categorize in two way:
1.3.1 Static Testing
Under static testing code is not executed and testers do this kind of verification before the process of compilation. Static Testing is the manual or automated process of reviewing Requirements, Design and Code to find the errors in early stage of software development. Typically static analysis is performed in a non runtime environment.
1.3.2 Dynamic Testing
Dynamic Testing checks for the functionalities of the developed software. During this testing, testers test the software by executing and comparing the actual and expected results. It will also monitor the overall performance of the system.