This blog is written with an objective to make readers understand about software testing methodologies including testing approach, agile methodology and about the selection of software methodology in software development process. Let us start with software methodology concepts.
What is Software Methodology ?
A software methodology is a separation of software development process into distinct phases or stages which contains activities to decide effective management and planning. It is often considered a subgroup of system development life cycle (SDLC). This includes several activities or practices followed by the software project team to efficiently develop and maintain software application. The software methodology is also known as software development life cycle, system development methodology, software process or
software development process.
Common Software Methodologies :
Below mentioned are some important and common software methodologies which includes :
1. Waterfall Model
2. Prototyping
3. Iterative & Incremental Development
4. Spiral Development
5. Rapid Application Development
6. Agile Methodology
7. Extreme Programming
1. Waterfall Model :
The waterfall model is a software development process in which development progress through sequential downwards phases (just as waterfall). The phases includes :
- Requirements analysis
- Software design
- Implementation
- Testing
- Integration
- Deployment or Installation
- Maintenance
In waterfall model first phase is the requirement phase, during this all the requirements of project are to be defined completely before starting the test. In this phase the testing team deliberate test strategy, scope of testing and plan a detailed test.
Only after the completion of software design the team will move on to next phase of test cases execution to ensure the proper behaviour of software as expected. In waterfall methodology the testing team can proceeds to next phase only after completing the previous phase.
2. Prototyping
Software prototyping, is an another software development process in which the incomplete versions of the software which is being developed are created.
The basic principles of this model are :
3. Iterative & Incremental Development :
In Iterative model, a big software project is divided into smaller parts and each divided part deals with multiple repetitions of the waterfall model. After completing iteration, a new software module is developed. This newly developed module is integrated into software architecture after which entire software is tested. Feedback gained from testing is instantly available and is included in next cycle.
4. Spiral Model:
It is a software development model in which some aspects of waterfall and rapid prototyping models are combined to take advantage of bottom-up and top-down concepts. It provide significance on repetitive risk analysis which is appropriate to large complex software. The main focus in this model is on risk assessment and to minimize project risk.
5. Rapid Application Development (RAD) Model:
This is a software development model, which helps iterative development model and the rapid prototypes development instead of large amounts of direct planning. The planning for developed software using RAD model is helpful to easily write and modify software according to requirements.
The RAD process begins with preliminary data models and the business process model development through structured techniques. In next phase, the project requirements are verified by using prototyping to refine data and the process models. All these phases are repeated several times with technical design and business requirements in collective used for system development.
6. Agile Methodology :
Traditional methodologies of software development works on the criteria that software requirements remains unchanged throughout the compete development process. But due to increase in complexity the changes needs to be performed during development process.
In Agile methodology, a software product is developed in incremental and rapid cycles. This phase also includes continuous interactions with developers, client and customers. This mainly focuses on change reaction rather than comprehensive planning.
Only after the completion of software design the team will move on to next phase of test cases execution to ensure the proper behaviour of software as expected. In waterfall methodology the testing team can proceeds to next phase only after completing the previous phase.
2. Prototyping
Software prototyping, is an another software development process in which the incomplete versions of the software which is being developed are created.
The basic principles of this model are :
- This is not a complete software development methodology, but is a useful practice to handle selected small parts of large software.
- These are the attempts to minimize risk in project by dividing project into small parts and facilitate an easy change during software development process.
- Regular involvement of user is there in development process due to which the probability of the user acceptance of the project increases.
- Small scale models of the software are developed which follows the repetitive modification process until the required target has not achieved.
3. Iterative & Incremental Development :
In Iterative model, a big software project is divided into smaller parts and each divided part deals with multiple repetitions of the waterfall model. After completing iteration, a new software module is developed. This newly developed module is integrated into software architecture after which entire software is tested. Feedback gained from testing is instantly available and is included in next cycle.
4. Spiral Model:
It is a software development model in which some aspects of waterfall and rapid prototyping models are combined to take advantage of bottom-up and top-down concepts. It provide significance on repetitive risk analysis which is appropriate to large complex software. The main focus in this model is on risk assessment and to minimize project risk.
5. Rapid Application Development (RAD) Model:
This is a software development model, which helps iterative development model and the rapid prototypes development instead of large amounts of direct planning. The planning for developed software using RAD model is helpful to easily write and modify software according to requirements.
The RAD process begins with preliminary data models and the business process model development through structured techniques. In next phase, the project requirements are verified by using prototyping to refine data and the process models. All these phases are repeated several times with technical design and business requirements in collective used for system development.
6. Agile Methodology :
Traditional methodologies of software development works on the criteria that software requirements remains unchanged throughout the compete development process. But due to increase in complexity the changes needs to be performed during development process.
In Agile methodology, a software product is developed in incremental and rapid cycles. This phase also includes continuous interactions with developers, client and customers. This mainly focuses on change reaction rather than comprehensive planning.
7. Extreme Programming :
Extreme programming is an another type of agile methodology that believes in short software development cycles. A software is divided into number of simple tasks. Programmers develops code for a small part of software and get back to user for feedback. The points gathered from the user's review have been incorporated in software and then proceeds to next task. In extreme programming where customer requirements are continuously changing, the developers mostly work in pairs.
Extreme programming principles :
The test driven development is followed in extreme programming as mentioned below :
- Test cases addition to the test suite for verifying new functionality, which are not developed yet.
- Executing all the test in which the newly added test case gets failed as the functionality is yet to be developed.
- Create some code for the implementation of new functionality/feature.
- Executing test case again and this time the newly developed test case should pass as the code has been written for new feature.
Which Software Methodology should be selected ?
There are number of different methodologies available for software project development and its testing. Each methodology is developed with specific objective and has relative advantages and dis-advantages.
The software methodology selection depends on factors like client requirement, project schedule, project nature, etc.
From testing point of view, some methodologies concentrates on testing input in early stage of development cycle whereas other wait until the model has been completed.
How software testing methodologies can be implemented ?
The testing methodologies are not structured just for the purpose of software code testing. But in actual the goal of the testing is to satisfy testing methodologies.
- Scheduling: Real scheduling is important to implementing efficient testing methodology and the schedule must meet the requirement of all team members.
- Defined Outputs: To keep all team members on same page, properly defined output has been provided to the team members. The output must contains direct content without uncertainties.
- Test approach: Once completing the scheduling and availability of properly defined output, the testers team should be able to implement the right test. The definition documents and software developer meetings helps testing team to make use of best testing approach for project.
- Reporting: Clear reporting is difficult to achieve, but the reporting step decides the effectiveness of software testing approach which is being utilized.
The details mentioned here are enough to understand software testing methodology in details. If you like this blog then please share your feedback with us so that we can add more details to this topic. Also your valuable feedback will help us write more important and essential things about software development and testing processes.